Cách đơn giản nhất để thực hiện phân nhánh và hợp nhất bằng TortoiseSVN là gì?


Câu trả lời:


185

Giả sử thư mục công việc của bạn đang hoạt động từ thân cây:

Nhấp chuột phải vào "thư mục công việc gốc" (thuật ngữ này luôn đề cập đến Windows Explorer) và thực hiện svn updateđể cập nhật thư mục công việc của bạn lên thân cây mới nhất.

Hãy chắc chắn rằng những gì bạn có là ổn định.

Nhấp chuột phải vào thư mục gốc và thực hiện svn commitđể đảm bảo rằng mọi thay đổi cục bộ được cam kết với thân cây.

Nhấp chuột phải vào thư mục công việc gốc và thực hiện svn repo-browser.

Nếu bạn chưa có thư mục nhánh trong kho lưu trữ: nhấp chuột phải vào thư mục ngay phía trên thư mục thân và thực hiện "tạo thư mục" và tạo thư mục nhánh (ví dụ: nếu thân cây của bạn có http://myserver/svn/MyRepository/MyProj/Trunk, hãy tạo http://myserver/svn/MyRepository/MyProj/Branches).

Nhấp chuột phải vào thư mục thân cây và thực hiện Copy To:và đặt tên thư mục mới cho chi nhánh của bạn. Ví dụ: http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch. (Đừng lo lắng rằng điều này sẽ lãng phí nhiều dung lượng ... đây được gọi là "bản sao rẻ tiền" ... nó không thực sự sao chép nội dung của các tệp trừ khi chúng thay đổi).

Đóng trình duyệt Repo.

Nhấp chuột phải vào thư mục gốc của bạn và thực hiện: svn switchvà chọn tên thư mục của nhánh mới của bạn (ví dụ http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch:). Để mọi thứ khác ở chế độ mặc định.

Bây giờ làm việc trên chi nhánh của bạn. Khi bạn đến các mốc quan trọng, hãy nhấp chuột phải vào thư mục gốc công việc và thực hiện svn commitđể cam kết với chi nhánh của bạn. (Điều này sẽ không được nhìn thấy trong thân cây).

Nếu những người khác đang làm việc trên cùng một nhánh, hãy thực hiện định kỳ svn updatetừ thư mục công việc gốc. Điều này sẽ cập nhật từ chi nhánh. (Nó sẽ KHÔNG nhận được bất kỳ bản cập nhật nào từ thân cây.)

Cho dù những người khác có đang làm việc trên cùng một nhánh hay không, bạn nên định kỳ hợp nhất các thay đổi từ thân để đảm bảo rằng nhánh của bạn sẽ không quá khó để tích hợp sau này. Để thực hiện hợp nhất định kỳ: nhấp chuột phải vào thư mục gốc và thực hiện svn merge. Chọn "Hợp nhất một loạt các bản sửa đổi". Trong "URL để hợp nhất từ", chọn thân cây (ví dụ http://myserver/svn/MyRepository/MyProj/Trunk:). Để trống Revision Range và để mọi thứ khác yên. Bấm tiếp. Để mọi thứ yên và nhấp vào Merge . Hãy chắc chắn rằng mọi thứ vẫn hoạt động ... hãy sửa nó nếu không. Khi bạn đã hài lòng, hãy thực hiện thường xuyên svn updatetừ thư mục gốc của công việc để cập nhật từ chi nhánh (điều này là cần thiết ngay cả khi bạn là người duy nhất làm việc trên chi nhánh, để đáp ứng SVN). Sau đó làmsvn commitđể cam kết các thay đổi của thân cây đã hợp nhất đối với nhánh. Bạn có thể lặp lại bước này định kỳ bao nhiêu lần tùy ý.

Khi chi nhánh của bạn đã sẵn sàng tích hợp, hãy thực hiện bước trên lần cuối và thực hiện thử nghiệm cuối cùng của bạn. Thực hiện cam kết cuối cùng với chi nhánh.

Nhấp chuột phải vào thư mục gốc của bạn và thực hiện một thao tác khác svn switch, lần này là chuyển sang thân cây (ví dụ http://myserver/svn/MyRepository/MyProj/Trunk:). Điều này về cơ bản sẽ có tác dụng "hoàn tác" tất cả công việc bạn đã làm trên chi nhánh của mình, nhưng đừng lo lắng ... bạn sẽ lấy lại được công việc của mình. (Nó cũng sẽ báo cáo rất nhiều cập nhật cho các tệp bạn không thay đổi trong nhánh của mình, nhưng đây chỉ là những thay đổi "thuộc tính SVN" ... đừng lo lắng về chúng.)

Nhấp chuột phải vào thư mục công việc của bạn và thực hiện svn merge. Lần này, chọn "Tái hòa nhập chi nhánh". Đối với URL, hãy đặt trong nhánh của bạn (ví dụ http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch:). Để yên phần còn lại và nhấp vào Tiếp theo. Để mọi thứ yên và nhấp vào Merge . Bây giờ bạn có tất cả công việc bạn đã làm trên chi nhánh của mình, cũng như công việc cập nhật từ thân cây.

Làm một bài kiểm tra cuối cùng. Mọi thứ sẽ hoạt động vì đây phải là cùng một tập hợp các tệp bạn đã có trong lần kiểm tra cuối cùng của bạn trong nhánh. Nhấp chuột phải vào thư mục công việc gốc của bạn và thực hiện svn commit. Cam kết mọi thứ, ngay cả các tệp mà bạn không làm việc trên chi nhánh của mình (chúng chỉ có các thay đổi "thuộc tính SVN" nhưng việc cam kết chúng sẽ giúp SVN theo dõi tất cả các bản sửa đổi).

Thân cây bây giờ có tất cả công việc chi nhánh của bạn cũng như tất cả công việc đã được thực hiện trong thân cây khi bạn đang làm việc trên chi nhánh của mình và tất cả đều hoạt động. Ngoài ra, SVN có toàn bộ lịch sử của tất cả các tệp, ngay cả các bản sửa đổi đã được kiểm tra khi bạn đang làm việc trên chi nhánh của mình.

Tùy chọn: vào Repo-browser, nhấp chuột phải vào thư mục nhánh của bạn (ví dụ http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch:) và thực hiện "xóa". Điều này sẽ không ảnh hưởng đến thân cây, và bạn không cần nhánh cây nữa. (Ngay cả khi bạn thực sự hoang tưởng, đừng lo lắng, vì bạn thậm chí có thể lấy lại nhánh đã xóa của mình từ trình duyệt Repo bất kỳ lúc nào nếu bạn thực sự cần.)

Xin vui lòng bình luận!


7
725 từ là đơn giản?
D'Arcy Rittich 22/09/09

37
Tôi đã nói "đơn giản nhất" không phải "đơn giản" :)
JoelFan 22/09/09

1
Cảm ơn! Bạn đã là người đầu tiên thực sự cảm ơn tôi (mặc dù đã có upvotes thích :)
JoelFan

1
Theo như tôi hiểu, việc hợp nhất sẽ không hoạt động nhiều lần từ cùng một nhánh.
JoelFan

1
Đây thực sự là một trong rất hữu ích
Avil
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.