p4merge Fehler [GIT]
Frage
Ich versuche p4merge mit git zu verwenden, aber ich bin immer:
Fehler beim Start p4merge: "Pfad / myFile" (oder Punkte) eine ungültige Datei (dies listet die BASE, NAH, FERN, und Standard-Version der Datei)
.Git sagt mir, über den Konflikt dann gefragt, ob ich will die mergetool starten konfiguriert (p4merge) und dann erhalte ich die Fehler oben.
Zusätzliche Anmerkung: es passiert mit einer beliebigen Datei
!Jede Ahnung, was das ist und wie man es beheben?
Lösung
Das funktionierte für mich mit msysGit auf Windows 7:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'
Nicht sicher, warum, aber die Zitiert für mich geschraubt Dinge.
Andere Tipps
Sie sehen hier meine Config für DiffMerge oder KDiff3.
Auf dieser Grundlage würde ich für p4merge empfehlen:
git config --global merge.tool merge
git config --global mergetool.merge.cmd "merge.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\""
und merge.sh
einen Wrapper zu sein (in einem Verzeichnis von Ihrem PATH
Umgebungsvariable referenziert kopiert), in der Lage, den Fall zu berücksichtigen, wo kein BASE
existiert.
(Wenn eine Datei in zwei verschiedenen Zweigen erstellt wird dann verschmolzen, gäbe es für diese Datei keine gemeinsamen Vorfahren sein)
#!/bin/sh
# Passing the following parameters to mergetool:
# local base remote merge_result
alocal=$1
base=$2
remote=$3
result=$4
if [ -f $base ]
then
p4merge.exe -dl "$base" "$alocal" "$remote" "$result"
else
p4merge.exe -dl "$result" "$alocal" "$remote" "$result"
fi
Sie können beachten Sie:
- die Verwendung von
PWD
in der Config des Merge - die Verwendung von „
merge
“ als Name des merge.tool Namen (da die eigentliche Werkzeug ist in dermerge.sh
Skript aufgerufen, in dem Sie zwischen einer beliebigen Anzahl von Merge-Tool wechseln Sie wollen) - die Verwendung von doppelten Anführungszeichen um
$base
,$alocal
,$remote
,$result
im Skript - der bedingte Pfad für das Tool aufrufen, auf der Grundlage der Existenz einer „Basis“ Datei.
- die Notwendigkeit, immer 3-Dateien müssen als Parameter fusionieren (auch wenn ‚Basis‘ nicht existiert ...)
es getestet (es stellt sich heraus, können Sie nur herunterladen und installieren p4merge - Abschnitt Client / Visual Merge Tool -., auch wenn Sie nicht über anderes P4 Produkt installiert)
Mit den Einstellungen oben beschrieben, MSysGit1.6.3, DOS-Sitzung oder Git Bash-Sitzung:
Es funktioniert einfach TM .
Update msysgit 1.7.x
Benjol erwähnt in den Kommentaren:
p4merge wird jetzt nativ von msysgit unterstützt .
Das heißt, Sie können einfach tun:
git config --global merge.tool p4merge
# and I recommend
git config --global mergetool.keepBackup false