Quando deve essere cancellata la cronologia VCS di un progetto? [duplicare]

26

Ho appena rifattorato l'intera base di codice del mio progetto. Tanto che anche se utilizza la maggior parte della stessa base di codice, le cose funzionano in un modo radicalmente diverso. Se la vecchia versione era 1.0, quella nuova sarebbe 2.0. Il progetto stesso è di poco meno di 1mb di dimensione (è una piccola piccola lib). Ho iniziato il progetto molto tempo fa e ho subito molte modifiche ... così tante che la mia cartella git ha ora più di 3mb di dimensione.

In questo caso 3mb è una quantità molto piccola di dati, ma da una prospettiva di "grande immagine", quando dovresti tagliare la cronologia VCS precedente dal tuo progetto attuale e ricominciare da capo? O dovresti mai e poi mai fare questo?

    
posta Pris 07.01.2013 - 14:23
fonte

4 risposte

46

Lo spazio di archiviazione è economico, mantienilo.

A volte devi controllare se qualche bug era presente nella versione pre-refactor o fare riferimento a qualche vecchio pezzo di codice.

Se sei veramente preoccupato della percentuale di checkout di git , allora puoi andare ed eliminare la cronologia, ma ti suggerirei di iniziare un nuovo repository in questo caso e lasciare il refactor commit in quello vecchio, in modo che quando ne hai davvero bisogno, quindi puoi collegarli facilmente.

Una nota specifica di git : se non vuoi la cronologia per il checkout corrente (perché vuoi semplicemente compilare il progetto o creare patch per il problema corrente) puoi usare --depth=1 , poi git vinto ' t clonare qualsiasi storia. Seconda cosa: puoi creare un ramo --orphan che non condividerà alcuna storia con altri rami in repository, puoi quindi clonare solo questo ramo e la sua cronologia omettendo tutti gli altri oggetti nel repository remoto di git.

    
risposta data 07.01.2013 - 14:59
fonte
19

La mia "regola empirica" sulla durata della cronologia delle versioni in qualsiasi tipo di VCS: mantenere attiva la cronologia delle versioni finché è necessario mantenere quel software specifico.

Per esempio, sto lavorando qui con un prodotto che è più vecchio di 10 anni e mantenuto ed evoluto costantemente. Il nostro repository di subversion per quel prodotto ha circa 500 MB, ma in realtà si tratta di "peanuts". Avere il registro completo disponibile per tutta la durata del prodotto è stato spesso molto utile per capire le cose accadute qualche tempo fa in passato.

    
risposta data 07.01.2013 - 14:44
fonte
2

Suggerirei di conservare l'intera cronologia dei commit git in quanto aiutano a tenere registri e mantenere la cronologia delle modifiche maggiori e minori. Ma vorrei suggerire di bifrare il codice in un altro repository una volta rilasciato l'aggiornamento principale, aggiungendo solo aggiornamenti minori o correzioni di bug alle versioni precedenti e concentrandomi maggiormente sulla nuova versione principale.

Ciò aiuta a mantenere una buona struttura di sviluppo e aiuta anche a ridimensionare la velocità di crescita del repository. Questa è la principale struttura di gestione delle revisioni, seguita da molti progetti open source.

    
risposta data 07.01.2013 - 14:50
fonte
1

Sono un tipo Mercurial, uso anche un piccolo idiota.

Posso dirti che in modifica / rimozione di Mercurial è scoraggiato, ma non impossibile. Tutti vivono tranquilli con questo modo di fare le cose e penso che sia un modo migliore per andare. Perché modificare la cronologia a meno che non si rovini?

Git ti consente di modificare la cronologia, ma ciò non significa che dovresti. Questo crea problemi alle persone, da ciò non deriva nulla di buono tranne una cronologia più ordinata, ma non dovresti preoccuparti se tieni i tuoi impegni rivedibili. La mia percezione è che con Git, le persone possono diventare OCD con il potere di modifica della cronologia.

Se devi assolutamente, modificare la storia mai e poi mai e poi mai dopo , rendi le persone pazze .

    
risposta data 08.01.2013 - 05:55
fonte

Leggi altre domande sui tag