2013-10-30 7 views
11

Ich versuche zu sehen, wie die Zusammenführung in Svn leicht gemacht werden kann.svn: vim verwenden, um Konflikte zu verschmelzen

Diese page erwähnt, dass externe Tools zum Zusammenführen verwendet werden können. Kann vim als externes Merge-Tool verwendet werden?

Einige zusätzliche Anforderungen:

  1. Dateien sollten horizontal/vertikal geteilt werden, um eine bessere Sicht zu geben.
  2. Fenstertitel sollten entsprechend eingestellt werden.

zB: wie in enter image description here

+1

@romainl: Google brachte mich auf dieser Seite, also danke ich dem Kerl. – ereOn

Antwort

25

Schritt 1:

Speichern Sie das folgende Skript, zB: merger.sh:

#!/bin/sh 
# 


BASE=${1} 
THEIRS=${2} 
MINE=${3} 
MERGED=${4} 
WCPATH=${5} 

vimdiff $MINE $THEIRS -c ":botright split $MERGED" -c ":diffthis" -c "setl statusline=MERGED | wincmd W | setl statusline=THEIRS | wincmd W | setl statusline=MINE" 

Schritt 2:

bearbeiten und füge folgende Zeile hinzu:

merge-tool-cmd = /path/to/merger.sh 

Schritt 3:

Wenn Sie erhalten folgende Optionen während svn merge-Befehl, wählen Sie die Option 'l'. Dies ist ein externes Tool zum Lösen von Konflikten.

Conflict discovered in 'main.h'. 
Select: (p) postpone, (df) diff-full, (e) edit, 
     (mc) mine-conflict, (tc) theirs-conflict, 
     (s) show all options: l 

Schritt 4: Jetzt wird vim in Diff-Modus mit 3 Dateien geöffnet werden - Mine, ihre und verschmolzen. Nehmen Sie die erforderlichen Änderungen in der zusammengeführten Datei vor, speichern Sie die Datei und beenden Sie sie (:wqa).

Schritt 5:

nun unter Optionen wieder erscheint, wählen Sie 'r' jetzt (die fusionierte Version zu akzeptieren).

Select: (p) postpone, (df) diff-full, (e) edit, 
      (mc) mine-conflict, (tc) theirs-conflict, 
      (s) show all options: r 
+1

Ich liebe dich so sehr im Moment .... das ist schön. – ldog

+1

Wenn diese Änderung nicht dauerhaft benötigt wird, kann dies auch durch Setzen der Umgebungsvariablen SVN_MERGE =/pfad/zu/merger.sh – Michael

+0

Wie kann ich dieses Skript verwenden, um einen unordentlichen Arbeitsbereich mit Konflikten von einem "svn aktualisieren"? Ich habe eine Reihe von .r *, .mine-Dateien, bin mir aber nicht sicher, wie ich meinen Arbeitsbereich wieder in einen sauberen Zustand bringen kann. – Christopher

Verwandte Themen