Ich möchte durch eine Reihe von Commits gehen und einen Shell-Befehl auf jedem ausführen. Wenn der Befehl fehlschlägt, möchte ich, dass der Weg aufhört, sonst mach weiter. Ich habe mir filter-branch
angesehen, aber ich möchte die Commits nicht neu schreiben, sondern einfach nachsehen. for-each-ref
scheint Ihnen nicht zu ermöglichen, einen Bereich anzugeben, auf den reagiert werden soll.Git Run Shell-Befehl für jeden Commit
Mein spezifisches Problem ist, dass ich eine Reihe von Commits erstellt habe und ich möchte sicherstellen, dass jedes Commit erstellbar ist. Ich möchte wie etwas tun:
git foreach origin/master..master 'git submodule update && make clean && make'
Ich könnte natürlich ein Shell-Skript schreiben, dies zu tun, aber es scheint, wie die Art der Sache, dass git könnte eine schöne Art und Weise zu tun.
Haben Sie in Betracht gezogen, Python zu verwenden? Vielleicht könnte GitPython eine Lösung sein. Überprüfen Sie diesen Beitrag: http://StackOverflow.com/Questions/1456269/Python-Git-Module-Experiences – kmundnic
Wissen Sie, dass Herkunft/Master ist gut und Master ist schlecht (oder die Umkehrung), oder versuchen Sie nur zu testen alles zwischen ihnen, ohne zu wissen, dass es irgendwo einen Fehler gibt? –
@CharlesDuffy, letzteres. Ich habe von einem Arbeitspunkt angefangen und eine Reihe von Änderungen vorgenommen, die funktionierten. Dann machte ich mehrere feinkörnige Commits aus dem Stapel von nicht festgelegten Arbeitsänderungen und möchte sicherstellen, dass alle dazwischen liegenden Commits erstellbar sind. – FazJaxton