Não concordo com essa regra e concordo com o que Mason Wheeler disse. Eu gostaria de adicionar algumas idéias.
Eu tento confirmar cada vez que tenho uma alteração significativa a ser confirmada: isso pode ser várias vezes ao dia se eu corrigir vários bugs pequenos ou uma vez por semana se estiver trabalhando em um software maior que não pode ser usado pelo restante da atualização. o código de qualquer maneira significativa até atingir um estado consistente.
Além disso, interpreto o comprometimento como publicação de uma revisão significativa que contribui com novas funcionalidades para a base de código. Acho que se deve tentar limpar o código antes de se comprometer, para que outros desenvolvedores possam entender o significado e o objetivo da mudança quando analisarem o histórico de revisões. Quanto menos alterações os outros desenvolvedores veem na história, melhor: quando eu olhar para o histórico de revisões, quero ver incrementos que adicionam alguma funcionalidade significativa; Não estou interessado em todas as pequenas ideias que cada desenvolvedor teve e queria experimentar antes de chegar à solução.
Além disso, não acho que seja uma boa ideia usar o servidor SVN (ou qualquer outro sistema de controle de versão) como um recurso de backup no qual o instantâneo atual do código está comprometido (desde que seja compilado): você pode usar um pendrive ou uma unidade USB externa ou um disco de rede para espelhar seu código atual, para que não se perca se o computador quebrar. Controle de revisão e backup de dados são duas coisas diferentes. Publicar uma revisão não é o mesmo que salvar um instantâneo
do seu código.
Finalmente, acho que não deve ser um problema comprometer-se de vez em quando (ou seja, apenas quando alguém estiver realmente satisfeito com o estado atual do código) e evitar conflitos de mesclagem não é uma boa justificativa para cometer (com muita freqüência). Muitos conflitos de mesclagem acontecem quando pessoas diferentes trabalham nos mesmos arquivos ao mesmo tempo, o que é uma má prática (veja, por exemplo, este artigo , ponto 7). Os conflitos de mesclagem devem ser reduzidos dividindo um projeto em módulos com interfaces claras e o menor número possível de dependências, e coordenando o trabalho dos desenvolvedores para que o código no qual eles trabalham se sobreponha o mínimo possível.
Apenas meus 2 centavos.
EDITAR
Outro motivo contra comprometimentos prematuros que me veio à cabeça é que uma versão (muito) de buggy não pode ser testada. Se você está comprometendo o tronco e sua equipe de teste está testando todos os dias, eles podem não ter uma versão testável por algumas horas (ou por um dia). Mesmo se você não tentar corrigir o bug e apenas reverter suas alterações, uma reconstrução poderá demorar algumas horas. Com, digamos, cinco testadores trabalhando em sua equipe, você perdeu 5 x 2 = 10 horas do tempo da equipe devido à inatividade. Isso aconteceu comigo uma vez, então eu realmente tento evitar confirmações prematuras em nome da confirmação o mais rápido possível .