Eu sei que o Git é ótimo para projetos de código aberto. Mas eu estava pensando: para uma empresa com 20 programadores trabalhando em um projeto de 1 ano, qual sistema de controle de origem é desejável? Pelo que ouvi, Git usa puxar; não seria menos do que desejável precisar passar por outra pessoa para obter suas alterações no porta-malas principal? Especialmente quando todo mundo está trabalhando ao mesmo tempo?
Isso é apenas um exemplo que eu estava pensando. Eu sei como usar o SVN, mas mesmo no meu último trabalho, não o usamos em nossos projetos, pois tudo foi feito em PHP e esses eram normalmente projetos independentes de 1 semana. Eu só tinha SVN para o meu código local e não precisava usá-lo com outras pessoas.
Então, o que são bons controles de origem e, especificamente, por que é bom para isso?
fonte
Respostas:
Use o que sua equipe se sentir confortável. Todos os sistemas de controle de versão fazem aproximadamente a mesma coisa de maneiras semelhantes; não há razão para reinventar a roda porque "pode funcionar melhor". Se sua equipe não estiver confortável com nada, escolha a opção que tem a integração mais fácil com o IDE padrão da sua equipe.
fonte
Mercurial é excelente, distribuído e gratuito.
fonte
Eu acho que depende de qual nível de suporte você precisa.
Uso o git em casa para meus projetos divertidos quando tenho um problema que me custa tempo, mas posso gastar o tempo aprendendo o que preciso para corrigi-lo.
No trabalho, usamos o Perforce porque é essencial ter suporte técnico 24/7. Temos pessoas trabalhando no código em Nova York, Alemanha, Irlanda e Japão o tempo todo. Se houver algum problema, precisamos obter uma resposta o mais rápido possível. Na minha experiência, as pessoas da Perforce realmente sabem o que estão fazendo e são receptivas a sugestões.
fonte
Embora eu ache que essa pergunta seja ampla e deva ser abordada por empresa, com base na estrutura de TI e nas estruturas de rede / desenvolvimento, acho que o aspecto mais importante da escolha do controle de origem / versão não é qual aplicativo você usa, mas se o seu uso é praticamente estruturado e aplicado.
Estrutura e aplicação do uso são os aspectos mais importantes do controle de versão.
Planeje com antecedência e leve todos a bordo. Impor uso. Não apenas com programadores, mas com tudo relacionado a projetos (documentos, imagens, etc.).
O SVN é um ótimo aplicativo e pode ser integrado a muitos complementos (incluindo rastreamento de bugs / tarefas), não precisa de um servidor separado e é gratuito!
Também existem outras aplicações de controle de fontes boas, como @EricBoersma disse:
Basta ter processos e práticas recomendadas e comprar daqueles que podem aplicá-lo.
fonte
Você tem alguns grandes equívocos sobre como o git funciona. Enviar uma solicitação pull a um gatekeeper é apenas uma maneira de fazê-lo. Existem muitas outras maneiras de configurá-lo, incluindo exatamente como o svn, que é exatamente quantas pessoas começam antes de se sentirem confortáveis o suficiente para personalizar. Com um DVCS como o git, você tem opções suficientes para estruturar seu controle de origem em torno do fluxo de trabalho, e não o contrário.
fonte
Eu costumava ver que o controle de origem era apenas uma ferramenta e que cada um dos produtos fazia mais ou menos a mesma coisa. E então o ponto desses sistemas distribuídos de controle de versão clicou comigo.
O controle de versão distribuído permite que você tenha mais de um repositório central. Imagine alterações de código migrando do repositório local do desenvolvedor, para o repositório de recursos, para o repositório do produto, para o repositório de QA e, finalmente, para o repositório liberado.
Pessoalmente, uso um produto comercial chamado Kiln, baseado em Hg, mas o principal recurso é o controle de versão distribuído . Ele revoluciona o fluxo de novo código do desenvolvedor para um produto lançado.
fonte
Você sabe como usar o SVN e, em seguida, use o SVN - migre apenas para um DVCS se houver algo necessário.
O que é realmente importante é que você use algo que você gosta de usar, que seja fácil de usar. Martin Fowler fez uma pesquisa rápida e simples sobre VCSs, os resultados são muito interessantes.
fonte
Eu configurei o git no meu último trabalho, onde estávamos trabalhando em um projeto de tamanho semelhante (15 desenvolvedores, projeto de 18 meses) e funcionou bem.
A maneira como configuramos foi:
Tínhamos um servidor git que era nosso servidor git autorizado e centralizado. Os membros da equipe foram desencorajados a se afastarem um do outro diretamente, para que todas as alterações fossem feitas no servidor central.
Usamos o ramo principal como o principal ramo de produção, com tags para cada versão. Cada módulo no projeto era um submódulo git. Cada submódulo tinha ramificações para cada membro da equipe. Um mantenedor (geralmente o autor original) foi designado para cada submódulo e eles foram responsáveis por lidar com solicitações pull de outros membros da equipe e por emitir solicitações pull ao líder da equipe que atualizaria o submódulo na ramificação principal quando estivesse pronto para ser integrado ao ramo de produção. Usamos tags para identificar confirmações que concluíram um recurso específico ou que correspondiam a uma liberação.
fonte
Eu daria uma boa olhada no Team Foundation System (TFS) da Microsoft. Entendo pelos seus comentários que você não é uma loja da Microsoft. No entanto, meu entendimento é que existe um plug-in Eclipse bastante robusto se você usar esse IDE para desenvolvimento.
Os mecanismos de mesclagem e ramificação funcionam tão bem quanto qualquer outro sistema de controle de origem (melhor que o svn, na minha experiência, e quase o mesmo que forçosamente), mas o que realmente brilha são os aspectos de rastreamento e gerenciamento de projetos do produto, e a automação integrada para compilações e implantações.
Se você estiver escrevendo um aplicativo baseado na Web, dê uma olhada na estrutura de teste de UI automatizada e na estrutura de teste de carga que você pode criar e configurar em pouco tempo. Um recurso elegante: simulação de navegadores móveis integrados ao teste de carga.
fonte