2008-09-04 25 views

Trả lời

-1

Tôi đoán có một công cụ CLI cho p4merge (mà tôi không biết gì về).

Tôi đã viết một bài viết trên blog về việc sử dụng Changes.app, và một số công cụ GUI khác với Mercurial: Using Mercurial with GUI Tools.

Về cơ bản, bạn cần phải biết những kỳ vọng kêu gọi của công cụ CLI đó tải lên các công cụ diff. IE, làm thế nào để làm cho nó tải dữ liệu từ một tập tin cụ thể, và làm thế nào để làm cho nó chờ đợi để thoát. Nên có đủ thông tin trên bài đăng để cung cấp cho bạn một số ý tưởng.

0

tôi sử dụng các bit sau của Python để khởi động p4merge và sử dụng nó với git:

#!/usr/bin/python 
import sys 
import os 

os.system('/Applications/p4merge.app/Contents/MacOS/p4merge "%s" "%s"' % (sys.argv[2], sys.argv[5])) 

Tôi không chắc chắn như thế nào vẻ lanh lợi để khởi động một công cụ diff bên ngoài mặc dù? Hy vọng rằng nó đơn giản như điều chỉnh 2 & 5 trong dòng trên để trở thành chỉ mục của các đối số cho 'đã đăng ký' và 'bản sao làm việc hiện tại'.

39

Nơi này vào ~/.hgrc của bạn (hoặc, tùy chọn, Mercurial.ini của bạn trên Windows):

[merge-tools] 
p4.priority = 100 
p4.premerge = True # change this to False if you're don't trust hg's internal merge 
p4.executable = /Applications/p4merge.app/Contents/MacOS/p4merge 
p4.gui = True 
p4.args = $base $local $other $output 

Yêu cầu Mercurial 1.0 hoặc mới hơn. Rõ ràng bạn sẽ cần cập nhật đường dẫn đến tệp thực thi đó để phản ánh nơi bạn đã cài đặt p4merge.

+3

Bạn nên sử dụng tệp 'launchp4merge' có thể thực thi thay vì 'p4merge'. Bằng cách này, nếu bạn phân biệt nhiều cặp tệp cùng một lúc, tất cả chúng sẽ xuất hiện trong một quá trình p4merge thay vì trong các quy trình riêng biệt. –

+1

Nếu bạn muốn sử dụng đề xuất của Adam, điều này phù hợp với tôi, hãy sử dụng dòng này thay cho dòng p4.executable ở trên: p4.executable = /Applications/p4merge.app/Contents/Resources/launchp4merge – warrenm

+0

Điều này không hoạt động với 'hg diff'. Bất kỳ đề xuất về cách làm cho p4merge trình soạn thảo khác biệt mặc định? – Tobber

15

Tôi đã tìm thấy Ry4an's answer là giải pháp tốt, ngoại trừ một vấn đề nhỏ, khiến p4merge (dưới mac os) trộn các đầu vào lệnh. làm tất cả mọi thứ được mô tả trong his answer và thêm dòng sau trong [sáp nhập công cụ] phần:

p4.args=$base $local $other $output 

Dòng này nói lanh lợi, trong đó thứ tự p4merge mất đối số của nó.

+3

Tôi đã chỉnh sửa câu trả lời của Ry4an để kết hợp sửa lỗi của bạn. Cảm ơn! –

3

Có thể vì tôi đang làm việc trên Windows, nhưng giải pháp được đề xuất không hiệu quả đối với tôi. Thay vào đó, những điều sau đây không hoạt động.

Trong bạn ~/.hgrc//Mercurial.ini, tôi áp dụng các thay đổi sau:

Enabled "ExtDiff" mở rộng:

[extensions] 
hgext.extdiff = 

Added P4 extdiff lệnh:

[extdiff] 
cmd.p4diff = p4merge 

Configured nó như là mặc định công cụ tìm kiếm hình ảnh khác:

[tortoisehg] 
vdiff = p4diff 
+2

Nếu bạn đi tuyến đường này, bạn chỉ cần gõ "hg p4" để thực hiện một sự khác biệt trực quan vì Mercurial chỉ yêu cầu bạn nhập số ký tự tối thiểu để phân biệt một lệnh. –

+0

Cảm ơn! Nó hoạt động trên Windows của tôi. – Regent

13

Tôi đang sử dụng phiên bản 1.0.1 của TortoiseHg và p4merge hoạt động ngoài hộp.

Chỉ cần vào Global Settings -> TortoiseHg và chọn các tùy chọn sau:

  • Ba chiều Merge Tool: p4merge
  • trực quan Diff Tool: p4merge

Screenshot

Các vấn đề liên quan