2013-02-11 21 views
70

Linuxでは、私の好きなマージツールはMeldですが、Gitで動作するように使ったり、設定したりするのに問題はありませんでした。しかし、Windowsではこれとは別の話があります。Git mergetool with Meld with Windows

まず、私は私がここで見つけるバンドルからメルドをインストール:次にhttps://code.google.com/p/meld-installer/

私が持っているときに、

[merge]              
    tool = meld                   

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

ので、デフォルトのmergetoolとしてメルドをサポートするように、私は私の.gitconfigを設定し紛争、私はgit difftoolを行い、Meldは実際に開いている。しかし、diffツールに渡すためにGitが書き込むファイルへのパスは正しくありません。例えば、Gitは、リポジトリディレクトリ(私がgit mergetoolと呼んでいた場所)のBASE、LOCAL、REMOTEファイルを生成しても、実行可能ファイルのディレクトリにあるそれらのファイルをそれぞれ開こうとします。

C:\ repo \ roses.txt.LOCAL.2760.txtを開く代わりに、MeldはC:\ Program Files(x86)\ Meld \ meld \ roses.txt.LOCAL.2760.txtを開こうとします。

Git/MeldをWindowsで正しく動作するように設定する前に、これを実行したことがありますか?

+0

私はこれが試されている点はあるのかどうか分かりませんが、私はKDiff3を使い、gitconfigで設定したパスは次のとおりです:path = C:/ Program Files(x86)/KDiff3/kdiff3.exe and C :\\など – Fumler

+1

問題を解決できますか? – Roger

+1

私はできませんでした。答えの1つは間違いないかもしれませんが、Meldに実際に正しく動作させることができないため、私は実際にMeldを得ることができないので、私はそれに気をつけません。 -/ – Nelson

答えて

9

私はまったく同じ問題を抱えていました。 ここに私が.gitconfigファイルに入れたものがあります。

[merge] 
    tool = meld 
[mergetool "meld"] 
     cmd = "/c/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED" 
+0

明日の仕事になると... – Nelson

+0

私はとにかく選んだカスタムインストールパスを使って、うまくいきました。ほとんどのガイドで使用されている "path"と – FauxFaux

+0

私はあなたとマーティンの両方のソリューションを試してみましたが、どちらもうまくいきませんでした。 argdがMeldに渡って死ぬことになって、問題を検出してデフォルトのパスで再起動するのですか?私はここで掴んでいますが、この問題のトラブルシューティング方法はわかりません。 – Nelson

24

Schuess(私のメルド実行ファイルが別の場所にあることに注意してください)、ディレクトリ内の空白文字のために気をつけて!

[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

編集内容が解決しなかったようです。元のリビジョンは私のために働くので、+1します。私はそれがパスラインなしで動作するように見えた。 – vossad01

4

私は、このページに、MELDインストーラのバグレポートに解決策を見つけた:

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

を私が理解する限りでは、問題はそのmeld.exeプログラム(これはPythonインタプリタを介してmeldを実行する)は、コマンドの作業ディレクトリをmeld.exeの作業ディレクトリに不必要に設定します。これにより、コマンドライン引数として渡されたときに相対パスが正しく解釈されなくなります。

解決方法は、提供されたmeld.exeを、AHK2EXe(AutoHotKeyスクリプト - > exe)を使用してmeld.ahkファイルをコンパイルすることによって生成されたものに置き換えることです。そこにいくつかのバージョンが掲載されているので、ページの一番下のスクリプトをダウンロードしてください。

+0

これは私のために働いたものです。ありがとう! –

+2

問題トラッカーは私に問題を自動的に割り当てるように設定されていなかったので、コメントがありませんでした。後でこれを見つけるGoogle検索者の場合この問題は修正されました。 – Keegan

111

なぜWindows用のgit bashを使用しないのですか?単にMELDをインストールした後

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

ザッツすべて!

+5

なぜこの回答が下降したのですか?それは魅力のように働き、どんなルールにも違反しません。 –

+0

この解決策は私のために働いた私はまた、ツールを開くたびに私にプロンプ​​トを表示しないようにしました git config --global mergetool.prompt false –

+0

git config --global mergetool.meld.path "C:\ Program Files )\ Meld \ Meld.exe " –

3

I使用あまりに直面同様のissue.Operatingシステムは、Windows 10で、次の変更がme.Itのために働いメルドは、管理者として実行するように設定し、上記のすべてを試した後、よりパスの問題

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

のように思えます私のために働いた。

  1. 「Meld」を右クリックします。exeファイル
  2. プロパティ>互換性に行き、私が作成されていませんでしたc:\windows\temp\meld-*、同じように参照一時ファイルを受信Run this program as an administratorチェックボックスに

エラーを選択します。 Meldのアクセス許可を上げると、git difftoolの両方で動作し、Meld内で手動で動作するようになりました。

0

あなたはこれらの2つのコマンドを使用することができます(as Arugin says) - Meld.exeへの適切なパスを使用して:

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

ORあなたは自分で編集することができます "C:\ユーザーはYOUR_USER_NAME.gitconfigを\" ファイルを直接それの最後に次の行を追加します。

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

今すぐあなたのデフォルトのdifftoolビューアとして開きますWindowsとメルドのためのGit Bashのでgit difftoolを呼び出します。