program story

emerge 대신 git mergetool로 kdiff3을 구성하는 방법은 무엇입니까?

inputbox 2021. 1. 10. 17:13
반응형

emerge 대신 git mergetool로 kdiff3을 구성하는 방법은 무엇입니까?


Mac OSX Snow Leopard에 Git이 있고 emerge 대신 kdiff3를 사용하도록 병합 및 비교 도구를 편집하려고했습니다.

그러나 사용하려고 할 때 kdiff의 GUI가 시작되지 않고 cmd 기반 인터페이스가 유지됩니다.

gitconfig의 내 설정은 다음과 같습니다.

[merge]
     tool = kdiff3
[mergetool "kdiff3"]
    cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3
    args = $base $local $other -o $output
    trustExitCode = false
[diff]
tool = kdiff3
[difftool "kdiff3"]
cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3
args = $base $local $other -o $output
trustExitCode = false

분명히 빠진 것이 있지만 내가 뭘 잘못 했습니까?


최신 Git 버전에는를 기본적으로 지원 kdiff3하므로 일반 cmdargs 설정을 사용하여 수동으로 구성 할 필요가 없습니다 . 대신 다음을 수행하십시오.

$ git config --global merge.tool kdiff3

만약 kdiff3당신에없는 PATH의 환경도 수행합니다

$ git config --global mergetool.kdiff3.path /Applications/kdiff3.app/Contents/MacOS/kdiff3

이것은 git mergetool시작 kdiff3합니다. 참고 방법이 없습니다 하도록 구성 힘내에 자동으로 충돌이 수동으로 병합 한 후 병합 도구를 실행합니다.

Git이 kdiff3내부적으로 어떻게 호출되는지 실제로보고 싶다면 kdiff3대한 내장 mergetool 구성을 살펴보십시오 .

편집 : 들어 너머 4 비교 이제 맥 OS X를 지원, 단순히 교환 kdiff3으로 bc3(예, "3")와 위의 라인의 경로를 조정합니다. Git 2.2.0부터 버전 번호에 대해 신경 쓰지 않아도되도록 bc별칭 으로 사용할 bc3수 있습니다.


최신 Git 버전에는 kdiff3에 대한 기본 지원이 있습니다.

예,하지만 Git 2.12 (2017 년 1 분기)에서만 이러한 기본 제공 도구가 종료 코드를 신뢰할 수 있습니다.

참조 2,967,284 커밋 , 7c10605 커밋 에 의해 (2016년 11월 29일) 데이비드 폭스를 ( davvid) .
(의해 병합 Junio C 하마노 - gitster-c4a44e2 커밋 2016 16 십이)

mergetool: mergetool.$tool.trustExitCode내장 도구에 대한 영광

기본 제공 병합 도구에는 병합의 성공 또는 실패를 결정하기 위해 도구의 종료 코드를 신뢰할 수 있는지 여부에 대한 하드 코딩 된 가정이 포함되어 있습니다.
종료 코드를 신뢰할 수없는 도구 check_unchanged()는 해당 merge_cmd()기능 에 대한 호출을 포함합니다 .

이 문제는 내장 도구에 대해 trustExitCode 구성이 적용되지 않는다는 것입니다.

기본 제공 도구를 교육하여 trustExitCode구성 을 준수합니다 .

(참조 kdiff3)

도구의 종료 코드를 신뢰할 수 없을 때 run_merge_cmd()호출을 담당하도록 확장하십시오 check_unchanged(). 더 이상 호출 할 책임이 없으므로 스크립틀릿에서 호출을
제거 check_unchanged()합니다.

참조 URL : https://stackoverflow.com/questions/9776434/how-to-configure-kdiff3-instead-of-emerge-as-a-git-mergetool

반응형