Posso eliminare un commit in Subversion?
-
28-10-2019 - |
Domanda
Per incidente ho commesso due volte perché ho dimenticato di aggiungere due file.Posso rimuovere un commit specifico dal registro?
Voglio eliminare il commit № 4.
Soluzione
La semplice risposta è "no", perché Subversion non sa come risolvere il caso quando aggiungi un commit, qualcun altro aggiorna il proprio checkout e poi rimuovi il commit dalla cronologia.Potrebbe esserci o meno una risposta complessa che coinvolge un intervento chirurgico sulla memoria di Subversion.
Altri suggerimenti
- AFAICS, hai non eliminato r4, ma unisci con r5, sì?
- In generale, la cronologia dei commit SVN è immutabile, come ha detto Sii - e se tu non hai i diritti cancella / crea repository - non puoi fare nulla.
Se puoi eliminare il repository corrente e crearne uno nuovo con una nuova cronologia, puoi provare:
-
svnadmin dump
per essere leggibile dall'uomo (a malapena, devo dire) repository-dump, formato grok e modifica dump, elimina repo,svnadmin load
per ricreare il repository - un'altra idea è (invece di modificare il dump) un'altra SCM, che ha un bridge a SVN (hg + MQ (histedit) + hg-git, ad esempio, consentono di ottenere repo e piegare / eliminare i changeset).Per la sostituzione vecchio repository - vedere p.2 sopra
Nel tuo caso, è solo necessario modificare il commento del commit associato al commit n. 4 per riflettere le modifiche effettive apportate.Puoi farlo con Subversion modificando la configurazione del repository SVN.Consulta le Domande frequenti su Subversion .
Perché?Lascia che Subversion conservi la cronologia: ecco a cosa serve.Effettua il check-in presto e spesso.Non è necessario cancellare il commit n. 4.