2012-12-07 3 views
7

Zwei Entwickler arbeiten am Entwicklungszweig an zwei völlig unterschiedlichen Änderungen (zwei verschiedene Dateien). Beide reichen ihre Arbeit gleichzeitig ein und lösen zwei Jenkins-Builds aus. Diese Builds gehen gut, aber eine Überprüfung dauert länger als die andere.Wie kann ich in Gerrit verhindern, dass ein Patch-Set eingereicht wird, das nicht vollständig auf dem neuesten Stand ist?

Der erste Entwickler trägt ihre Patch-Sets und es gibt keine Zwischen Commits auf entwickeln, so Gerrit verschmilzt sie direkt.

Der zweite Entwickler trägt später ihr Patch-Set. Obwohl es jetzt ein intermediäres Commit gibt, ist die Zusammenführung selbst trivial und Gerrit führt die Zusammenführung durch.

Jetzt haben wir zwei Builds, von denen keiner die Arbeit des anderen enthält.

Ich möchte die zweite Einreichung blockieren, wenn es dazwischenliegende Commits gibt, selbst wenn die Zusammenführung völlig trivial wäre, was den Entwickler stattdessen dazu veranlasst, seine Einreichung neu zu erstellen und einen neuen Build in Jenkins auszulösen).

Was setze ich in Gerrit ein, um solche trivialen, aber unerwünschten Zusammenführungen zu blockieren, wenn eine Überprüfung abgeschlossen ist, der Patch-Satz wird übermittelt, aber der Zielzweig hat dazwischenliegende Zusammenführungen?

Antwort

6

Sie können Projektoptionen in Gerrit nur ändern, Schnellvorlauf, Dies würde die Änderung verhindern, gehen in, da es kein Vorspulen fusionieren ist. Dann zwingt Entwickler 2 zu git Pull --rebase und drücken Sie erneut, jetzt wird die Änderung, die Entwickler1 tat, Teil der Verifikation sein.

+0

Werden andere Nebenwirkungen auftreten? – MartyMacGyver

+1

Der Nebeneffekt ist, dass die Entwickler ziehen müssen --rebase, bevor sie zur Überprüfung drängen –

+1

Keine unerwünschten Nebenwirkungen dann. Ich schätze Ihre Antwort und würde mich über eine positive Bewertung freuen (ich denke, diese Frage wird für andere nützlich sein). Danke noch einmal! – MartyMacGyver

Verwandte Themen