2008-08-28 6 views
4

Gibt es eine Möglichkeit, subversion "update/merge" zu sagen, es sei denn, es würde einen Konflikt verursachen?Subversion: Fail Update bei Konflikten?

Ich weiß, Sie können --dry-run/status -u verwenden, um zu überprüfen, bevor Sie das Update ausführen, aber ich habe oft andere Updates ausführen und beschädigte Webseiten erhalten, weil sie die Zeile "C index.php" nicht bemerken.

Ich habe auch bemerkt, dass Svn scheint nicht zu unglücklich über Konflikte - es heißt immer noch "auf Überarbeitung blah aktualisiert" und gibt Null, unabhängig von Konflikten. Also muss ich die Zeile-für-Zeile-Ausgabe analysieren, um sie zu entdecken. Sicherlich gibt es einen besseren Weg?

Antwort

3

Sie den --accept Parameter verwenden kann, um anzuzeigen, was passieren soll, wenn ein Konflikt auftritt:

--accept ARG    : specify automatic conflict resolution action 
          ('postpone', 'base', 'mine-full', 'theirs-full', 
          'edit', 'launch') 

Siehe auch die interactive conflict resolution Seite im svnbook

1

Vielleicht ist eine bessere Möglichkeit, ein grafisches Werkzeug zu verwenden? Oder schreibe ein Skript, um das Update auszuführen, das die Ausgabe in eine Datei umleitet und am Ende ein "cat svnupdate.log | grep"^C "" ausführt, um Konflikte anzuzeigen?

Mit den grafischen Tools, die ich benutze (TortoiseSVN und Netbeans), machen sie am Ende ein unangenehmes Geräusch und präsentieren Ihnen einen Merge-Auswahldialog für den Umgang mit ihnen. Ich kenne kein Äquivalent mit so viel Power für die Kommandozeilen-Tools.

1

@jsight: TortoiseSVN ist großartig, aber ich entwickle hauptsächlich in einer * NIX-Umgebung, ohne X. Also verwende ich normalerweise (beschränkt auf) die Befehlszeile.

In Ihrem Skriptvorschlag, an dem ich gerade arbeite - weshalb ich genervt bin, dass ich nicht einfach nachsehen kann? Im Moment überspringe ich die "Ausgabe in eine Datei" und benutze eine Pipe, aber ansonsten genau das, was du beschreibst.

1

Sie könnten den Parameter --diff3-cmd verwenden, um anzugeben, welches Merging-Tool verwendet werden soll (normalerweise Diff3 von Diffutils).

0

Sie könnten auch ein Vorab-Commit-Skript verwenden, um nach Konfliktmarkierungen in Dateien zu suchen und das Festschreiben zu verhindern, wenn sie vorhanden sind.

0

Subversion 1.5 (vor kurzem veröffentlicht) fügt einige Fähigkeit um festzulegen, was während eines Aktualisierungskonflikts mit dem Argument "--accept" geschieht.