2012-03-29 8 views
0

Ich schreibe ein Skript, das eine binäre Suche durchführt, um Schuld für fehlerhafte Tests zuzuweisen. Ich verwende git rev-list --bisect.Wie kann ich git rev-list --bisse bestimmte Commits überspringen lassen?

Ich möchte bestimmte Commits ausschließen, wo der Build defekt ist. git bisect hat eine Option, dies zu tun, mit git bisect skip BROKENCOMMIT. Ich kann jedoch keinen gleichwertigen Weg finden, das gleiche unter Verwendung von git rev-list --bisect zu tun. Ist dort eines?

Danke!

+0

git rev-list hat Optionen zum Ausschließen von Commits basierend auf Autor, Committer, Datum und Beschreibung. Warum, oh, warum hat es keine Option, Commits basierend auf dem Hash auszuschließen? – dnw

+0

Ich endete nur Git Rev-Liste, die gesamte Liste der Commits, dann alles andere manuell zu tun. – dnw

Antwort

0

Leider gibt es keine Möglichkeit git rev-list --bisect mitzuteilen, bestimmte Commits zu überspringen.

git bisect implementiert das Überspringen durch Erstellen von Referenzen mit dem Namen refs/bisect/skip-*. Gut- und Schlecht-Commits werden in refs/bisect/bad und refs/bisect/good-* gespeichert. Der git rev-list --bisect Befehl sieht refs/bisect/bad und refs/bisect/good-*, aber aus irgendeinem mysteriösen Grund nicht auf refs/bisect/skip-* achten. Es scheint, als wäre das ein guter Vorschlag für die Git Mailingliste.

Statt rev-list --bisect, könnten Sie git bisect start --no-checkout verwenden git bisect skip verwenden, um die Commits Sie überspringen möchten hinzufügen, und verwenden Sie dann den BISECT_HEAD Referenz. Ein Nachteil dieses Ansatzes ist, dass git bisect es nicht erlaubt, den Ref-Namespace anzugeben. Wenn also ein Halbakt in Bearbeitung ist, überschreiben Sie es.

Verwandte Themen