2013-02-20 25 views
16

Trong repo mercurial, nhánh "mặc định" đã giảm rất lạc hậu đến thời điểm không còn hợp lý để thay đổi từ "phát triển" ", một chi nhánh được đặt tên có phiên bản ứng dụng được triển khai mới nhất.Mercurial - đóng nhánh mặc định và thay thế bằng một nhánh có tên là mặc định mới

Thay vì hợp nhất phát triển thành mặc định, làm thế nào tôi có thể đóng nhánh mặc định hiện tại và sau đó tạo nhánh mặc định mới sử dụng đầu phát triển?

Tôi đã nhìn thấy một số câu hỏi và câu trả lời khác tương tự, có lẽ giống nhau, nhưng tôi vẫn gặp sự cố khi hiểu cách thức hoạt động này.

Cảm ơn!

+0

cách khác, bạn có thể 'update' để mặc định và' merge' với phát triển, nhưng trước khi cam kết hợp nhất bạn làm cho nó một bản sao chính xác của phát triển. – Edward

+0

Điều đó thực sự hiệu quả, nhưng làm cách nào tôi có thể làm điều đó? – kgx

Trả lời

24

Nếu default đã tách ra hơi từ develop và bạn muốn default là chính xác giống như develop sau khi hợp nhất, bạn cần một bộ hơi khác nhau của lệnh từ những gì Edward đã cho bạn (điều này cũng sẽ làm việc ở đâu develop là một hậu duệ trực tiếp của default).

hg update -C default 
hg -y merge --tool internal:fail develop 
hg revert --all --no-backup -r develop 
hg resolve --all --mark 
hg commit -m "merge updating default to current develop" 

Điều này có nghĩa là mọi xung đột sẽ dẫn đến việc hợp nhất chưa được giải quyết. Sau đó, bạn hoàn nguyên mọi thứ giống như trên chi nhánh develop (không có bản sao lưu để bạn không nhận được nhiều tệp .orig còn sót lại).

+0

Tim hoạt động này hoàn hảo. Cảm ơn bạn đã giúp đỡ! Bằng cách đi qua cả hai câu trả lời của bạn cũng như Edward của tôi chỉ học được rất nhiều về hg. – kgx

+0

Đây là giải pháp tốt hơn! Cảm ơn! – Edward

+0

Tuyệt vời, cảm ơn –

2

Dựa trên nhận xét của bạn rằng nó không phải là một yêu cầu để đóng chi nhánh, đây là một loạt các bước mà sẽ nhận được các chi nhánh mặc định trong giai điệu với các chi nhánh phát triển:

  1. hg update default
  2. hg merge --tool internal:other - sáp nhập trong khi đặc quyền cho các chi nhánh phát triển
  3. hg diff -r develop - so sánh với phát triển để đảm bảo rằng bạn có một bản sao chính xác
  4. hg commit -m "merge updating default to current develop"

Sau khi hoàn tất, bạn nên có một bản mặc định cập nhật phản chiếu nhánh phát triển, đưa chúng trở lại đồng bộ.

+0

Edward cảm ơn bạn đã trả lời. Tôi đã thử nghiệm quy trình của bạn và nhận được kết quả sau trên bước 2: hủy bỏ: nhánh 'mặc định' có một đầu - vui lòng hợp nhất với một số lần hiển thị rõ ràng. Trong repo của tôi có nhiều hơn sau đó 2 người đứng đầu do một số hoạt động khác được đặt tên chi nhánh. Dù sao, giải pháp ban đầu này rõ ràng đã có quả bóng lăn nên cảm ơn một lần nữa.Ngoài ra hg diff -r là lệnh hữu ích mà tôi chưa từng thấy trước đây. – kgx

0

Tôi nghĩ tốt hơn nên sử dụng khái niệm trong Tortoisehg để giải thích cách hoạt động của khái niệm đó.

  • hg update để phát triển chi nhánh
  • chọn người đứng đầu chi nhánh mặc định, và chọn kết hợp với địa phương
  • sau đó chọn loại bỏ tất cả thay đổi từ mục tiêu hợp nhất (khác), mặc định như vậy được sáp nhập vào phát triển mà không ảnh hưởng đến phát triển
  • sau đó chi nhánh để mặc định của người đứng đầu phát triển, sử dụng hg branch default, khởi động lại mặc định một lần nữa