Jak korzystać z narzędzia do łączenia Xcode 4 w samodzielny sposób?

8

Czasami muszę wykonywać polecenia git w konsoli. Do tej pory do rozwiązywania konfliktów korzystałem z FileMerge Xcode 3 (możesz go otworzyć na konsoli za pomocą polecenia „opendiff”). Jeśli pojawiają się konflikty, używam „git scaletool”, który automatycznie wywołuje opendiff dla każdego z konfliktowych plików.

Jednak Xcode 4 zawiera znacznie ładniejszy komponent scaletool do rozwiązywania konfliktów. Uważam, że ten składnik jest częścią pliku wykonywalnego Xcode 4, a nie samodzielny. Pozwala na podgląd scalonego pliku i bezpośrednią edycję scalonego kodu indywidualnie dla każdego przypadku, co sprawia, że ​​łączenie złożonych konfliktów jest niezwykle szybkie i satysfakcjonujące.

Czy jest jakiś sposób na użycie narzędzia do łączenia Xcode 4 podczas wywoływania „git scaletool” z terminalu?

Nie mogę znaleźć pliku wykonywalnego dla tego narzędzia w pakiecie Xcode 4. Każdy hack, który to osiągnie, będzie mile widziany.

Ricardo Sanchez-Saez
źródło
W przypadku, gdy ktoś jest zainteresowany tą funkcją: wydaje się, że nie ma oficjalnego sposobu na zrobienie tego. Przesłałem prośbę o funkcję do Apple za pośrednictwem zgłoszenia błędów . Oto radar . Myślę, że to całkiem beznadziejne, ale nigdy nie wiadomo. Wszystkim zainteresowanym sugeruję wykazanie zainteresowania, przesyłając podobny raport o błędach do Apple.
Ricardo Sanchez-Saez

Odpowiedzi:

4

opendiff pobiera dwa argumenty nazwy pliku i parametr --ancestor z trzecią nazwą pliku, aby utworzyć różnicę trójdrożną, oraz parametr --merge, aby powiedzieć, że plik wyjściowy ma być użyty do rozwiązania konfliktu.

Więc idź:

[mergetool "opendiff"]
    cmd = "opendiff \"$LOCAL\"  \"$REMOTE\" \"$(if test -f \"$BASE\"; then echo \"--ancestor $BASE\"; else echo \"--ancestor $LOCAL\"; fi)\" --merge=\"$MERGED\" "
[merge]
    tool = opendiff

To powinno sprawić, że git użyje opendiff jako narzędzia scalania, gdy występują konflikty scalania.

To powiedziawszy, bardzo BARDZO wolę DiffMerge od SourceGear , który jest darmowym narzędziem do porównywania i porównywania , które robi znacznie lepsze, zorientowane na słowa, rozwiązywanie konfliktów. A w dokumentacji DiffMerge jest co powiedzieć gitowi, aby stał się domyślnym narzędziem do różnicowania i łączenia.

Dan Ray
źródło
Dzięki za próbę pomocy, ale Filemerge / opendiff nie jest tym, czego próbuję użyć. Próbowałem też DiffMerge (i DeltaWalker za to, co jest warte) i nie bardzo podoba mi się jego interfejs użytkownika. Kalejdoskop jest o wiele ładniejszy, ale nie zawiera scalania / edycji, a jedynie różnicę.
Ricardo Sanchez-Saez
Jestem prawie pewien, że Xcode 4 właśnie pakuje FileMerge. Odkryłem to samo rozczarowanie Kalejdoskopem.
Dan Ray
Powiedziałbym, że Xcode 4 nie zawija FileMerge. W FileMerge nie można edytować scalonego pliku, wystarczy wybrać stronę scalenia, której chcesz użyć dla każdego konfliktu. W Xcode 4 resolver z konfliktem ściągania możesz edytować sprzeczne linie i wykonać ściąganie z pliku dokładnie tak, jak chcesz. Poza tym interfejs użytkownika jest zupełnie inny niż Filemerge.
Ricardo Sanchez-Saez
1
Kaleidoscope 2 beta został niedawno wydany i umożliwia bezpośrednią edycję scalonych plików. Sprawdź to, jest całkiem dobre. Jedyne, czego brakuje, to inny kolor konfliktów (używa tego samego koloru jako podstawienia kodu w przypadku tych konfliktów).
Ricardo Sanchez-Saez,
Po kilku miesiącach używania Kalejdoskopu i pomimo tego, że ogólnie jest dobry, muszę powiedzieć, że nadal jest trochę wadliwy i / lub mylący, szczególnie w porównaniu z komponentem rozwiązywania konfliktów Xcode 4.x. Wciąż mam nadzieję, że Apple zrobi nieoczekiwane i zaimplementuje je jako samodzielne narzędzie, które można wywołać, powiedzmy, z Tower. ;-)
Ricardo Sanchez-Saez
0

Możesz edytować w (bardzo podstawowym) edytorze tekstu w FileMerge, otwierając okienko edytora - które jest domyślnie zamknięte. Aby otworzyć edytor w FileMerge, przeciągnij kropkę poniżej środkowej kolumny różnicowej w górę, aby otworzyć panel edytora.

Austin-Soft.com
źródło
-1

Skończyło się to dla mnie

[merge]
  tool = opendiff

[mergetool]
  keepBackup = false

[mergetool "opendiff"]
  cmd = "opendiff \"$LOCAL\" \"$REMOTE\" -merge \"$MERGED\""
macek
źródło
2
Opendiff jest tym, czego Xcode 3.x używał do scalania. Moje pytanie dotyczyło komponentu scalającego Xcode 4.x, który jest zupełnie innym narzędziem (pozwala na bezpośrednią edycję wynikowego pliku, w przeciwieństwie do opendiff / filemerge). W każdym razie dzięki.
Ricardo Sanchez-Saez,