2009-08-20 12 views

Odpowiedz

27

Jak opisano w hg wiki ten pracował dla mnie z różnymi wersjami GW:

  • utworzyć skrypt gdzieś w $PATH, powiedzmy w /usr/local/bin:
$ vim /usr/local/bin/opendiff-w 

#!/bin/sh 
# opendiff returns immediately, without waiting for FileMerge to exit. 
# Piping the output makes opendiff wait for FileMerge. 
opendiff "[email protected]" | cat 
  • Dodaj następujące sekcje do swojej ~/.hgrc:
[extdiff] 
cmd.interdiff = hg-interdiff 
cmd.opendiff = opendiff-w 

[merge-tools] 
filemerge.executable = opendiff-w 
filemerge.args = $local $other -ancestor $base -merge $output 

[extensions] 
extdiff = 

Teraz można go używać jako $hg opendiff.

+9

** Dla innych **:' opendiff-w' jest skrypt, który w końcu jest wymieniony w. plik hgrc (nie było to dla mnie zbyt oczywiste). Pierwszym blokiem kodu jest zawartość. Zmieniono również uprawnienia do dodawania execute 'chmod + x opendiff-w' –

+4

** Dla innych: ** Coś, co nie było dla mnie oczywiste: Teraz musisz uruchomić' op/hg '$ hg' (aby zobaczyć wyjście w' FileMerge '); '$ hg diff' nadal będzie wyświetlać dane wyjściowe w linii poleceń –

+5

** Dla innych: ** ... i musisz włączyć rozszerzenie extdiff w' ~/.hgrc' –

2

Aktualizacja: wiki Mercurial ma numer page about FileMerge. Przeczytaj to najpierw.

Nie próbowałem używać FileMerge, ale ogólny przegląd może pomóc. Większość tego, co chcesz wiedzieć, jest opisane na stronie wiki Mercurial: MergeProgram. Wersja krótka to typowe opcje:

Ustawienie zmiennej środowiskowej HGMERGE w celu wskazania żądanego narzędzia scalania.

lub dodać następujące wpisy do .hgrc:

[ui] 
merge = /path/to/toolname 

[merge-tools] 
toolname.args = $base $local $other 

Kluczem jest to, że narzędzie do seryjnej musi podjąć trzy argumenty: przegląd bazowej, lokalnych zmian, a zmiany w stosunku do innych gałęzi. Pierwsza konfiguracja służy do określania narzędzia, a druga do określania sposobu wykonywania argumentów.

0

Nie próbowałem, ale założę się, że musisz wskazać całą drogę do pliku wykonywalnego FileMerge, a nie tylko pakietu aplikacji.

Więc:

[ui] 
merge = /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge 
+0

Próbowałem tego, to nie takie proste. –

+0

próbowałem go jako dobrze, mam: 'FileMerge [51550: 30F] Nie można utworzyć połączenia dla root' – jammon

1

Żadna z powiązanych dokumentacji nie działała dla mnie bez modyfikacji; ostatecznie to, co zrobiłem, to połączenie the official instructions i "Używanie Vima jako programu do tworzenia plików" z https://www.mercurial-scm.org/wiki/TipsAndTricks. Stworzyłem skrypt opendiff-w opisanej w this answer (choć nazwałem go hgvdiff) i umieścić następujące do mojego .hgrc:

[extdiff] 
cmd.interdiff = hg-interdiff 
cmd.opendiff = /usr/local/bin/hgvdiff 

[merge-patterns] 
** = filemerge 

[merge-tools] 
filemerge.executable = /usr/local/bin/hgvdiff 
filemerge.args = $local $other -ancestor $base -merge $output 
filemerge.checkchanged = true 
filemerge.gui = true 

[extensions] 
extdiff = 

Jest umiarkowanie funkcjonalny, choć czasami wykonuje czek czy plik był zmieniono przedwcześnie, co doprowadziło do pęknięcia:

output file wwwroot/zoomingo/website/protected/messages/en/z.php appears unchanged 
was merge successful (yn)? n 

po zamknięciu FileMerge.

0

Oto jak naprawiłem go:

Utworzono /usr/local/bin/opendiff-w wypełniona:

#!/bin/sh 
# opendiff returns immediately, without waiting for FileMerge to exit. 
# Piping the output makes opendiff wait for FileMerge. 
opendiff "[email protected]" | cat 

Następnie prowadził polecenie: sudo chmod +x /usr/local/bin/opendiff-w

edytowane ~/.hgrc z następującym uzupełnieniem:

[extdiff] 
cmd.interdiff = hg-interdiff 
cmd.opendiff = opendiff-w 

[merge-tools] 
filemerge.executable = /usr/local/bin/opendiff-w 
filemerge.args = $local $other -ancestor $base -merge $output 

[extensions] 
extdiff = 

Następnie uruchomiłem obserwację ng polecenie, by sprawdzić pogoda to działało: hg opendiff

Jednak mam następujący błąd:

exception raised trying to run FileMerge: launch path not accessible 

W celu ustalenia, że ​​wpadłem następujące polecenie:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/ 

To powinno teraz działać i otwórz FileMerge.

============================================== ======================

Jeśli używasz TorsoiseHg na Macu, jedyną rzeczą, którą musisz zrobić teraz, aby pracować z FileMerge jest aby wybrać filemerge z narzędzi Detected merge/diff, kiedy pojawi się okno Resolve Conflict i wybierz narzędzie Resolve.

enter image description here

Nadzieja to pomaga.