Điều gì đang xảy ra ở đây là như sau: Bạn tạo một tệp mới trên thân cây của mình, sau đó bạn hợp nhất nó vào nhánh của bạn. Trong hợp nhất cam kết, tập tin này cũng sẽ được tạo trong chi nhánh của bạn.
Khi bạn hợp nhất nhánh của bạn trở lại vào thân cây, SVN sẽ cố gắng làm lại như sau: Nó thấy rằng một tệp đã được tạo trong nhánh của bạn và cố gắng tạo nó trong thân cây của bạn trong cam kết hợp nhất, nhưng nó đã tồn tại! Điều này tạo ra một cuộc xung đột cây.
Cách để tránh điều này, là thực hiện một sự hợp nhất đặc biệt, tái hòa nhập . Bạn có thể đạt được điều này với công --reintegrate
tắc.
Bạn có thể đọc về điều này trong tài liệu:
http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate
Tuy nhiên, khi hợp nhất nhánh của bạn trở lại thân cây, toán học cơ bản hoàn toàn khác. Chi nhánh tính năng của bạn bây giờ là một sự nhầm lẫn của cả thay đổi thân cây trùng lặp và thay đổi nhánh riêng, do đó, không có phạm vi sửa đổi tiếp giáp đơn giản nào để sao chép. Bằng cách chỉ định tùy chọn --reintegrate, bạn đang yêu cầu Subversion sao chép cẩn thận chỉ những thay đổi duy nhất cho chi nhánh của bạn. (Và trên thực tế, nó thực hiện điều này bằng cách so sánh cây thân cây mới nhất với cây nhánh mới nhất: sự khác biệt kết quả chính xác là sự thay đổi nhánh của bạn!)
Sau khi tái hòa nhập một chi nhánh, rất nên loại bỏ nó, nếu không, bạn sẽ tiếp tục nhận được treeconflicts bất cứ khi nào bạn hợp nhất theo hướng khác: từ thân cây đến chi nhánh của bạn. (Vì lý do chính xác giống như mô tả trước đây.)
Có một cách xung quanh điều này quá, nhưng tôi chưa bao giờ thử nó. Bạn có thể đọc nó trong bài viết này: Tái hòa nhập chi nhánh Subversion trong v1.6