WinMerge Mercurial için Diff aracı olarak nasıl kullanılır


19

Mercurial dağıtılmış sürüm kontrol sistemini kullanıyorum ve kendi iç fark aracı yerine WinMerge kullanmak için nasıl yapılandıracağımı merak ediyorum. Birleştirme aracı olarak WinMerge'i zaten kullandım, ancak şunu yazarken Mercurial'ın WinMerge kullanmasını istiyorum:

hg diff

Bunu yapmanın bir yolu var mı, yoksa Mercurial'ın içsel fark aracıyla mı takıyorum?

Yanıtlar:


23

İtibaren Kaplumbağa SSS :

Bu satırları kişisel Mercurial.ini dosyanıza ekleyin.

[extensions]
extdiff =

[extdiff]
cmd.winmerge = C:\Program Files\WinMerge\WinMergeU.exe
opts.winmerge = /e /x /u /wl

Şimdi Global Ayarlar aracını çalıştırın. TortoiseHg sekmesinde, Visual Diff Command için açılan listede mevcut winmerge görmelisiniz. Winmerge seçin, uygulayın ve ardından kapatın.

Bu aynı yaklaşım hemen hemen tüm görsel diff araçlarını eklemek için de kullanılabilir, ancak fark aracınızın, sürüm 0.8 veya üstü kullanmıyorsanız, TortoiseHg tarafından kullanılacaksa, dizin farklarını destekleyebildiğini unutmayın.

Joel ayrıca bir çözüm sundu İşte Mercurial'ı Cygwin altında çalıştırmanız durumunda

WinMerge komut satırının açıklaması burada . Özet:

  • /e WinMerge'i tek bir Esc tuşuna basarak kapatmanızı sağlar
  • /x kapattığınızda WinMerge (bir bilgi iletişim kutusu görüntülendikten sonra) aynı dosyaların karşılaştırmasını başlatmak
  • /u WinMerge'in En Son Kullanılanlar (MRU) listesine iki yol (sol veya sağ) eklemesini engeller
  • /wl sol tarafı salt okunur olarak açar

TortoiseHG kullanmıyorum, Cygwin altında Mercurial kullanmıyorum. Mercurial installer varsayılan komut satırını kullanıyorum mercurial.berkwood.com . Çözümünüz, 'hg winmerge & lt; file & gt;' yazabildiğim anlamında çalıştı. onunla önceki sürüm arasındaki farkı görmek için, ancak 'hg diff & lt; file & gt;' hala aynı (oldukça çirkin) fark aracı getiriyor. Yine de, hiç yoktan iyidir.
quanticle

Bence bu cevap Mercurial.ini'yi TortoiseHg dizininde düzenleyeceğinizi varsayıyor (örneğin, C: \ Program Files \ TortoiseHg). Birini Mercurial dizininde düzenlerseniz (örneğin, C: \ Program Files \ Mercurial) o zaman işe yaramaz (en azından benim için yapmadı).
Ashley Davis

ayrıca c: \ Program Files (x86) \ WinMerge \ WinMergeU.exe
Avram

Config dosyasında WinMerge yolunun etrafına tırnak koymamaya dikkat edin, yoksa çalışmaz.
Drealmer

7

Benim için nasıl işliyor - kaplumbağa kuşağından başka saf bir komut satırı

İlk önce, dosyayı düzenleyin (64bit pencerelerin altında)

C: \ Program Files (x86) \ Mercurial \ Mercurial.ini

[extensions]
; must uncomment this line
extdiff =

[extdiff]
; i'm using winmerge unicode version
cmd.winmerge = C:\Program Files (x86)\WinMerge\WinMergeU.exe
; it explains winmerge command line parameters here: http://winmerge.org/docs/manual/CommandLine.html
opts.winmerge = /r /e /x /u /wl

Sonra, "hg diff ..." yerine "hg winmerge ..." kullanabilirsiniz.


Arka planda winmerge komutunu çalıştırmanın yararlı olduğunu düşünüyorum. Böylece mesaj gönderilirken değişikliklere bakabilir ve ayrıca komut satırında hangi dosyaların değiştiğine ilişkin istatistikleri görüntüleyebilirim. Bunu yapmak için, start / b hg winmerge & lt; NEWLINE & gt; hg diff --stat
danio

3

Daha önce verilen cevaplar bana istenen etkiyi vermiyor. Düzeltmelerin farklı ve yerinde düzenlemeler yapmasına izin vermezler (Kutudan TortoiseSVN için de aynı işlevi kastediyorum). Bunu yapmak için, bu bölümü mercurial.ini dosyasına ayrıca ekledim:

[merge-tools]
winmerge.regkey=Software\Thingamahoochie\WinMerge\
winmerge.regname=Executable
winmerge.priority=-10
winmerge.args=/e /x /wl /ub /dl other /dr local $other $local $output
winmerge.fixeol=True
winmerge.checkchanged=True
winmerge.gui=True
winmerge.diffargs=/r /e /x /ub /wl /dl '$plabel1' /dr '$clabel' $parent $child
winmerge.diff3args=
winmerge.dirdiff=True

Bu alınan http://blog.stevehorn.cc/blog/easy-mercurial-visual-diff-between-two.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.