Gần đây đã có một số câu hỏi về việc bỏ qua các thay đổi khi duy trì các nhánh phát hành trong Mercurial. Ví dụ:Hậu quả của việc sử dụng ghép trong Mercurial
- Mercurial: Branch specific changes keep coming back after dummy merge
- Why are Mercurial backouts in one branch affecting other branches?
Kể từ khi nó được giới thiệu vào 2.0, tôi đã băn khoăn về việc sử dụng graft
để tránh vấn đề này. Với cây bản sửa đổi như thế này:
A---B---C---D---E---F---G---H---I---J
Giả sử chúng ta cần tạo nhánh phát hành bỏ qua thay đổi Evil E
.
hg update -r D
hg graft "F::J"
cho chúng tôi:
A---B---C---D---E---F---G---H---I---J
\
--F'--G'--H'--I'--J'
- Q1: Chuyện gì vừa xảy ra ở đây? Tôi có thể hiểu rằng
transplant
có thể đã tạo các bản vá lỗi ra khỏiF::J
và sau đó áp dụng chúng trênD
, nhưnggraft
được cho là sử dụng kết hợp 3 chiều thay vì bản vá. Vậy làm thế nào mà làm việc? Tại sao nó tốt hơn?
Cho phép nói bây giờ tôi sửa lỗi E
và hợp nhất vào nhánh phát hành của tôi.
--E2-----------------
/ \
A---B---C---D---E---F---G---H---I---J---M1
\ \
--F'--G'--H'--I'--J'---------M2--
M1 là hợp nhất thẳng; không có gì đặc biệt ở đó. M2 đang hợp nhất các chi nhánh có thay đổi "giống nhau" (hoặc ít nhất là tương đương).
- Q2: Liệu merge này chỉ là một bình thường 3-way merge sử dụng
D
,J'
vàM1
? - Q3: Đã lưu trữ/sử dụng thông tin bổ sung về hoạt động ghép để giúp hợp nhất không?
Và cuối cùng ...
- Q4: những vấn đề tiềm năng với một dòng chảy như thế này là gì?
Câu hỏi hay, câu trả lời tuyệt vời :). +1 cho cả hai! –
Cảm ơn Martin. Đó là một số suy nghĩ khá sôi nổi bởi bất cứ ai đến với điều đó. Tôi đã có ý tưởng, nhưng cần phải tìm ra trường hợp chung. Tôi đoán nó giữ không có vấn đề con đường giữa các nút bạn ghép vào/từ? –
@PaulS: Tôi nghĩ tất cả những gì bạn cần biết là ghép có thể sao chép các thay đổi xung quanh theo một cách mạnh mẽ hơn so với cấy ghép. Mạnh mẽ theo nghĩa là đổi tên được xử lý và bạn có thể giải quyết xung đột trong công cụ hợp nhất. Các chi tiết trong sự hợp nhất kỳ lạ, nhưng đó là hy vọng không cần thiết để hiểu cho việc sử dụng hàng ngày của ghép! :-) –