Consulte /software/109817/superior-refusing-to-use-subversion
Minha pergunta é semelhante, mas aqui estão as principais diferenças no meu cenário:
Estamos iniciando um novo projeto do zero, usando PHP e tecnologia da web. Não haveria tempo de inatividade no desenvolvimento, como o adotaríamos desde o início, se eu puder.
Minha equipe de desenvolvimento consiste em mim e meu chefe. Nós somos o departamento de "TI" de uma empresa relativamente pequena.
O aplicativo da Web substituirá um aplicativo herdado por absolutamente nenhum controle de origem. Devido a variações nos requisitos legais geográficos, foi tomada a decisão (antes da minha contratação) de dividir o aplicativo em 7 diretórios completamente separados para cada versão. Desenvolvedores diferentes fizeram coisas diferentes em lugares diferentes e em momentos diferentes depois disso. Corrigir alterações entre eles, bem, acho que poderia ser melhor, acho que é por isso que estou postando.
A proposta do meu chefe, colada diretamente a partir de um email:
As atualizações devem ser enviadas como pacotes na pasta SUBMISSIONS. O pacote deve conter todos os arquivos relevantes, bem como um arquivo 'UPDATE.NFO' que contém uma descrição da atualização, uma lista de todos os novos arquivos incluídos (com descrições) e uma lista de todos os arquivos modificados com detalhes de modificação.
Os pacotes de atualização devem se concentrar em um elemento individual e não se desviar da finalidade pretendida. O código deve ser projetado para ser modular e reutilizável sempre que possível.
Todos os pacotes enviados devem ser instalados no ambiente de teste de cada desenvolvedor logo após o envio. Cada desenvolvedor deve revisar a nova adição e expressar quaisquer preocupações sobre sua instalação no ambiente de produção. Uma atualização de pacote padrão deve ser realizada por no mínimo 3 dias úteis para esse processo de revisão antes de ser carregada no ambiente de produção. Atualizações / correções de alta prioridade podem ignorar esse requisito.
A razão pela qual o controle da fonte foi inventado é tornar tudo automático, certo? Sugeri subversão, porque era isso que eu usava na faculdade. Boss não gosta de subversão porque "Isso faz uma bagunça no código" (isto é, usa magia binária e não é claramente legível). Tentamos uma vez, mas acho que tentar usá-lo no Windows cometeu erros estranhos em maiúsculas / minúsculas e não conseguimos verificar nossos arquivos. Não sei se é apenas subversão ou todos os produtos de controle de origem que são questionáveis.
Então, que tipo de argumento devo fazer com meu chefe? Ou ele está certo, e pode haver o risco de perder todo o nosso trabalho de algum bug estranho?
Ou estou completamente errado? O controle de origem é realmente necessário na minha situação? Este é o nosso principal software crítico para os negócios, pelo que acabará sendo enorme, sem dúvida. Mas há apenas 2 desenvolvedores (agora).
Além disso, se eu não posso convencê-lo, haveria algum sentido em usá-lo apenas para mim? Estou falando como alguém com experiência muito limitada, na verdade, usando svn; tudo o que eu realmente sei é checkout e commit. Quais são os recursos do controle de origem (podem incluir outros produtos além do svn) que ajudariam no meu esforço de desenvolvimento individual?
Por favor, não "consiga outro emprego" comentários. Isso não é útil para o debate.
fonte
I, on the other hand, think that the OP is being silly in trying to specify the bounds on the answer....
Bem, o limite específico não é nada tolo. Os conselhos de carreira estão fora de tópico e, embora uma resposta que responda à pergunta e ofereça conselhos de carreira seja perfeitamente adequada para mim, não acho que seja tolice para a OP especificar que ele não se importa com conselhos de carreira.Respostas:
Não pergunte a ele. Não conte a ele. Mostre a ele.
Instale svn, ou git, ou o que você quiser em alguma máquina extra. Pratique você mesmo até se sentir confortável não apenas usando, mas explicando. Se você quiser deixá-lo confortável com seu novo sistema, precisará estar mais do que confortável com ele. Você precisará ajudá-lo a se recuperar facilmente quando ele estragar uma mesclagem ou verificar algo no lugar errado.
Quando estiver pronto, mostre a ele exatamente do que está falando. Mostre a ele que isso não "bagunça" nada. Saliente que ele não apenas permite recuperar qualquer versão anterior do seu código com facilidade, mas também permite saber exatamente o que mudou entre as duas versões.
Saliente que, se alguma coisa acontecer com o servidor (bug grave, vírus, hacker, falha no disco ...), os dois parecerão heros se puder reconstruir instantaneamente a versão necessária. Saliente, também, que você parecerá duas vezes melhor se conseguir produzir qualquer versão sob demanda. Pesquise seu email antigo e compile uma lista de problemas que você teve no ano passado que você poderia ter evitado com o controle de versão.
Dê a ele uma folha de dicas que facilitará o uso do seu sistema de controle de versão.
Finalmente, sugira algumas opções, mas deixe a decisão para ele . Você deve configurar seu próprio servidor ou usar um dos muitos serviços hospedados ? Você deve usar svn, git ou algo mais? Você deve migrar todos os sete projetos para o sistema ou experimentá-lo com um ou dois primeiro?
fonte
search your old e-mail and compile a list of problems you've had over the past year that you could have avoided with version control.
Os benefícios do controle de origem vão muito além de permitir que vários desenvolvedores trabalhem em um único pedaço de código. Eric Sink, o fundador do SourceGear , lista alguns motivos convincentes para usar o controle de origem como um desenvolvedor exclusivo :
Eric também tem um bom tutorial de controle de fonte para iniciantes . Há um tutorial on-line gratuito do Mercurial disponível por Joel Spolsky, o Mercurial é um sistema de controle de versão distribuído popular.
Como próximo passo, sugiro que você comece a usar o controle de origem localmente em sua máquina, como um desenvolvedor exclusivo. Muito em breve, seu chefe perceberá que você é capaz de pura magia, como em questão de minutos, se não segundos, até que ponto um bug super-crítico ocorre e você diria a ele exatamente quais contas de clientes foram afetadas e precisam ser corrigidas antes de tudo o inferno se abre. Ou ser capaz de desfazer quaisquer alterações que o CEO desaprova de maneira super rápida.
E, finalmente, antes de tentar convencer seu chefe, você pode se aprofundar no tópico sobre tratamento de objeções . São 101 de vendas.
Se malsucedido - siga em frente o mais rápido possível, não há muito sentido em perder seu tempo inclinando-se nos moinhos de vento.
fonte
Sim, o uso do controle de origem, mesmo que seja apenas para você, vale totalmente a pena. O Git, por exemplo, funciona muito bem para um desenvolvedor autônomo e permite que você faça coisas como ramificação e mesclagem (com o menor custo possível) e versão das alterações à medida que avança.
O SVN - ou qualquer sistema de controle de versão, na verdade - também permite que você faça isso, mas a fusão é um pouco mais problemática.
fonte
git init
o segundo em que você começa a trabalhar em algo..gitignore
um repositório Git é basicamente inútil. Essa é a única coisa que você precisa ter em lugar além degit init
Sim. Há benefícios em usá-lo apenas para você. Você obtém o histórico de alterações para poder ver o que é diferente.
Não. Não há benefício, porque seu chefe condenou seu projeto a um monte de retrabalhos inúteis porque eles estragaram tudo.
fonte
Eu recomendo, como mencionado antes do uso do git, a razão nº 1 porque qualquer VCS é uma rede de segurança em caso de desastre. Procure o adesivo "Em caso de incêndio: git commit, git push, deixe o prédio". O código pode ser armazenado em outro lugar, mas não em um laptop que possa quebrar, ser roubado ou qualquer outra coisa ... até mesmo um servidor de rede local não é o lugar mais seguro para algo tão valioso quanto o código.
Número 2. Rastreabilidade de alterações, quem fez o que, quando, etc ... Mescla, Desfaz. Número 3. Diferente da ferramenta mágica para o número 2 e muitos outros casos. Número 4. Ramos Número 5. Marcando versões, lançamentos, etc.
Você pode encontrar mais informações sobre um dos fluxos de trabalho mais comuns do git aqui: https://nvie.com/posts/a-successful-git-branching-model/
Eu sei que o uso do git pode ser intimidador no começo, mas é um bom investimento para uma habilidade e um item obrigatório para qualquer equipe de desenvolvimento.
Sobre o seu problema com o caso de texto, evite usar o Tortoise, eu sei que a maioria das pessoas o usa como uma GUI para o git, pois era muito comum para o SVN, portanto, pode ser a primeira escolha, em vez disso, use a linha de comando ou outra GUI como o github desktop ou o SourceTree da Atlasian.
fonte