Sử dụng TortoiseSVN làm cách nào để hợp nhất các thay đổi từ thân cây sang một nhánh và ngược lại?


132

Tôi đã đọc về phân nhánh / hợp nhất với Subversion 1.5 bằng cách sử dụng Kiểm soát phiên bản tuyệt vời và miễn phí với sách Subversion . Tôi nghĩ rằng tôi hiểu cách sử dụng ứng dụng khách dòng lệnh Subversion để thực hiện các hành động mà tôi cần thường xuyên nhất, đó là:

Cập nhật chi nhánh với các thay đổi từ Trunk

Từ thư mục làm việc của chi nhánh chạy:

hợp nhất svn http://svn.myurl.com/proj/trunk

Hợp nhất chi nhánh vào thân cây

Từ thư mục làm việc của thân cây chạy:

hợp nhất svn --reintegrate http://svn.myurl.com/proj/branches/mybranch

Tuy nhiên, chúng tôi đang sử dụng TortoiseSVN 1.5 làm giao diện cho Subversion. Tôi muốn biết cách tốt nhất để thực hiện các thao tác này với TortoiseSVN. Hộp thoại mới cung cấp ba tùy chọn khác nhau trên menu chính.

  1. Hợp nhất một loạt các sửa đổi
  2. Tái hòa nhập một chi nhánh
  3. Hợp nhất hai cây khác nhau

Từ những gì tôi có thể thu thập, TortoiseSVN luôn thực thi svn với cú pháp sau.

hợp nhất svn [--dry-run] --force From_URL @ revN To_URL @ revM PATH

Ngoài ra, tái hòa nhập một chi nhánh thường thất bại với thông báo nói rằng một số mục tiêu chưa được hợp nhất và vì vậy nó không thể tiếp tục, vì vậy tôi phải sử dụng tùy chọn # 3.

Câu hỏi của tôi là:

  1. Làm cách nào để sử dụng TortoiseSVN 1.5 để hợp nhất các thay đổi từ thân cây sang một nhánh?
  2. Làm cách nào để sử dụng TortoiseSVN 1.5 để hợp nhất nhánh vào thân cây, có và không có phương thức tái hòa nhập?
  3. Tôi nên sử dụng tùy chọn nào ở trên cho mỗi tùy chọn và tại sao?

BIÊN TẬP

Qua thử nghiệm "chạy khô" tôi đã thấy rằng hoạt động Subversion dòng lệnh

hợp nhất svn http://svn.myurl.com/proj/trunk

tương tự như tùy chọn # 1 (Hợp nhất một phạm vi sửa đổi) trong TortoiseSVN, miễn là tôi để trống phạm vi sửa đổi.


Các liên kết không được tìm thấy! = /
Leonardo Costa

Câu trả lời:


28

Hành vi phụ thuộc vào phiên bản mà kho lưu trữ của bạn có. Subversion 1.5 cho phép 4 loại hợp nhất:

  1. hợp nhất nguồnURL1 [@N] sourceURL2 [@M] [WCPATH]
  2. hợp nhất nguồnWCPATH1 @ N nguồnWCPATH2 @ M [WCPATH]
  3. hợp nhất [-c M [, N ...] | -r N: M ...] NGUỒN [@REV] [WCPATH]
  4. hợp nhất - hủy bỏ NGUỒN [@REV] [WCPATH]

Subversion trước 1.5 chỉ cho phép 2 định dạng đầu tiên.

Về mặt kỹ thuật, bạn có thể thực hiện tất cả các kết hợp với hai phương thức đầu tiên, nhưng hai phương thức cuối cùng cho phép theo dõi hợp nhất của lật đổ 1.5.

Các tùy chọn của TortoiseSVN hợp nhất một phạm vi hoặc sửa đổi bản đồ thành phương pháp 3 khi kho lưu trữ của bạn là 1,5+ hoặc phương thức một khi kho lưu trữ của bạn cũ hơn.

Khi hợp nhất các tính năng với một nhánh phát hành / bảo trì, bạn nên sử dụng lệnh 'Hợp nhất một phạm vi sửa đổi'.

Chỉ khi bạn muốn hợp nhất tất cả các tính năng của một nhánh trở lại một nhánh mẹ (thường là thân cây), bạn nên xem xét bằng cách sử dụng lại 'Tái hòa nhập một nhánh'.

Và lệnh cuối cùng - Ghép hai cây khác nhau - chỉ hữu ích khi bạn muốn bước ra ngoài hành vi phân nhánh bình thường. (Ví dụ: So sánh các bản phát hành khác nhau và sau đó hợp nhất differenct với một chi nhánh khác)


ai đó có thể vui lòng giúp tôi với stackoverflow.com/questions/51657636/ . Đây là một câu hỏi quan trọng đối với nhóm của chúng tôi, chúng tôi cần một số ý tưởng xung quanh nó.
mắt cá chân

