Tôi có một kho chứa Mercurial trung tâm có chứa một lịch sử nhân bản từ một kho lưu trữ SVN bằng cách sử dụng lệnh hgsubversion. Tôi đã kéo các cam kết bổ sung được thực hiện cho kho SVN kể từ khi repo hg ban đầu được nhân bản; chúng hiện đang ở nhánh mặc định.Sử dụng Mercurial, làm cách nào để thay đổi từ mặc định thành chi nhánh được đặt tên?
Tôi cũng có một chi nhánh được đặt tên. Tôi đã sao chép chi nhánh này (sử dụng hg clone -b mybranch
) vào hệ thống địa phương của tôi. Bây giờ tôi muốn lấy các thay đổi chỉ tồn tại trong mặc định và làm cho chúng có sẵn trong nhánh được đặt tên của tôi. Cách rõ ràng tôi thấy để làm điều đó là để làm một hg update mybranch
trên repo, sau đó hg merge default
và cam kết. Điều này có vẻ nguy hiểm - nếu tôi quên cập nhật trở lại mặc định sau khi hoàn tất, tất cả các lần kéo trong tương lai từ SVN sẽ kéo các thay đổi vào mybranch.
Tôi cũng đã xem xét rằng có lẽ tôi không nên quy định mybranch khi tôi nhân bản repo, nhưng nhân bản toàn bộ repo và chỉ cần cập nhật để mybranch tại địa phương. Vì vậy, tôi có thể kéo các thay đổi mặc định vào bản sao cục bộ của tôi và thực hiện hợp nhất ở đó.
Câu trả lời đúng ở đây là gì? Làm điều đó trên repo được chia sẻ và chỉ cần cẩn thận? Sao chép tất cả mọi thứ và quản lý các chi nhánh tại địa phương? Hoặc là có một giải pháp dễ dàng hơn tôi đang mất tích?
Hợp nhất có vẻ hoàn hảo, tôi thực sự không gặp vấn đề gì của bạn. * hgsubversion * dường như nhận biết về các nhánh SVN, vì vậy khi bạn kéo, nó sẽ đặt * SVN-trunk * thay đổi thành * mặc định * của bạn, và * SVN-mybranch * vào nhánh * mybranch * của bạn. Nếu bạn hợp nhất và ở lại * mybranch *, đầu của * mybranch * có thực sự thay đổi nếu phía từ xa có thay đổi chỉ thân cây không? Kéo nên hoạt động độc lập với bản sửa đổi bản sao làm việc của bạn. –
Mối quan tâm của tôi là thay đổi trực tiếp kho lưu trữ chính và các rủi ro liên quan. Tất nhiên, trong thế giới DVCS, tất cả các repos về cơ bản đều bình đẳng, vì vậy nó có lẽ chỉ là sự thiên vị VCS máy khách-máy chủ của tôi. –