Não custa quase nada usar o histórico de consolidação mantido pelo sistema de controle de versão. No entanto, durante um grande projeto de refatoração (ou reorganização / limpeza), funções, classes e até espaços para nome serão movidos; às vezes, vários arquivos serão mesclados e outros serão divididos. Essas alterações geralmente levam à perda do histórico de consolidação original de alguns arquivos.
Na minha opinião pessoal, a manutenção da organização do projeto é mais importante do que manter o histórico do código fonte. Uma boa organização do projeto permite que novos recursos sejam adicionados continuamente com um esforço razoável, enquanto o valor do histórico do código fonte parece duvidoso.
Além disso, com o uso de testes de unidade, os problemas de regressão são rapidamente identificados. Enquanto a versão mais recente continuar atendendo a todos os requisitos de software, precisamos preservar o histórico do código-fonte?
Entendo que qualquer código fonte enviado deve ser preservado devido à necessidade de fornecer suporte aos clientes sem exigir que eles executem uma atualização de versão principal. Mas, além disso, há algum valor em manter o histórico do código-fonte confirmado?
O histórico de confirmação do código-fonte desempenha algum papel na comunicação entre os membros da equipe? E se abolirmos o histórico de consolidação, mas confiarmos no "código fonte" + "código de teste de unidade" para comunicação?
A existência do histórico de confirmação torna complacente a documentação de longo prazo de informações importantes sobre o projeto, como as principais mudanças de design / requisito e as correntes de pensamento que conduziram essas mudanças?
These changes often lead to the loss of the original commit history of a few files.
Dê uma olhada, por exemplo, em "culpa culposa" - nada se perde. Às vezes pode ser um pouco mais difícil de encontrar, mas está sempre lá.