2013-02-11 13 views
70

Unter Linux ist mein Lieblings-Merge-Tool Meld, und ich hatte keine Probleme mit der Verwendung oder Konfiguration für die Arbeit mit Git. In Windows war es jedoch eine andere Geschichte.Git mergetool mit Meld unter Windows

Zuerst habe ich Meld aus einem Bündel installierte ich hier gefunden: https://code.google.com/p/meld-installer/

Dann konfigurierte ich meine .gitconfig wie so Meld als Standard mergetool zu unterstützen

[merge]              
    tool = meld                   

[mergetool "meld"]           
    path = C:\\Program Files (x86)\\Meld\\meld\\meld.exe 
    keepBackup = false         
    trustExitCode = false 

Also, wenn ich eine habe Konflikt, ich git difftool und Meld öffnet tatsächlich. Die Pfade zu den Dateien, die Git schreibt, werden jedoch an das Diff-Tool übergeben. Obwohl Git zum Beispiel die Dateien BASE, LOCAL und REMOTE im Repository-Verzeichnis (dem Ort, von dem aus ich git mergetool genannt habe) erzeugt, versucht Meld, jede dieser Dateien im Verzeichnis der ausführbaren Datei zu öffnen.

Anstatt C: \ Repo \ roses.txt.LOCAL.2760.txt zu öffnen, versucht Meld, C: \ Programme (x86) \ Meld \ meld \ roses.txt.LOCAL.2760.txt zu öffnen.

Hat jemand schon mal davon erfahren oder kann ich Git/Meld konfigurieren, um in Windows richtig zu funktionieren?

+0

Ich habe keine Ahnung, ob dies einen Sinn hat, aber ich benutze KDiff3, und der Pfad in meinem gitconfig ist: path = C:/Programme (x86)/KDiff3/kdiff3.exe und nicht C : \\ usw. – Fumler

+1

Können Sie das Problem lösen? – Roger

+1

konnte ich nicht. Eine der Antworten ist wahrscheinlich richtig, aber ich zögere, irgendwelche als solche zu markieren, da ich nicht wirklich Meld dazu bringen kann, sich richtig zu verhalten: -/ – Nelson

Antwort

9

Ich hatte genau das gleiche Problem und stellte fest, dass ich mich brutal zwingen musste, um es zum Laufen zu bringen. Hier ist, was ich in meine .gitconfig-Datei eingefügt habe. (Hinweis mein Meld ausführbare ist an einem anderen Ort)

+0

Probier es aus wenn ich morgen zur Arbeit komme ... – Nelson

+0

Genau das funktionierte gut für mich, mit dem benutzerdefinierten Installationspfad, den ich sowieso ausgewählt hatte.Es ist bemerkenswert, dass es einen Unterschied zwischen "Pfad", den meisten Guides, und "cmd" gibt – FauxFaux

+0

Ich habe sowohl Ihre als auch Martins Lösungen ausprobiert, und beide haben nicht funktioniert. Ich denke, da ist noch etwas anderes. Ein Fenster öffnet und schließt sich sofort, und dann öffnet sich Meld mit den Pfaden, die auf Melds Installationsverzeichnis zeigen das Repo.Könnte ein Argument, das an Meld übergeben wurde, bewirken, dass es stirbt, und dann erkennt es das Problem und startet mit dem Standardpfad neu? Ich fasse hier, aber ich bin mir nicht sicher, wie ich das Problem beheben soll ... – Nelson

24

Schüss, seien Sie vorsichtig für Leerzeichen in Verzeichnissen!

[merge] 
    tool = meld 
[mergetool "meld"] 
    prompt = false 
    keepBackup = false 
    keepTemporaries = false 
    path = C:/Program Files (x86)/Meld/meld/meld.exe 
    cmd = '\"/c/Program Files (x86)/Meld/meld/meld.exe\" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED' 
+1

Die Änderungen scheinen mir die Lösung gebrochen zu haben. Die ursprüngliche Überarbeitung funktioniert bei mir, also +1. Ich fand, dass es ohne die Pfadlinie zu funktionieren scheint. – vossad01

4

Ich fand eine Lösung in einem Fehlerbericht auf den meld Installer auf dieser Seite:

https://code.google.com/p/meld-installer/issues/detail?id=11

Soweit ich verstehe, das Problem ist, dass das meld.exe Programm (das Läuft durch den Python-Interpreter melt) setzt das Arbeitsverzeichnis des Kommandos unnötig auf das von Meld.exe. Dies führt dazu, dass relative Pfade falsch interpretiert werden, wenn sie als Befehlszeilenargumente übergeben werden.

Die Lösung besteht darin, die bereitgestellte meld.exe durch eine zu ersetzen, die durch das Kompilieren der meld.ahk-Datei erzeugt wurde, unter Verwendung von AHK2EXe (AutoHotKey-Skript -> exe). Lade einfach das Skript herunter, das am weitesten unten auf der Seite ist, da dort einige Versionen gepostet wurden.

+0

Das hat bei mir funktioniert. Vielen Dank! –

+2

Der Issue-Tracker wurde nicht eingerichtet, um das Problem automatisch zuzuweisen. Daher habe ich übersehen, dass es Kommentare gab. Für Googler, die das später finden; Dieses Problem wurde behoben. – Keegan

111

Warum verwenden Sie nicht git bash für Windows?

Nach der Installation meld einfach:

git config --global merge.tool meld 
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe" <- path to meld here 

Das ist alles!

+5

Warum wurde diese Antwort abgelehnt? Es funktionierte wie ein Zauber und es verletzt keine Regel. –

+0

Diese Lösung funktionierte für mich Ich habe auch unten Befehl, um mich nicht jedes Mal zu öffnen, wenn es das Tool öffnet git config --global mergetool.prompt false –

+0

git config --global mergetool.meld.path "C: \ Programme (x86) \ Meld \ Meld.exe " –

3

ich auch gegenüber ähnlichen issue.Operating System verwendet wird, ist von Windows 10 und die folgenden Änderungen für me.It gearbeitet scheint eher wie Pfad Ausgabe

git config --global mergetool.meld.path "/c/Program Files (x86)/Meld/Meld.exe" <- path to meld here 
0

Nachdem alle oben versuchen, Meld als Administrator ausführen Einstellung hat für mich gearbeitet.

  1. Klicken Sie mit der rechten Maustaste auf Meld.exe
  2. Zum Eigenschaften>Kompatibilität und wählen Sie die Checkbox Run this program as an administrator

Die Fehler, die ich erhielt referenzierten temporäre Dateien wie c:\windows\temp\meld-*, die nicht werden erstellt wurden. Das Erhöhen von Melds Berechtigungen scheint den Trick zu erfüllen, da es nun sowohl mit git difftool als auch manuell in Meld ausgeführt wird.

0

Sie können diese beiden Befehle verwenden (as Arugin says) - den richtigen Pfad zu Meld.exe mit:

git config --global merge.tool meld 
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe" 

oder Sie können Ihre gerade bearbeiten "C: \ Benutzer \ YOUR_USER_NAME.gitconfig" Datei direkt und folgendes Ende der es hinzufügen:

[merge] 
    tool = meld 
[mergetool "meld"] 
    path = C:\\Program Files (x86)\\Meld\\Meld.exe 

Jetzt git difftool in Git Bash für Windows und Meld rufen wird als Standard-difftool Viewer öffnen.