2009-01-08 12 views
117

Sử dụng TortoiseSVN, tôi cần thực hiện các thay đổi mà tôi đã thực hiện trong một chi nhánh và sau đó hợp nhất chúng với Trunk.Sử dụng TortoiseSVN để hợp nhất các thay đổi nhánh với thân cây

Tôi là nhà phát triển duy nhất trong dự án này, vì vậy tôi biết thân cây không thay đổi. Tôi đang học SVN để cuối cùng nhóm của tôi có thể sử dụng nó.

Về cơ bản, tôi muốn thân mình trông giống hệt nhánh cây.

Trong thế giới pre-svn, tôi sẽ chỉ sao chép các tệp trong thư mục chi nhánh của tôi, xóa các tệp trong thư mục trunk và sau đó sao chép nhánh vào trong thân cây.

Trong TortoiseSVN, tôi đã thử "Tích hợp lại một nhánh", "Hợp nhất một loạt các sửa đổi" và "Hợp nhất hai cây khác nhau". Không có gì thực sự thay đổi thân cây. Tôi cũng đã thử phân nhánh trên thân cây. Điều này cho tôi một lỗi, nói rằng thân cây đã tồn tại.

Tại thời điểm này, tôi chỉ là một nút vô tình làm hỏng hy vọng điều gì đó hoạt động.

Trả lời

155

Trong trường hợp của bạn:.

  1. Chuyển bản sao làm việc để thân cây (SVN Switch)
  2. Merge các chi nhánh vào bản sao làm việc (SVN Merge)
  3. Hãy chắc chắn rằng mọi thứ vẫn biên dịch và các công trình
  4. Commit bản sao làm việc (thân cây)
  5. Cân nhắc giết chết Chi nhánh

Trong một môi trường đội tôi sẽ đề nghị bạn lần đầu tiên kết hợp các thay đổi mới nhất từ ​​thân cây trong chi nhánh của bạn, hãy chắc chắn rằng tất cả mọi thứ biên dịch và các công trình, sau đó làm các bước trên (mà sẽ là tầm thường từ bạn đã thử nghiệm các thay đổi).


Cập nhật

Trong bước 5, tôi đề cập đến giết chết các chi nhánh. Đó là bởi vì một khi một chi nhánh từ một tính năng nằm trong thân cây, nó sẽ được coi là một phần của thân cây. Trong trường hợp đó nhánh phải bị giết để không ai tiếp tục làm việc đó. Nếu cần sửa đổi lớn đối với tính năng đó, bạn nên tạo một nhánh mới cho điều đó.

Các nhánh duy nhất mà tôi không giết là các nhánh bảo trì và giải phóng, trừ khi một phiên bản cụ thể không còn được hỗ trợ.

Không có vấn đề gì, bạn luôn có quyền truy cập vào mọi bản sửa đổi để tiêu diệt chi nhánh chỉ được sử dụng để ngăn các nhà phát triển khác phát triển trên nhánh chết.

+3

Đây là câu trả lời hay nhất cho đến nay, nhưng có thể chính xác hơn một chút: 1. Chuyển bản sao làm việc thành thân (SVN Switch), 2. Hợp nhất nhánh vào bản sao làm việc (SVN Merge), 3. Biên dịch copy, 4. Cam kết bản sao làm việc (Cam kết SVN). ... –

+0

Cảm ơn, tôi đã làm điều này và nó hoạt động như tôi muốn. Tôi cũng có thể gắn thẻ mã bằng các bước tương tự này. Ở bước 5, lý do để giết chi nhánh là gì? Là nó để tiết kiệm không gian? –

+0

được thực hiện và thực hiện, nhờ phản hồi – mbillard

6

Trước tiên hãy chuyển bản sao làm việc của bạn sang thân cây. Sau đó thực hiện một loạt các bản sửa đổi, từ chi nhánh đến thân cây. Khi hộp thoại này hoàn tất, các khác biệt sẽ bị treo trong các bản sao làm việc của bạn. Bạn sẽ cần phải cam kết chúng giống như bạn đã thực hiện các thay đổi trên bản sao làm việc của bạn theo cách thủ công.

Trong cách sử dụng của tôi, nó điển hình hơn để giữ cho thân cây chạy và quay cành tại thời điểm xây dựng. Vì vậy, sau đó hợp nhất duy nhất tôi từng cần làm là để có được một lỗi sửa chữa ra khỏi thân cây và đặt nó trên các chi nhánh xây dựng mới nhất và tái phát hành chi nhánh đó. Cách dễ nhất cho tôi để làm điều này, vì như bạn đã tìm thấy sáp nhập là vụng về lúc tốt nhất. Là để giữ cho các chi nhánh mới nhất và thân kiểm tra ra vào máy của tôi, và theo đúng nghĩa đen sao chép các tập tin từ thân cây đến chi nhánh và kiểm tra cả trong

+2

Cần chú ý nhiều đến việc "sao chép" các tệp. Sử dụng một cái gì đó giống như xuất khẩu của TortoiseSVN để tránh làm hỏng các thư mục svn ẩn. – Milimetric

10

Tôi nghĩ trong TortoiseSVN 1.8.5, Hợp nhất | Hợp nhất hai cây khác nhau sẽ hoạt động. Khi bạn hợp nhất một chi nhánh/thẻ trở lại thân cây, thủ thuật là URL Từ là thân cây và Thẻ là thẻ/nhánh. Lạ lùng nhưng đúng.

Nguồn: Merging

Đối với thư mục mà không trong bản sao làm việc của bạn, nhưng là trong thẻ/chi nhánh bạn có thể nhận được các lỗi xung đột. Chỉ chấp nhận xung đột và làm lại việc hợp nhất.

+2

Hãy cho tôi một thời gian để tìm ra rằng To and From là phản trực quan :) –

+0

Sau khi bạn làm theo hướng dẫn trên trang web tortoisesvn, hãy chắc chắn sau khi hợp nhất, bạn cam kết thân cây mà không sửa đổi bất cứ điều gì. Tôi đã thử bỏ chọn một vài điều mà tôi không muốn cam kết đã gây ra một số cảnh báo cam kết không đệ quy. Ngoài ra, hãy xem xét xóa nhánh như hướng dẫn nói. –

2

Tôi đang sử dụng TortoiseSVN 1.9.3, Xây dựng 27038.

Làm theo các bước dưới đây để hợp nhất chi nhánh vào thân cây.

1) Nhấp chuột phải vào bản sao làm việc thân và chọn tùy chọn bên dưới.

enter image description here

2) Trong trường hợp của Chi nhánh sáp nhập vào thân cây chọn tùy chọn thứ hai như hình dưới đây và bấm vào kế tiếp

enter image description here

3) Trong trường Từ: lĩnh vực nhập URL thư mục đầy đủ của Thân cây. Điều này nghe có vẻ sai, nhưng hãy nhớ rằng thân cây là điểm bắt đầu mà bạn muốn thêm các thay đổi nhánh. Trong trường Đến: nhập URL thư mục đầy đủ của nhánh tính năng.

enter image description here

4) Nhấn tiếp theo và làm bài kiểm tra kết hợp

enter image description here

5) Nếu thử nghiệm kết hợp thành công sau đó bấm vào nút Merge.

6) Sau khi hợp nhất thành công, hãy cam kết các thay đổi trên thân cây.

+0

Tôi vẫn chưa thuyết phục tại sao TO và FROM được chuyển đổi, bạn có thể giải thích thêm về nó không? BTW cảm ơn đây là câu trả lời hay nhất – behzad