Konfiguracja Mercurial-FileMerge Dla Apple Mac OS X

Jak skonfigurować program FileMerge firmy Apple, aby działał jako narzędzie merge firmy Mercurial? Mam swoje .konfiguracja pliku hgrc w moim katalogu domowym i po prostu chcę skonfigurować FileMerge jako program scalający.

Author: marc_s, 2009-08-20

5 answers

Jak opisano w Hg wiki , to działało dla mnie z różnymi wersjami hg:

  • Stwórz skrypt gdzieś w swoim $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 "$@" | cat
  • Dodaj do swojego ~/.hgrc następujące sekcje:
[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żesz użyć go jako $hg opendiff.

 28
Author: Ned Deily,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 07:37:19

Aktualizacja: Mercurial wiki ma stronę o 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 opisana na stronie mergeprogram Mercurial wiki. Krótka wersja jest typowymi wyborami:

Ustaw zmienną środowiskową HGMERGE tak, aby wskazywała na żądane narzędzie scalania.

Lub Dodaj do swojego .hgrc:

 [ui]
 merge = /path/to/toolname

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

Kluczem jest to, że narzędzie scalające musi weź trzy argumenty: podstawową wersję, lokalne zmiany i zmiany z drugiej gałęzi. Pierwsza konfiguracja służy do określenia Narzędzia, a druga do określenia sposobu pobierania argumentów.

 2
Author: quark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 07:36:23

Żadna z dołączonej dokumentacji nie działała dla mnie bez modyfikacji; ostatecznie to, co zrobiłem, to kombinacja oficjalnych instrukcji i "używanie Vima jako programu filemerge" z https://www.mercurial-scm.org/wiki/TipsAndTricks . stworzyłem skrypt opendiff-w opisany w tej odpowiedzi (choć nazwałem go hgvdiff) i umieściłem w moimhgrc:

[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 to umiarkowanie funkcjonalne, choć czasami wykonuje kontrolę dla czy plik został zmieniony przedwcześnie, co prowadzi do kilku:

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

Kiedy zamykasz FileMerge.

 1
Author: Arkaaito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 07:36:05

Oto Jak to naprawiłem:

Utworzony {[4] } wypełniony:

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

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

Następnie edytowane ~/.hgrc z następującym dodatkiem:

[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 następujące polecenie, aby sprawdzić, czy działa: hg opendiff

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

exception raised trying to run FileMerge: launch path not accessible

Aby to naprawić uruchomiłem następujące polecenie:

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

To powinno teraz działać i otworzyć się FileMerge.

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

Jeśli używasz TorsoiseHg dla komputerów Mac, jedyną rzeczą, którą musisz teraz zrobić, aby pracować z FileMerge, to wybrać filemerge z wykrytych narzędzi merge/diff, gdy pojawi się okno Rozwiąż konflikt i wybrać narzędzie Rozwiąż.

Tutaj wpisz opis obrazka

Mam nadzieję, że to pomoże.
 0
Author: kernix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-24 19:27:20

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
 -1
Author: wadesworld,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 07:37:03