2010-06-07 34 views
6

Cho phép nói rằng tôi có một chi nhánh tính năng có tên là "chi nhánh/BigFeature". Tôi muốn đẩy những thay đổi đó vào Trunk, thực hiện một số thay đổi đối với Trunk và hợp nhất lại tất cả trở lại nhánh "BigFeature" để phát triển có thể tiếp tục.Tại sao tôi nhận được xung đột khi Hợp nhất một nhánh vào Trunk và sau đó hợp nhất nó với chi nhánh?

bước của tôi đã đến:

  1. Merge những thay đổi mới nhất trong Trunk cho các chi nhánh/BigFeature. (Tortoise SVN -> Hợp nhất một loạt các phiên bản)

  2. Hợp nhất các thay đổi trong nhánh/BigFeature to Trunk. (Tortoise SVN -> Reintegrate a branch)

  3. Thực hiện một số thay đổi đối với Trunk.

  4. Hợp nhất các thay đổi trong Thân cây thành các nhánh/BigFeatures. (Tortoise SVN -> Hợp nhất một loạt các sửa đổi)

Vấn đề phát sinh trong bước 4. Khi tôi nhập lại vào BigFeature tôi nhận được tất cả các loại xung đột. Dường như có sự cố với các tệp được thêm ban đầu trong các nhánh/BigFeature nhưng đã được hợp nhất vào Trunk.

Thông điệp nó mang lại cho tôi là "The hợp nhất hoạt động cuối cùng cố gắng thêm các tập tin 'blah' nhưng nó đã được thêm vào tại địa phương.

này kinda có ý nghĩa bởi vì các tập tin ban đầu được thêm vào chi nhánh/chi nhánh BigFeature và sau đó sáp nhập vào Trunk.Nhưng tại sao không thể hợp nhất hoạt động nhận ra điều này? Tại sao nó lại trở thành một xung đột?

Cùng một loại lỗi xảy ra đối với các tệp đã xóa

Thao tác hợp nhất cuối cùng đã cố gắng xóa/di chuyển/đổi tên thư mục 'blah', nhưng nó đã bị xóa, di chuyển hoặc đổi tên cục bộ.

Cảm ơn sự giúp đỡ của bạn.

+5

SVN sáp nhập nói chung không làm việc tốt. – alternative

+1

Có lựa chọn thay thế nào không? – Justin

+5

Bất cứ ai nói svn merge không hoạt động không làm đúng. Quan điểm thay đổi khái niệm của Svn không phải là tốt nhất (các SCM sau này như git đã gần nó hơn một chút), nhưng nó không đúng ở chỗ người ta không thể kết hợp với subversion hoặc thậm chí quản lý một codebase phức tạp với việc hợp nhất sắp tới trong và ngoài. – Ether

Trả lời

7

Thật không may đó là sự thiếu hụt của svn, cách nó được xây dựng.

Các bước trong svn phải trông như thế này:

1. (not modified) Merge the latest changes in Trunk to branches/BigFeature. (Tortoise SVN -> Merge a range of revisions) 
2. (not modified) Merge the changes in branches/BigFeature to Trunk. (Tortoise SVN -> Reintegrate a branch) 

2a. Delete branch branches/BigFeature 
2b. Create branch branches/BigFeature from current trunk 

3. (not modified) Make some changes to Trunk. 
4. (not modified) Merge the changes in Trunk to branches/BigFeatures. (Tortoise SVN -> Merge a range of revisions) 

chi nhánh SVN không còn sử dụng được sau khi một hoạt động tái tích.

Cập nhật: có second way, thay vì xóa chi nhánh.

2a. on branch: 
    $ svn update 
    Updated to revision X 
    $ svn merge --record-only -c X ^/trunk 
    $ svn commit -m "Block revision X from being merged into the branch." 

tôi không biết thủ thuật này, tôi đã học nó nhờ vào câu hỏi của bạn: D

+0

Thật không may. Nhưng hey ít nhất nó không chỉ cho tôi :) Và công việc này xung quanh nên làm các trick. – Justin

+0

Không nhất thiết phải xóa và tạo lại các nhánh. Bạn chỉ cần xây dựng lệnh hợp nhất đúng cách để không hợp nhất lại mọi thứ bạn đã hợp nhất trước đây. – Ether

+0

Bạn có thể cung cấp một số thông tin chi tiết về cách thực hiện điều đó không? Tôi ok với dòng cmd nhưng rõ ràng sẽ thích nếu Tortoise SVN cung cấp một phương tiện để làm điều này. – Justin

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