Xcode 4 mergetool을 독립형으로 사용하는 방법은 무엇입니까?


8

때로는 콘솔에서 git merge를 만들어야합니다. 지금까지는 충돌을 해결하기 위해 Xcode 3의 FileMerge를 사용했습니다 ( 'opendiff'명령을 사용하여 콘솔에서 열 수 있음). 충돌이 표시되면 충돌하는 각 파일에 대해 opendiff를 자동으로 호출하는 'git mergetool'을 사용합니다.

그러나 Xcode 4는 충돌을 해결하기 위해 훨씬 멋진 mergetool 구성 요소를 제공합니다. 이 구성 요소는 독립형이 아닌 Xcode 4 실행 파일의 일부라고 생각합니다. 병합 된 파일을 미리보고 사례별로 병합 된 코드를 직접 편집 할 수 있으므로 복잡한 충돌을 매우 빠르고 만족스럽게 병합 할 수 있습니다.

터미널에서 'git mergetool'을 호출 할 때 Xcode 4 mergetool을 사용하는 방법이 있습니까?

Xcode 4 번들에서이 도구에 대한 실행 파일을 찾을 수 없습니다. 이것을 달성하는 해킹은 환영받을 것입니다.


다른 사람이이 기능에 관심이있는 경우 공식적인 방법이없는 것 같습니다. bugreport를 통해 Apple에 기능 요청을 제출했습니다 . 여기의 레이더 . 나는 그것이 절망적이라고 생각하지만, 당신은 결코 모른다. 관심있는 사람은 Apple에 유사한 버그 보고서를 제출하여 관심을 보이는 것이 좋습니다.
Ricardo Sanchez-Saez

답변:


4

opendiff는 두 가지 파일 이름 인수와 세 번째 파일 이름을 가진 --ancestor 매개 변수를 사용하여 3 방향 diff를 생성하고 --merge 매개 변수를 사용하여 충돌 해결에 사용할 출력 파일을 지정합니다.

그래서 가십시오 :

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

병합 충돌이있을 때 git을 병합 도구로 opendiff를 사용해야합니다.

즉, 나는 SourceGear의 DiffMerge를 훨씬 선호합니다 . 이는 훨씬 더 나은 단어 중심의 충돌 해결을 수행하는 무료 diff 및 3-way-merge 도구입니다. 그리고 DiffMerge의 문서에는 git에게 기본 diffing 및 merging 도구로 만들 것을 지시하는 내용이 있습니다.


도와 주셔서 감사하지만 Filemerge / opendiff는 내가 사용하려는 것이 아닙니다. 또한 DiffMerge (및 가치가있는 DeltaWalker)를 시도했지만 UI가별로 마음에 들지 않습니다. 만화경은 더 멋지지만 병합 / 편집 기능은 없으며 차이점 만 표시합니다.
Ricardo Sanchez-Saez

Xcode 4가 FileMerge를 래핑하고 있다고 확신합니다. 만화경에 대해서도 같은 실망을 발견했습니다.
Dan Ray

Xcode 4가 FileMerge를 래핑하지 않는다고 말합니다. FileMerge에서는 병합 된 파일을 편집 할 수 없으며 각 충돌에 사용할 병합 측면을 선택하기 만하면됩니다. Xcode 4 풀 충돌 해결 프로그램에서 충돌하는 줄을 편집하고 원하는 방식대로 파일을 가져올 수 있습니다. 게다가 UI는 Filemerge와 완전히 다릅니다.
Ricardo Sanchez-Saez

1
Kaleidoscope 2 베타는 최근에 출시되었으며 병합 된 파일을 인라인 편집 할 수 있습니다. 확인해보세요, 아주 좋습니다. 누락 된 유일한 것은 충돌의 다른 색상입니다 (코드 대체와 동일한 색상을 사용함).
Ricardo Sanchez-Saez

만화경을 몇 개월 사용한 후에도 일반적으로 훌륭하지만 Xcode 4.x 충돌 해결 구성 요소와 비교할 때 여전히 버그가 많고 혼란 스럽습니다. 여전히 애플이 예기치 않은 일을하고 그것을 타워에서 호출 할 수없는 독립형 툴로 구현하기를 바라고있다. ;-)
Ricardo Sanchez-Saez 2016 년

0

기본적으로 닫혀있는 편집기 패널을 열어 FileMerge의 (매우 기본적인) 텍스트 편집기에서 편집 할 수 있습니다. FileMerge에서 편집기를 열려면 가운데 diff 열 아래의 점을 위로 드래그하여 편집기 패널을여십시오.


-1

이것은 나를 위해 일하고 결국

[merge]
  tool = opendiff

[mergetool]
  keepBackup = false

[mergetool "opendiff"]
  cmd = "opendiff \"$LOCAL\" \"$REMOTE\" -merge \"$MERGED\""

2
Opendiff는 Xcode 3.x가 병합에 사용한 것입니다. 내 질문은 완전히 다른 도구 인 Xcode 4.x 병합 구성 요소에 관한 것입니다 (opendiff / filemerge와 달리 결과 파일을 인라인 편집 할 수 있음). 어쨌든 고마워
Ricardo Sanchez-Saez
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.