Jak korzystać z WinMerge jako narzędzia Diff dla Mercurial

19

Korzystam z rozproszonego systemu kontroli wersji Mercurial i zastanawiam się, jak mogę go skonfigurować, aby używał WinMerge zamiast własnego wewnętrznego narzędzia do porównywania. Mam już WinMerge jako narzędzie do scalania, ale chcę, aby Mercurial używał WinMerge podczas pisania:

hg diff

Czy istnieje jakikolwiek sposób, czy utknąłem w wewnętrznym narzędziu różnicowym Mercurial?

kwantowy
źródło

Odpowiedzi:

24

Z FAQ TortoiseHg :

Dodaj te linie do osobistego pliku Mercurial.ini

[rozszerzenia]
extdiff =

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

Teraz uruchom narzędzie Ustawienia globalne. Na karcie TortoiseHg powinieneś zobaczyć winmerge dostępny na liście rozwijanej dla polecenia Visual Diff. Wybierz winmerge, zastosuj, a następnie zamknij.

Tego samego podejścia można użyć do dodania prawie dowolnego wizualnego narzędzia do porównywania, ale należy pamiętać, że twoje narzędzie do porównywania musi obsługiwać różnice w katalogu, jeśli ma być używane przez TortoiseHg, chyba że używasz wersji 0.8 lub nowszej.

Joel przedstawił tu również rozwiązanie na wypadek, gdybyś prowadził Mercurial pod Cygwinem.

Wyjaśnienie argumentów wiersza poleceń WinMerge tutaj . Streszczenie:

  • /e umożliwia zamknięcie WinMerge jednym naciśnięciem klawisza Esc
  • /x zamyka WinMerge (po wyświetleniu okna dialogowego z informacjami) po uruchomieniu porównania identycznych plików
  • /u zapobiega dodawaniu przez WinMerge ścieżki (lewej lub prawej) do listy ostatnio używanych (MRU)
  • /wl otwiera lewą stronę jako tylko do odczytu
cschol
źródło
Nie używam TortoiseHG, ani nie uruchamiam Mercurial pod Cygwin. Korzystam z domyślnego wiersza polecenia instalatora Mercurial z mercurial.berkwood.com . Twoje rozwiązanie działało, w tym sensie, że jestem w stanie wpisać „hg winmerge <plik>”, aby zobaczyć różnicę między nim a poprzednią wersją, ale „hg diff <plik>” nadal wywołuje ten sam (raczej brzydki) diff narzędzie. Mimo to jest lepsze niż nic.
kwantowo
Myślę, że ta odpowiedź zakłada, że ​​będziesz edytować plik Mercurial.ini w katalogu TortoiseHg (np. C: \ Program Files \ TortoiseHg). Jeśli edytujesz ten w katalogu Mercurial (np. C: \ Program Files \ Mercurial), to nie zadziała (przynajmniej nie dla mnie).
Ashley Davis
także c: \ Program Files (x86) \ WinMerge \ WinMergeU.exe
Avram
Upewnij się, że nie umieszczasz cudzysłowów wokół ścieżki do WinMerge w pliku konfiguracyjnym, inaczej nie zadziała.
Drealmer
7

Tak to dla mnie działa - czysta rtęciowa linia poleceń inna niż tortoisehg

Najpierw edytuj plik (pod 64-bitowym oknem)

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

Następnie możesz użyć „hg winmerge ...” zamiast „hg diff ...”

renfeng
źródło
Uważam, że przydatne jest uruchamianie programu Winmerge w tle, aby móc przeglądać zmiany podczas ustawiania komunikatu zatwierdzenia, a także wyświetlać statystyki dotyczące zmian plików w wierszu poleceń. Aby to zrobić, umieść plik wsadowy w katalogu mercurial, który zawiera start / b hg winmerge <NEWLINE> hg diff --stat
danio
3

Cóż, odpowiedzi podane wcześniej nie dają pożądanych efektów. Nie pozwalają na różnicowanie wersji i edycję na miejscu (mam na myśli tę samą funkcjonalność, która jest dostępna dla TortoiseSVN z pudełka). Aby to zrobić, dodałem dodatkowo do mercurial.ini tę sekcję:

[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

To jest wzięte z http://blog.stevehorn.cc/blog/easy-mercurial-visual-diff-between-two.html

alehro
źródło