Mercurial의 Diff 도구로 WinMerge를 사용하는 방법


19

Mercurial 분산 버전 제어 시스템을 사용하고 있으며 자체 내부 diff 도구 대신 WinMerge를 사용하도록 시스템을 구성하는 방법이 궁금합니다. 이미 병합 도구로 WinMerge를 가지고 있지만 다음과 같이 입력 할 때 Mercurial이 WinMerge를 사용하기를 원합니다.

hg diff

그렇게하는 방법이 있습니까, 아니면 Mercurial의 내부 diff 도구를 고수하고 있습니까?

답변:


24

로부터 TortoiseHg 자주 묻는 질문 :

이 라인을 개인 Mercurial.ini 파일에 추가하십시오

[확장명]
extdiff =

[익스트림]
cmd.winmerge = C : \ Program Files \ WinMerge \ WinMergeU.exe
opts.winmerge = / e / x / u / wl

이제 전역 설정 도구를 실행하십시오. TortoiseHg 탭의 Visual Diff Command 드롭 다운 목록에서 winmerge를 사용할 수 있습니다. winmerge를 선택하고 적용한 다음 닫습니다.

이 같은 접근 방식을 사용하여 거의 모든 시각적 차이 도구를 추가 할 수 있지만 릴리스 0.8 이상을 사용하지 않는 한 diff 도구가 TortoiseHg에서 사용하는 경우 diff 도구가 디렉토리 diff를 지원할 수 있어야합니다.

Cygwin에서 Mercurial을 실행할 경우를 대비 하여 Joel도 여기 에 솔루션을 제공했습니다 .

WinMerge 명령 줄에 대한 설명은 여기에 있습니다 . 요약:

  • /e Esc 키를 한 번 눌러 WinMerge를 닫을 수 있습니다
  • /x 동일한 파일의 비교를 시작할 때 정보 대화 상자를 표시 한 후 WinMerge를 닫습니다.
  • /u WinMerge가 경로 (왼쪽 또는 오른쪽)를 가장 최근에 사용한 (MRU) 목록에 추가하지 못하게합니다.
  • /wl 읽기 전용으로 왼쪽을 엽니 다

TortoiseHG를 사용하지 않으며 Cygwin에서 Mercurial을 실행하고 있지 않습니다. mercurial.berkwood.com 의 기본 명령 행 Mercurial 설치 프로그램을 사용하고 있습니다. 귀하의 솔루션은 'hg winmerge <file>'을 입력하여 이전 버전과의 차이점을 볼 수 있지만 'hg diff <file>'은 여전히 ​​똑같은 (더보기 흉한) diff를 나타냅니다. 수단. 여전히 아무것도 아닌 것보다 낫습니다.
Quanclecle

이 답변은 TortoiseHg 디렉토리에서 Mercurial.ini를 편집한다고 가정합니다 (예 : C : \ Program Files \ TortoiseHg). Mercurial 디렉토리 (예 : C : \ Program Files \ Mercurial)에서 디렉토리를 편집하면 작동하지 않습니다 (적어도 나에게는 적합하지 않음).
Ashley Davis

또한 c : \ Program Files (x86) \ WinMerge \ WinMergeU.exe
Avram

구성 파일에서 WinMerge 경로 주위에 따옴표를 넣지 마십시오. 그렇지 않으면 작동하지 않습니다.
Drealmer

7

이것이 나를 위해 작동하는 방법입니다-거북이 이외의 순수한 수은 명령 줄

먼저 파일을 편집하십시오 (64 비트 창에서)

C : \ Program Files (x86) \ Mercurial \ Mercurial.ini

[extensions]
; must uncomment this line
extdiff =

[extdiff]
; i'm using winmerge unicode version
cmd.winmerge = C:\Program Files (x86)\WinMerge\WinMergeU.exe
; it explains winmerge command line parameters here: http://winmerge.org/docs/manual/CommandLine.html
opts.winmerge = /r /e /x /u /wl

그런 다음 "hg diff ..."대신 "hg winmerge ..."를 사용할 수 있습니다.


커밋 메시지를 설정하는 동안 변경 사항을 볼 수 있고 명령 줄에서 변경된 파일에 대한 통계를 표시 할 수 있도록 백그라운드에서 winmerge를 실행하는 것이 유용하다는 것을 알았습니다. 이를 위해 start / b hg winmerge <NEWLINE> hg diff --stat
danio

3

글쎄, 앞서 주어진 대답은 나에게 원하는 효과를주지 않습니다. 그것들은 수정본을 수정하고 제자리에서 편집하는 것을 허용하지 않습니다 (나는 TortoiseSVN에 대해 동일한 기능을 상자에서 사용할 수 있음). 이를 위해 mercurial.ini에이 섹션을 추가했습니다.

[merge-tools]
winmerge.regkey=Software\Thingamahoochie\WinMerge\
winmerge.regname=Executable
winmerge.priority=-10
winmerge.args=/e /x /wl /ub /dl other /dr local $other $local $output
winmerge.fixeol=True
winmerge.checkchanged=True
winmerge.gui=True
winmerge.diffargs=/r /e /x /ub /wl /dl '$plabel1' /dr '$clabel' $parent $child
winmerge.diff3args=
winmerge.dirdiff=True

이것은 http://blog.stevehorn.cc/blog/easy-mercurial-visual-diff-between-two.html 에서 가져온 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.