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?

War es hilfreich?

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 der merge.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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top