249

Tôi không thể làm theo đúng các câu trả lời khác, đây là hướng dẫn thêm về người giả ...

Bạn có thể làm điều này một trong hai cách để đi trunk -> branchhoặc branch -> trunk. Trước tiên tôi luôn trunk -> branchkhắc phục mọi xung đột ở đó và sau đó hợp nhất branch -> trunk.

Hợp nhất thân cây vào một nhánh / thẻ

  1. Kiểm tra chi nhánh / thẻ
  2. Nhấp chuột phải vào thư mục gốc của chi nhánh | Rùa SVN | Hợp nhất ...
  3. Hợp nhất Loại: Hợp nhất một loạt các phiên bản | Nhấn tiếp' nhập mô tả hình ảnh ở đây
  4. Hợp nhất phạm vi sửa đổi: Chọn URL của thư mục trung kế mà bạn đã sao chép vào nhánh / thẻ. Nhập các bản sửa đổi để hợp nhất hoặc để trống trường để hợp nhất tất cả các bản sửa đổi | nhấn tiếp' nhập mô tả hình ảnh ở đây
  5. Tùy chọn hợp nhất: Tôi chỉ để những cái này làm mặc định | nhấp vào 'Hợp nhất' nhập mô tả hình ảnh ở đây
  6. Điều này sẽ hợp nhất các sửa đổi vào chi nhánh / thẻ đã kiểm tra
  7. Sau đó, cam kết các thay đổi được hợp nhất với nhánh / thẻ

4
Tôi đã bỏ qua "Phạm vi sửa đổi để hợp nhất" và thực hiện "Kiểm tra hợp nhất". Đó là những gì tôi cần: phạm vi được tự động đặt cho tôi (từ khi chi nhánh được hoàn thành đến lần sửa đổi cuối cùng trong chi nhánh)
Lian

Câu trả lời tuyệt vời - súc tích và dễ làm theo. Nó hoạt động với tôi, nhưng khi tôi chỉ muốn hợp nhất một tệp cấu hình, vì một số lý do tôi phải thực hiện hai lần. Bây giờ tất cả đều tốt. Chúc mừng
Cầu thủ chạy cánh

@Lian Tôi đã làm điều tương tự để hợp nhất từ ​​thân cây thành chi nhánh; để trống phạm vi sửa đổi nếu bạn muốn phiên bản mới nhất của các tệp từ thân cây được hợp nhất với các tệp nhánh.
Cầu thủ chạy cánh

2
Phiên bản hiện tại của Rùa SVN hiện có tùy chọn hợp nhất tất cả các sửa đổi thay vì để trống phạm vi Sửa đổi trong bước 4.
Không xác định Dev

1
@Onkar Một số xung đột sẽ hầu như luôn xảy ra. Nếu bạn đã có hai chi nhánh, ví dụ trunkbranch, sau đó đảm bảo rằng bạn nhập bất kỳ thay đổi từ trunkđến branchnhư sẽ sớm càng tốt tránh xung đột càng nhiều càng tốt. Điều này sẽ có nghĩa là khi bạn kết hợp branchđể trunkkhông nên có bất kỳ xung đột.
icc97

12

Bạn nên sử dụng "hợp nhất một phạm vi sửa đổi".

Để hợp nhất các thay đổi từ trung kế thành một nhánh, bên trong bản sao làm việc của chi nhánh, chọn "hợp nhất phạm vi sửa đổi" và nhập URL trung kế và các phiên bản bắt đầu và kết thúc để hợp nhất.

Tương tự theo cách ngược lại để hợp nhất một nhánh trong thân cây.

Về cờ --reintegrate, hãy kiểm tra hướng dẫn tại đây: http://tortoisesvn.net/docs/release/TortoirSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate


1

Hãy xem svnmerge.py . Đó là dòng lệnh, không thể được rùaSVN gọi, nhưng nó mạnh hơn. Từ câu hỏi thường gặp :

Lật đổ truyền thống sẽ cho phép bạn hợp nhất các thay đổi, nhưng nó không "nhớ" những gì bạn đã hợp nhất. Nó cũng không cung cấp một cách thuận tiện để loại trừ một tập hợp thay đổi khỏi bị sáp nhập. svnmerge.py tự động hóa một số công việc và đơn giản hóa nó. Svnmerge cũng tạo một thông điệp cam kết với các thông điệp tường trình từ tất cả những thứ mà nó hợp nhất.


6
svnmerge.py được phát triển trên Subversion 1.4 trở về trước. Subversion 1.5 giới thiệu theo dõi hợp nhất trong sản phẩm cốt lõi.
Bert Huijben

0

Shift-Right Nhấp vào thư mục và chọn TortoiseSVN -> Hợp nhất tất cả

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.