2014-07-18 9 views
9

Ich musste vor kurzem 16 Patches auf mein Repo anwenden, mit 'git am', und ich war vorsichtig, für jeden einzelnen '--committer-date-is-author-date' zu verwenden. Allerdings musste ich auch die Commit-Nachricht für jeden amd-Patch anpassen, und nachdem ich mit allen 16 fertig war, entdeckte ich, dass "commit --amend" den Committer-Zeitstempel für jeden von ihnen übertrug.Verwenden Sie 'git filter-branch', um Committer-Daten in den letzten N-Commits zu korrigieren?

ich schließlich gelernt, dass mein Problem mit

git rebase --committer-date-is-author-date <SHA-of-commit-prior-to-patches> 

auf einem Schlag gelöst werden könnte, aber nicht, bevor Sie versuchen, mein Problem mit ‚Filter-Zweig‘ zu lösen, die nicht funktioniert hat. Ich bin gespannt was ich falsch gemacht habe. Hier ist mein Versuch:

git filter-branch --env-filter \ 
    'export GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE' SHA1..HEAD 

Und hier ist das Ergebnis:

Rewrite 1c52265d1f06bd67e0fed1c09e1e75249424476e (1/15)/usr/lib/git-core/git-filter-branch: 1: export: -0500: bad variable name 

Was habe ich falsch gemacht? Darf ich eine Variable innerhalb eines env-Filters nicht auf den Wert eines anderen setzen/exportieren? Beachten Sie, dass ich meine Vorgehensweise von einer Methode anpasste, die GIT_AUTHOR_DATE und GIT_COMMITTER_DATE bedingt änderte, wenn $ GIT_COMMIT mit einer bestimmten SHA übereinstimmte. In diesem Fall wurden jedoch beide GIT _ * _ DATE-Variablen auf eine konstante und nicht auf eine andere Variable gesetzt.

Antwort

14

Der Wert von $GIT_AUTHOR_DATE Leerzeichen enthält, so haben Sie es zu zitieren (-0500 ist Ihre Zeitzone Offset):

git filter-branch --env-filter \ 
    'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"' SHA1..HEAD 
+0

ich jetzt sehe, danke. (Ich hatte angenommen "-0500" war eine Art von Fehlercode innerhalb von git-filter-branch.) –

+0

Nein, es ist nur so, dass Ihre Exportanweisung zu exit GIT_COMMITTER_DATE = @ 1405671090 -0500' (Sekunden seit der Epoche und Zeitzonen-Offset), was eine ungültige Shell-Syntax ist. – knittl

Verwandte Themen