2014-10-28 16 views
10

Per alcuni motivi, devo riscrivere l'intera cronologia del mio repository git per modificare il committer_id di ogni commit. Tuttavia, ho allegato una nota a più o meno ogni commit e usando git-filter-branch per cambiare il committer_id creeremo logicamente nuovi commit, lasciando le note dietro. C'è un modo per copiare le note sul loro nuovo commit corrispondente?Conserva note git durante la riscrittura della cronologia con il ramo del filtro git

Questo thread sembra porre domande simili, ma è stato lasciato senza la soluzione nel 2011.

Grazie per il vostro aiuto!

+2

avete un elenco di OLD_SHA-> NEW_SHA? O forse dal momento che stai cambiando solo GIT_COMMITTER_NAME puoi 'git rev-list' sugli orig refs e sui refs di sostituzione e ottenerlo? Uno che hai vecchio-> nuovo sha mappare il problema dovrebbe essere banale. –

+0

Buona idea, non l'avevo considerato in questo modo. Grazie! – Kiplaki

risposta

1

Il problema è probabilmente che le note git hanno bisogno di qualche configurazione aggiuntiva per funzionare nel modo desiderato. Probabilmente avete bisogno di questa configurazione variabile

git config notes.rewriteRef refs/notes/commits 

Dalla documentazione: https://git-scm.com/docs/git-notes#git-notes-notesrewriteRef:

GIT_NOTES_REWRITE_REF

Quando riscrittura commit, che le note di copiare dal l'originale per i riscritto commettere. Deve essere una lista delimitata da due punti di refs o glob.

Se non impostato nell'ambiente, l'elenco di note da copiare dipende da the notes.rewrite. e notes.rewriteRef settings.

Fondamentalmente, Git deve avere il permesso di trasferire le note dai commit originali ai nuovi che stai riscrivendo. Si potrebbe anche vedere questa discussione StackOverflow per una spiegazione più:

Is there a way to automatically merge notes if commits for those notes get squashed?

Problemi correlati