2010-12-28 4 views
10

Ich habe einen Zweig in SVN, die ich mit Änderungen aus dem Stamm auf dem Laufenden bleiben möchte. Was ich gerne machen würde, wäre ein Skript oder etwas, das jeden Abend läuft, das mergt und dann die neue Version des Zweiges festlegt, wenn es keine Zusammenführungskonflikte gibt, aber wenn es Zusammenfügungskonflikte gibt, die das irgendwie anzeigen. Ich fand dieses post das ist etwas hilfreich, obwohl es nicht alles tut.SVN - automatische Zusammenführung von Stamm in Zweig

Ich konnte keinen Weg finden zu bestimmen, ob es Zusammenführungskonflikte gibt, und das ist meistens, was ich suche. Das Erstellen des Codes und das anschließende Festschreiben am Erfolg ist im Skript zwar einfach, aber ohne eine Möglichkeit, Übereinstimmungskonflikte zu erkennen, ist dies nicht erfolgreich.

Danke für jede Hilfe, die Sie Jungs bieten können!

Antwort

10

Ich hatte Ihr genaues Problem, obwohl ich nicht versuchte, Merge zu automatisieren, da es nicht viele Zweige gab und ich es manuell gemacht habe.

Wie auch immer, die beste Option sieht aus wie mit Skripten. Das Skript in Ihrem Beitrag verknüpft ist nicht nur die letzte erforderliche Aktion: begehen

ich Linux oft so verwenden, wenn ich Sie wäre, würde ich einen Shell-Skript wie folgt verwendet:

cd /path/to/branch 
svn update #just to be sure... 
svn merge --non-interactive svn://path/to/trunk 
svn commit -m "Automated commit" 

Ein ähnlicher Befehl könnte mit SVN für Windows in einem Stapelskript verwendet werden

+0

Dies könnte eine mögliche Lösung sein, da das Commit fehlschlagen sollte, wenn es Konflikte gibt. Nachdem ich darüber nachgedacht habe ... wenn ich versuche, vor dem Commit zu kompilieren, sollte es fehlschlagen, wenn es Merge-Konflikte gibt. Ich kann dann eine Fehlermeldung von Cruise Control generieren. Danke für die Hilfe! – BryceH

+0

Eigentlich können Sie nicht festschreiben, wenn es nicht aufgelöste Zusammenführungskonflikte gibt, so dass die Festschreibung definitiv fehlschlägt. Trotzdem könntest du versuchen, den Rückgabewert von svn merge zu verwenden oder nach Konflikten zu suchen über einen anderen Befehl, den ich nicht kenne. Wie auch immer, ich habe vergessen, das --non-interactive Flag einzufügen, weil es dich auf was hinweisen würde im Falle von Konflikten tun. –

+0

nicht sicher, wie es mit Jenkins/Hudson funktionieren würde. – gnuyoga

0

Werfen Sie einen Blick auf MergeFairy. Es wird kontinuierlich verschmelzen und Ihnen bei Konflikten eine E-Mail mit Anweisungen zur Wiederaufnahme senden.

Verwandte Themen