2009-02-14 17 views

cevap

16

Hile, cygwin yollarının Windows yollarıyla aynı olmamasıdır, bu yüzden Windows yollarına Cygwin yollarını WinMerge'ye argüman olarak göndermeden önce dönüştüren küçük bir betiğe ihtiyacınız vardır.

İşte bunu nasıl şu şekildedir:

(1) /usr/bin/winmerge bir shell script oluşturun:

#!/bin/sh 
"/cygdrive/c/Program Files/WinMerge/WinMergeU.EXE" /e /ub /dl other /dr local `cygpath -aw $1` `cygpath -aw $2` `cygpath -aw $3` 

Not: cygpath yol adları dönüştürür. WinMerge varsayılan konumda değilse, yolu burada değiştirin.

(2) bu dosya çalıştırılabilir yapmak

chmod +x /usr/bin/winmerge 

(3) sizin ~/.hgrc dosyaya aşağıdaki satırları ekleyin:

[ui] 
merge = winmerge 

[merge-tools] 
winmergeu.executable=/usr/bin/winmerge 
winmergeu.args=$other $local $output 
winmergeu.fixeol=True 
winmergeu.checkchanged=True 
winmergeu.gui=False 

Not! Muhtemelen adında bir [ui] bölümünüz var. Değişikliklerimi kendiniz ile birleştirmeyi unutmayın, sadece yeni bir [ui] bölüm eklemeyin. Örneğin, benim .hgrc şöyle görünür:

İşte
[ui] 
username = Joel Spolsky <[email protected]> 
merge = winmergeu 

[extensions] 
fetch = 

[merge-tools] 
winmergeu.executable=/usr/bin/winmerge 
winmergeu.args=$other $local $output 
winmergeu.fixeol=True 
winmergeu.checkchanged=True 
winmergeu.gui=False 
+0

Artık kendi cevabınızı kabul edebilirsiniz, değil mi? –

+0

48 saat beklemek zorundayım. –

+0

Bu betiği muhtemelen/usr/bin/dizinine koymam. Cygpath kullanmamanız için peşinden gidecektim ama sonra kod bloğunu kaydettim ve ne yaptığınızı gördüm. –

0

Subversion/cygwin/WinMerge için çalışan kabuk komut dosyası çizgidir. Temel fark, hangi argümanların kullanılmasıdır. Bu örnek, aynı zamanda açıklama alanlarını belirler ve tüm diffs seferde başlatılan böylece arka planda karşılaştırmaları başlattı olduğunu

/cygdrive/c/Program\ Files/WinMerge/WinMergeU.exe /e /ub /dl "$3" /dr "$5" "`cygpath -aw $6`" "`cygpath -aw $7`" & 

Not. Beğenmezseniz, '&' öğesini kaldırın.

Düzeltme denetim programınızın size ne geçtiğini bilmiyorsanız, kabuk komut dosyasına 'echo $ @' eklemeyi deneyin. Komut dosyasına iletilen argümanları basacaktır.

İlgili konular