Fiz as mesmas perguntas quando implementamos o Subversion aqui - cerca de 20 desenvolvedores espalhados por 4 a 6 projetos. Não encontrei nenhuma fonte boa com '' a resposta ''. Aqui estão algumas partes de como nossa resposta se desenvolveu nos últimos 3 anos:
- comprometer-se quantas vezes for útil; nossa regra prática é confirmada sempre que você fizer um trabalho suficiente para que seja um problema precisar refazê-lo se as modificações forem perdidas; às vezes eu cometo a cada 15 minutos mais ou menos, outras vezes pode levar dias (sim, às vezes leva um dia para escrever uma linha de código)
- usamos ramos, como sugeriu uma de suas respostas anteriores, para diferentes caminhos de desenvolvimento; No momento, para um de nossos programas, temos 3 ramos ativos: 1 para o desenvolvimento principal, 1 para o esforço ainda não concluído de paralelizar o programa e 1 para o esforço de revisá-lo para usar arquivos de entrada e saída XML;
- dificilmente usamos tags, embora pensemos que devemos usá-las para identificar lançamentos na produção;
Pense no desenvolvimento prosseguindo por um único caminho. Em algum momento ou estado do desenvolvimento, o marketing decide liberar a primeira versão do produto, para que você plante uma bandeira no caminho rotulado '1' (ou '1.0' ou o que você tem). Em algum outro momento, alguma faísca brilhante decide paralelizar o programa, mas decide que isso levará semanas e que as pessoas querem seguir o caminho principal nesse meio tempo. Então você constrói uma bifurcação no caminho e pessoas diferentes vagam pelos diferentes garfos.
As bandeiras na estrada são chamadas de 'etiquetas' e os garfos na estrada são onde os 'galhos' se dividem. Ocasionalmente, também, os galhos se reúnem.
- colocamos todo o material necessário para criar um executável (ou sistema) no repositório; Isso significa pelo menos código-fonte e arquivo de criação (ou arquivos de projeto para o Visual Studio). Mas quando temos ícones e arquivos de configuração e todas essas outras coisas, isso entra no repositório. Alguma documentação encontra seu caminho no repositório; certamente qualquer documentação, como arquivos de ajuda que possam ser parte integrante do programa, é um local útil para colocar a documentação do desenvolvedor.
Até colocamos executáveis do Windows para nossos lançamentos de produção, para fornecer um local único para quem procura software - nossos lançamentos do Linux vão para um servidor, portanto, não precisam ser armazenados.
- não exigimos que o repositório seja sempre capaz de fornecer uma versão mais recente que construa e execute; alguns projetos funcionam dessa maneira, outros não; a decisão cabe ao gerente do projeto e depende de muitos fatores, mas acho que ela falha ao fazer grandes alterações em um programa.