2008-10-26 22 views
59

Mỗi khi tôi thực hiện 'hg diff file.ext', tôi sẽ sử dụng ứng dụng khác của giao diện điều khiển. Có cách nào để thay đổi điều đó không? Tôi không thể tìm thấy tài liệu tham khảo trong tài liệu Mercurial (Tôi không nói về hợp nhất!). Tôi muốn sử dụng Kdiff3 hoặc WinMerge (Tôi đang sử dụng Windows).Có thể thay đổi công cụ khác biệt mặc định trong Mercurial không?

Trả lời

67

Tôi đã giải quyết điều này bằng cách sử dụng phần mở rộng tích hợp Mercurial ... Tôi chỉ cần thêm dòng sau vào Mercurial.ini (trên thư mục Mercurial):

[extensions] 
hgext.extdiff= 

[extdiff] 
cmd.vdiff = kdiff3 

Khi tôi muốn sử dụng KDiff3 thay vì diff tôi chỉ phải sử dụng:

hg vdiff file.ext 
+2

Ngoài ra, bạn có thể chuyển tùy chọn cho công cụ difftool, ví dụ: '[extdiff] opts.vdiff = 2>/dev/null' – ACyclic

+0

Câu trả lời này (và những người khác dưới đây cho đến nay) làm cho một công cụ khác có sẵn, nhưng không thay đổi" công cụ khác biệt mặc định ". Tức là, nó không thay đổi công cụ nào được sử dụng khi bạn gọi 'hg diff' - hoặc quan trọng hơn khi bạn sử dụng' hg log -p' để xem toàn bộ tập hợp các thay đổi. Tôi rất muốn tìm cách để thực sự thay đổi mặc định? (ví dụ: để có thể sử dụng sự khác biệt dựa trên từ đôi khi xem xét một chi nhánh.) –

8

với cấu hình này

[extdiff] 
cmd.kdiff3 = 

tôi sử dụng lệnh này để xem diffs:

hg kdiff 

Điều này hiển thị cây thư mục có tất cả các tệp đã thay đổi. Bạn bấm vào một tệp để xem các khác biệt chỉ cho tệp. Bạn có thể thêm tham số tệp vào lệnh để chỉ xem một tệp.

Thông tin thêm here.

2

Tôi vừa gặp sự cố này vài phút trước; Tôi chỉ cần cài đặt nó và thêm đường dẫn của nó (mặc định là tại c: \ program files \ kdiff3) vào hệ thống PATH e.v. Khởi động lại cửa sổ của tôi để chọn con đường mới và "hg kdiff3" vừa hoạt động. Khi nó quay ra sau đây là trong cơ sở của tôi "mercurial.ini" tập tin, điều này cho phép kdiff3 để làm việc cho tất cả các repos hg trên hệ thống.

[extensions] 
hgext.extdiff = 

[extdiff] 
cmd.kdiff3 = 

[merge-tools] 
kdiff3.args = $base $local $other -o $output 
2

Nếu bạn đang tìm kiếm cái gì đó như git difftool, mà bạn không cần phải gõ tên tập tin và xem diff cho tất cả các tập tin thay đổi, bổ sung này để ~/.hgrc của bạn, và chạy hg difftool.

[extensions] 
extdiff = 

[extdiff] 
cmd.vimdiff = vimdiff 

[alias] 
difftool = !for file in $(hg status -n); do hg vimdiff $file; done 
Các vấn đề liên quan