2012-04-04 8 views
1

Mein Anwendungsfall ist dies ...automatische Git merge

Ich habe ein Projekt, das zwei Produktionszweige hat. Die meisten Änderungen in einem Zweig müssen mit dem anderen Zweig zusammengeführt werden. Es sind nur sehr spezifische und seltene Änderungen, die in den zwei Zweigen getrennt gehalten werden müssen.

Ich möchte eine automatische Zusammenführung zwischen zwei Zweigen im Remote-Haupt-Repository einrichten, das als Quelle für die Produktions-Build-Maschinen verwendet wird. Jeder, der etwas in Zweig A drückt, fügt es automatisch in Zweig B ein und einen speziellen nicht zusammenzuführenden Push (der selten passiert) manuell zu bearbeiten.

Jeder einfache Weg, dies zu tun?

Antwort

2

Sie könnten einen Post-Receive-Git-Hook verwenden. Wenn jemand in das Haupt-Remote-Repository schiebt, wird ein Skript aufgerufen (der Hook), wo Sie verschiedene Arten von Informationen erhalten, was referenziert was, Push-Vorschau-Commit-Hash und neuer Commit-Hash.

Hier können Sie genau bestimmen, welcher Zweig geschoben wurde. Anhand dieser Informationen könnten Sie in einem anderen Repository den anderen Zweig auschecken, die Zusammenführung durchführen und diese Informationen hochschieben.

Es gibt eine post-receive.sample-Datei in Ihrem .git/hooks/-Ordner. Benenne es um, um es zu erhalten und stelle sicher, dass es ausführbar ist. Im Bash könnte es aussehen wie:

+0

Ich bin mir nicht sicher, warum Sie sagen, wir sollten die Pushs abbrechen ... Gibt es einen Grund dafür oder ist es, weil meine Frage mehrdeutig ist? Die meiste Arbeit, die Entwickler in Zweig A und Zweig B arbeiten, sollte kombiniert werden. Der einzige große Unterschied besteht darin, dass sie mit verschiedenen Bibliotheken von Drittanbietern verbunden sind. Daher gibt es geringfügige Unterschiede in den Makefiles und den Headern, und diese Unterschiede sind im Großen und Ganzen konstant. – owagh

+0

Aber ja, der Post-Recieve-Haken scheint der Weg zu sein, dies zu tun. Können Sie in Ihrer Antwort zu Post-Recieve-Skripten weitere Links zu Ressourcen hinzufügen? Das einzige Beispiel in meinem .git/hooks-Ordner ist ein E-Mail-Skript, das nicht wirklich zeigt, wie ich aus dem Post-Recieve-Skript eine Zusammenführung machen kann. – owagh

+0

Sie können mein Skript verwenden, wie es ist. Angenommen, Sie haben Zugriff auf bash. – ralphtheninja