2011-01-10 20 views
5

Tôi đang chơi xung quanh với Mercurial để xem nó có phù hợp để sử dụng trong công ty của chúng tôi hay không. Một trong những điểm bán hàng lớn của nó là khả năng hợp nhất. Vì vậy, tôi đã được chơi xung quanh với việc tạo ra các chi nhánh và sáp nhập chúng trở lại vào dòng mặc định. Thử nghiệm liên quan đến việc thêm một phương thức mới (methodA) vào một tệp Java duy nhất trong một nhánh và thêm một phương thức khác (phương thức B) vào một vị trí hoàn toàn khác trong cùng một tệp trong một nhánh khác.Sáp nhập với MercurialEclipse có xung đột được giải quyết tự động khi hợp nhất tại dòng lệnh

Khi tôi lần đầu tiên thử nó trong Eclipse bằng cách sử dụng tùy chọn nhóm-> hợp nhất tôi thấy rằng hợp nhất đầu tiên làm việc tốt (tức là nó thêm phương pháp A). Khi tôi cố gắng hợp nhất nhánh thứ hai bây giờ nó nói với tôi rằng có một xung đột mà tôi phải giải quyết. Điều này là rất không may khi tôi nghĩ rằng loại hợp nhất đơn giản này là chính xác loại điều Mercurial được cho là để xử lý một cách dễ dàng?

Tôi đã thử nghiệm chính xác cùng một lệnh bằng cách sử dụng dòng lệnh và lần này nó hoạt động tốt, tức là cả hai lần hợp nhất đều thành công mà không cần giải quyết xung đột. Nhìn vào giao diện điều khiển đầu ra trong eclipse nó được sử dụng lệnh sau để thực hiện việc hợp nhất:

hg -y merge --config ui.merge=internal:fail -r 611ca2784593525cdafd3082b17d3310037a5d58 -f 

trong khi đó khi tôi chạy nó bản thân mình từ dòng lệnh tôi chỉ cần làm:

hg merge -r 1234 

là việc sử dụng các hợp nhất chiến lược 'nội bộ: thất bại' gây ra điều này xảy ra trong Eclipse ?? Và nếu như vậy là nó có thể thay đổi hành vi mặc định để nó hoạt động theo cùng một cách như nó ở dòng lệnh?

+0

Đó là. Đây là một liên kết đến các mẹo và thủ thuật trên trang web HG. http://mercurial.selenic.com/wiki/TipsAndTricks#line-227 (Đó là mẹo 22 tại thời điểm viết bài). Tùy chọn duy nhất tôi thấy là sử dụng công cụ hợp nhất bên ngoài. Không có ý tưởng gì, vì tôi sử dụng TortoiseHG cho hầu hết các tương tác HG của tôi. Các phiên bản tiếp theo của TortoiseHG là REALLY tốt đẹp vì nó bây giờ là một bàn làm việc, do đó, có thể làm tất cả mọi thứ từ một giao diện người dùng. – Mikezx6r

Trả lời

8

internal:fail yêu cầu Mercurial không thử kết hợp gì cả. Xem the mercurial wiki để biết thêm chi tiết. Có vẻ như ai đó đã viết các plugin Eclipse cho mercurial cảm thấy họ có thể kiểm soát tốt hơn việc hợp nhất trong nhật thực bằng Mercurial tự động không hợp nhất tất cả mọi thứ và sau đó để làm việc hợp nhất trong Eclipse, và có lẽ gọi hg resolve --mark ... như các tập tin được sáp nhập.

Từ dòng lệnh Mercurial bạn nhận được cả hành vi premerge xử lý các lần hợp nhất nhỏ, và sau đó nếu vẫn xung đột việc triệu gọi công cụ từ MergeToolConfiguration của bạn có ưu tiên cao nhất cho loại tệp đó và có sẵn trên hệ thống cục bộ.

+5

Cảm ơn, tôi đã có thể nhận được các plugin Eclipse để thực hiện việc sáp nhập đơn giản một cách tự động bằng cách chọn hộp 'Sử dụng công cụ hợp nhất bên ngoài để giải quyết xung đột' trong các tùy chọn. Nó chỉ là một chút không may mà bạn cần phải sử dụng một công cụ hợp nhất bên ngoài chỉ để có được các plugin cũng thực hiện các hành vi premerge. Lý tưởng nhất là tôi muốn có được hành vi premerge, nhưng vẫn sử dụng Eclipse để giải quyết xung đột. – DaveJohnston

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