Cách sử dụng WinMerge làm công cụ Diff cho Mercurial


19

Tôi đang sử dụng hệ thống kiểm soát phiên bản phân tán Mercurial và tôi tự hỏi làm thế nào tôi có thể định cấu hình nó để sử dụng WinMerge thay vì công cụ tìm khác biệt bên trong của chính nó. Tôi đã có WinMerge làm công cụ hợp nhất, nhưng tôi muốn Mercurial sử dụng WinMerge khi tôi gõ:

hg diff

Có cách nào để làm điều đó không, hay tôi bị mắc kẹt với công cụ tìm khác biệt bên trong của Mercurial?

Câu trả lời:


24

Từ Câu hỏi thường gặp về Rùa :

Thêm những dòng này vào tệp Mercurial.ini cá nhân của bạn

[tiện ích mở rộng]
extdiff =

[extdiff]
cmd.winmerge = C: \ Tệp chương trình \ WinMerge \ WinMergeU.exe
opts.winmerge = / e / x / u / wl

Bây giờ hãy chạy công cụ Cài đặt Toàn cầu. Trên tab TortoiseHg, bạn sẽ thấy winmerge có sẵn trong danh sách thả xuống cho Visual Diff Command. Chọn winmerge, áp dụng, sau đó đóng.

Cách tiếp cận tương tự này có thể được sử dụng để thêm gần như bất kỳ công cụ tìm khác biệt trực quan nào, nhưng lưu ý rằng công cụ tìm khác biệt của bạn phải có khả năng hỗ trợ các khác biệt thư mục nếu nó được sử dụng bởi TortoiseHg, trừ khi bạn đang sử dụng phiên bản 0.8 trở lên.

Joel cũng cung cấp một giải pháp ở đây trong trường hợp bạn chạy Mercurial dưới Cygwin.

Giải thích về dòng lệnh WinMerge lập luận ở đây . Tóm lược:

  • /e cho phép bạn đóng WinMerge chỉ bằng một lần bấm phím Esc
  • /x đóng WinMerge (sau khi hiển thị hộp thoại thông tin) khi bạn bắt đầu so sánh các tệp giống hệt nhau
  • /u ngăn WinMerge thêm đường dẫn (trái hoặc phải) vào danh sách Được sử dụng gần đây nhất (MRU)
  • /wl mở phía bên trái dưới dạng chỉ đọc

Tôi không sử dụng TortoiseHG, tôi cũng không chạy Mercurial dưới Cygwin. Tôi đang sử dụng trình cài đặt Mercurial dòng lệnh mặc định từ mercurial.berkwood.com . Giải pháp của bạn đã hoạt động, theo nghĩa là tôi có thể nhập 'hg winmerge <file>' để thấy sự khác biệt giữa nó và phiên bản trước, nhưng 'hg diff <file>' vẫn hiển thị cùng một diff (khá xấu xí) dụng cụ. Tuy nhiên, nó tốt hơn không có gì.
tử

Tôi nghĩ rằng câu trả lời này giả định rằng bạn sẽ chỉnh sửa Mercurial.ini trong thư mục TortoiseHg (ví dụ: C: \ Program Files \ TortoiseHg). Nếu bạn chỉnh sửa thư mục trong thư mục Mercurial (ví dụ: C: \ Program Files \ Mercurial) thì điều này sẽ không hoạt động (ít nhất là nó không phù hợp với tôi).
Ashley Davis

cũng c: \ Tệp chương trình (x86) \ WinMerge \ WinMergeU.exe
Avram

Hãy chắc chắn rằng bạn không đặt dấu ngoặc kép trên đường dẫn tới WinMerge trong tệp cấu hình, nếu không nó sẽ không hoạt động.
Drealmer

7

Đây là cách nó hoạt động đối với tôi - dòng lệnh thuần khiết không phải là rùa.

Đầu tiên, chỉnh sửa tệp (dưới cửa sổ 64 bit)

C: \ Tệp chương trình (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

Sau đó, bạn có thể sử dụng "hg winmerge ..." thay vì "hg diff ..."


Tôi thấy hữu ích khi chạy winmerge trong nền để tôi có thể xem xét các thay đổi trong khi đặt thông báo cam kết và cũng hiển thị số liệu thống kê về các tệp đã thay đổi trên dòng lệnh. Để thực hiện việc này, hãy đặt một tệp bó trong thư mục đồng bóng có chứa start / b hg winmerge <NEWLINE> hg diff --stat
danio

3

Chà, những câu trả lời đưa ra trước đó không mang lại cho tôi hiệu ứng mong muốn. Họ không cho phép chỉnh sửa khác biệt và chỉnh sửa tại chỗ (ý tôi là chức năng tương tự có sẵn cho TortoiseSVN từ hộp). Để làm điều đó tôi đã thêm vào mercurial.ini phần này:

[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

Điều này được lấy từ http://blog.stevehorn.cc/blog/easy-mercurial-visual-diff-b between-two.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.