2009-03-26 25 views
17

Có cách nào để kiểm soát hoàn toàn thủ công đối với quy trình hợp nhất trong Mercurial không?Hoàn toàn thủ công Mercurial merge

Tôi muốn có thể chọn hướng hợp nhất tệp, ngay cả đối với tệp không có xung đột. Có thể không?

Trả lời

20

Tắt "hợp nhất trước" trong cấu hình hợp nhất của bạn. Sau đó, mọi thứ được tính là xung đột và bạn có thể chọn "trái" hoặc "phải" cho mỗi và mọi thay đổi tệp.

[merge-tools] 
mymergetool.premerge = False 

từ MergeToolConfiguration on the Mercurial wiki.

+0

Nowaways bạn có thể thử 'hg merge --tool internal: prompt' –

+0

Có lẽ nó sẽ giúp ai đó bởi vì cũng không phải đoạn mã trên không dưới đây không giúp tôi. Tôi đã thêm '[ui] -> merge = internal: merge' và nó hoàn toàn vô hiệu hóa các công cụ giải quyết sau khi hợp nhất không thành công. Công cụ gây phiền toái [this] (http://i.stack.imgur.com/WNHq4.png) bắt đầu xuất hiện sau khi tôi cập nhật phiên bản Mercurial của mình. – ivkremer

2

Việc hợp nhất luôn được thực hiện giữa bản sửa đổi gốc của thư mục làm việc và bản sửa đổi khác, theo mặc định đầu còn lại trong kho lưu trữ của bạn.

Nếu bạn muốn kết hợp trong "hướng" khác mà bạn có thể thay đổi chi nhánh là trong thư mục làm việc của bạn bằng cách xem một phiên bản cụ thể:

hg update -r [rev] 

Để xem đứng đầu mà bạn có trong kho của bạn chạy lệnh sau:

hg heads 

Ngoài ra, nếu bạn đang sử dụng fetch bạn có thể sử dụng tùy chọn --switch-parent sáp nhập theo một hướng khác:

hg fetch --switch-parent 

Bạn không thể thay đổi hướng hợp nhất trên cơ sở từng tệp khi Mercurial làm việc với các thay đổi ảnh hưởng đến toàn bộ kho lưu trữ không bằng cách theo dõi các thay đổi đối với các tệp riêng lẻ như CVS.

+1

Tôi thấy anh ấy đã chấp nhận câu trả lời của bạn, nhưng tôi không nghĩ đó thực sự là những gì anh ấy hỏi. Bạn đã nói với anh ta cách chọn "trái" hoặc "phải" cho tất cả các cuộc xung đột, nhưng nếu anh ta muốn trộn và kết hợp, anh ta cần phải tắt nội dung "hợp nhất trước" trước khi khởi chạy công cụ hợp nhất của mình. –

12

Chỉnh sửa tập tin cấu hình của bạn theo cách này:

[ui] 
merge = kdiff3 

[merge-tools] 
kdiff3.premerge = false 
kdiff3.args=--L1 base --L2 local --L3 other $base $local $other -o $output 

Theo mặc định nó đặt đối số --auto trên KDiff3 hòa trộn tự động để KDiff3.

+0

+1 vì tôi đang đấu tranh với điều này trong nửa giờ và bạn là người đầu tiên đề xuất xóa đối số '--auto'. Nó sẽ đưa tôi mãi mãi để tìm thấy nó (như tôi đã bỏ lỡ nó tất cả các lần khác tôi cần một hợp nhất thủ công). –

1

Trong trường hợp KDiff3, điều quan trọng là thêm tùy chọn --qall (xem http://kdiff3.sourceforge.net/doc/documentation.html). Sẽ có sự hợp nhất tự động của một số xung đột mà không có khóa này (như "Tự động giải quyết xung đột đơn giản" từ "Hợp nhất" menu). Do đó, dòng lệnh phù hợp hơn là:

[ui] 
merge = kdiff3 

[merge-tools] 
kdiff3.premerge = False 
kdiff3.args=$base $local $other -o $output --L1 base --L2 local --L3 other --qall 
Các vấn đề liên quan