Non costa quasi nulla utilizzare la cronologia di commit gestita dal sistema di controllo della versione. Tuttavia, durante un grande progetto di refactoring (o riorganizzazione / pulizia), le funzioni, le classi e persino gli spazi dei nomi verranno spostati; a volte diversi file vengono uniti e altri file vengono suddivisi. Queste modifiche spesso portano alla perdita della cronologia di commit originale di alcuni file.
Secondo la mia opinione personale, il mantenimento dell'organizzazione del progetto è più importante del mantenimento della cronologia del codice sorgente. Una buona organizzazione del progetto consente di aggiungere continuamente nuove funzionalità con ragionevole sforzo, mentre il valore della cronologia del codice sorgente sembra essere discutibile.
Inoltre, con l'uso del test unitario, i problemi di regressione vengono rapidamente identificati. Finché l'ultima versione continua a soddisfare tutti i requisiti software, dobbiamo effettivamente preservare la cronologia del codice sorgente?
Comprendo che qualsiasi codice sorgente spedito deve essere conservato a causa della necessità di fornire supporto ai clienti senza richiedere loro di eseguire un aggiornamento della versione principale. Ma a parte questo, c'è qualche valore nel mantenere la cronologia dei commit del codice sorgente?
La cronologia del commit del codice sorgente ha un ruolo nelle comunicazioni tra i membri del team? Che cosa succede se aboliamo la cronologia di commit, ma invece facciamo affidamento su "codice sorgente" + "codice di test unitario" per la comunicazione?
L'esistenza della cronologia del commit rende compiaciuti della documentazione a lungo termine di informazioni importanti sul progetto, come i principali cambiamenti di progettazione / requisiti e i flussi di pensiero che hanno guidato tali cambiamenti?
These changes often lead to the loss of the original commit history of a few files.
Dai un'occhiata ad esempio a "git blame": nulla si perde. A volte può essere un po 'più difficile da trovare, ma è sempre lì.