2013-06-07 15 views
6

Recentemente ho migrato un repository su git da svn. Quando guardo il log, tutti i commit di SVN non sono formattati correttamente nel formato 50/72. C'è un modo per passare attraverso ogni messaggio di commit e modificarlo in modo che sia conforme al formato git?Formattazione dei messaggi di commit

+8

Non preoccuparti. Basta andare avanti e farlo correttamente per i nuovi messaggi di commit. Il controllo del codice sorgente dovrebbe supportare il tuo flusso di lavoro, non renderlo più difficile. Sì, i messaggi di commit non sono formattati correttamente. Ma è davvero un grosso problema? – Abizern

+4

Semplicemente _having_ commit i messaggi sei avanti rispetto alla curva. È piuttosto comune vedere un solo gigantesco commit con il messaggio "migrato da svn" – gcbenison

+2

[Per coloro che non sanno cosa sia "il formato 50/72"]] (http://stackoverflow.com/q/2290016/1324345) – alroc

risposta

8

Lei ha detto in un commento:

Il repository è stato migrato più di una settimana fa e già ha commit su di esso ha fatto in Git.

Come tale, l'opzione migliore è semplicemente vivere con esso e continuare a fare messaggi di commit corretti d'ora in poi.

Tutti i metodi che cambierebbero i messaggi di commit in quei vecchi commit sarebbero modificare i commit e creare oggetti completamente nuovi con ID diversi. Di conseguenza, i repository di tutti coloro che stanno già lavorando con esso si romperanno, richiedendo loro di reimpostare manualmente il nuovo stato riscritto del repository.

Questo termina solo con molto più lavoro (e confusione!) Del necessario per la banale questione dei commit con un messaggio di commit non perfetto che è stato migrato da un vecchio sistema. Penso che sia perfetto avere una vecchia storia, dei giorni precedenti, che non si adatta perfettamente agli standard attuali. Non si riscriveranno tutti i commit se in seguito si decide di modificare le regole di formattazione del codice.

+0

Hai un punto. Lascerò la storia da solo allora. – EnactSchmenact

1

Un'opzione è modificare il tuo commit in svn prima di importare su git. Usa svnadmin dump vai a generare una versione modificabile dall'utente del repository, modifica lì i messaggi di commit (se fossi in me, scriverò uno script Python per farlo), quindi ricostruirò il repository con svnadmin load

+0

Il repository è stato migrato più di una settimana fa e ha già eseguito commit su Git. Dovrei ri-migrare il repository e quindi unirli in qualche modo? – EnactSchmenact

+0

I file di dump di Subversion non sono "modificabili dall'uomo". Ogni revisione ha un checksum IIRC e se tenti di modificare il file raw, finirai per rompere il file. 'svnadmin setlog' è lo strumento appropriato da utilizzare per la modifica dei messaggi di registro in un repository (nessun file di dump necessario). – alroc

+0

Buon punto sul setlog. È discutibile comunque. –

2

bisogno di git filter-branch. È man page è abbastanza chiaro.

Utilizzare l'opzione --msg-filter che prevede un comando di shell che riceverà il messaggio originale su stdin e dovrebbe inviare il messaggio modificato a stdout. La creazione di uno script che correggerà il formato del messaggio è una domanda separata =).

Se si stava per risolverli a mano, fare semplicemente git rebase -i --root, impostando l'azione su reword. Questo passerà attraverso tutta la storia del commit aprendo il tuo editor di testo per ogni commit e permettendoti di cambiare il messaggio di commit.

+0

Aye; dovrebbe aver pensato a questo. Questo è il modo per farlo. –

Problemi correlati