Một trong các tính năng của hệ thống kiểm soát phiên bản là khả năng để cô lập những thay đổi trên một dòng phát triển riêng biệt. Dòng này được biết đến như một chi nhánh . Các chi nhánh thường được sử dụng để thử các chức năng mới mà không làm ảnh hưởng đến dòng chính của phát triển với các lỗi trình biên dịch và lỗi chương trình. Ngay sau khi các tính năng mới là đủ ổn định thì nhánh phát triển sẽ được sáp nhập trở lại vào các chi nhánh chính (thân cây).
Một tính năng khác của hệ thống kiểm soát phiên bản là khả năng để đánh dấu các phiên bản đặc biệt (ví dụ như một phiên bản phát hành), vì vậy bạn bất cứ lúc nào có thể tái tạo một b xây dựng hoặc môi trường nhất định. Quá trình này được gọi là gắn thẻ .
Subversion không có lệnh đặc biệt để phân nhánh hoặc gắn thẻ, nhưng sử dụng cái gọi là “ bản sao giá rẻ ” thay vào đó. Bản sao giá rẻ tương tự như liên kết cứng trong Unix, có nghĩa rằng thay vì làm một bản sao đầy đủ trong kho, một liên kết nội bộ được tạo ra, chỉ vào một cây / sửa đổi cụ thể. Kết quả là các chi nhánh và thẻ được tạo ra rất nhanh chóng, và hầu như không chiếm thêm không gian trong kho.
Nếu bạn đã nhập khẩu dự án của bạn với cấu trúc thư mục được đề nghị, việc tạo ra một chi nhánh hoặc phiên bản thẻ là rất đơn giản:
Chọn các thư mục trong bản sao làm việc của bạn mà bạn muốn sao chép vào một chi nhánh hoặc thẻ, sau đó chọn lệnh → .
The default destination URL for the new branch will be the source URL on which your working copy is based. You will need to edit that URL to the new path for your branch/tag. So instead of
http://svn.collab.net/repos/ProjectName/trunk
you might now use something like
http://svn.collab.net/repos/ProjectName/tags/Release_1.10
If you can't remember the naming convention you used last time, click the button on the right to open the repository browser so you can view the existing repository structure.
Khi bạn chỉ ra một URL đích, tất cả các thư mục từ đầu đến cuối phải tồn tại sẵn nếu không bạn sẽ gặp thông điệp lỗi. Trong ví dụ phía trên, URL http://svn.collab.net/repos/ProjectName/tags/
phải tồn tại để tạo thẻ Release_1.10
.
Tuy nhiên nếu bạn muốn tạo một nhánh/thẻ đến một URL có các thư mục trung gian chưa tồn tại bạn có thể chọn tùy chọn Tạo các thư mục trung gian
ở đáy hộp thoại. Nếu tùy chọn đó được kích hoạt, tất cả thư mục trung gian sẽ tự động được tạo.
Lưu ý rằng tùy chọn này được vô hiệu hóa theo mặc định để tránh lỗi đánh máy. Ví dụ, nếu bạn đánh vào URL là http://svn.collab.net/repos/ProjectName/Tags/Release_1.10
thay vì http://svn.collab.net/repos/ProjectName/tags/Release_1.10
, bạn sẽ nhận được một lỗi với tùy chọn bị vô hiệu hóa, nhưng với một tùy chọn có hiệu lực thì một thư mục Tags
sẽ tự động được tạo ra, và bạn sẽ có một thư mục Tags
và một thư mục tags
.
Bây giờ bạn phải chọn nguồn của bản sao. Ở đây bạn có ba lựa chọn:
Các chi nhánh mới được sao chép trực tiếp trong kho từ bản sửa đổi CHÍNH. Không có dữ liệu cần được chuyển từ bản sao làm việc của bạn, và chi nhánh được tạo ra rất nhanh chóng.
Chi nhánh mới được sao chép trực tiếp trong kho nhưng bạn có thể chọn một phiên bản cũ hơn. Điều này rất hữu ích nếu bạn quên làm thẻ khi bạn phát hành dự án của bạn vào tuần trước. Nếu bạn không thể nhớ số phiên bản, kích vào nút bên phải để hiển thị tường trình sửa đổi, và chọn số sửa đổi từ đó. Một lần nữa không có dữ liệu được chuyển từ bản sao làm việc của bạn, và chi nhánh được tạo ra rất nhanh chóng.
Chi nhánh mới là một bản sao giống hệt bản sao làm việc của bạn tại địa phương. Nếu bạn đã cập nhật một số tập tin đến một phiên bản cũ trong WC của bạn, hoặc nếu bạn đã thực hiện thay đổi cục bộ, đó là chính xác những gì đi vào bản sao. Đương nhiên loại thẻ phức tạp này có thể liên quan đến việc chuyển dữ liệu từ WC trở lại kho lưu trữ của bạn nếu nó không tồn tại ở đ.
Nếu bạn muốn bản sao làm việc của bạn được chuyển sang chi nhánh mới được tạo ra tự động, sử dụng hộp kiểm Chuyển bản sao làm việc cho chi nhánh / thẻ mới . Nhưng nếu bạn làm điều đó, trước tiên hãy chắc chắn rằng bản sao làm việc của bạn không có chứa sửa đổi. Nếu có, những sửa đổi sẽ được sáp nhập vào các chi nhánh WC khi bạn chuyển đổi.
If your working copy has other projects included with svn:externals
properties, those externals will be listed at the bottom of the branch/tag dialog. For each external, the target path and the source URL is shown.
If you want to make sure that the new tag always is in a consistent state, check all the externals to have their revisions pinned. If you don't check the externals and those externals point to a HEAD revision which might change in the future, checking out the new tag will check out that HEAD revision of the external and your tag might not compile anymore. So it's always a good idea to set the externals to an explicit revision when creating a tag.
The externals are automatically pinned to either the current HEAD revision or the working copy BASE revision, depending on the source of the branch/tag:
Bảng 4.1. Pinned Revision
Copy Source | Pinned Revision |
---|---|
bản sửa đổi CHÍNH trong kho | external's repos HEAD revision |
Sửa đổi cụ thể trong kho | external's repos HEAD revision |
Bản sao làm việc | external's WC BASE revision |
If a project that is included as an external has itself included externals, then those will not be tagged! Only externals that are direct children can be tagged.
Nhấn bên trong các kho lưu trữ .
để cam kết bản sao mới vào kho lưu trữ. Đừng quên cung cấp một thông điệp tường trình. Lưu ý rằng bản sao được tạo raLưu ý rằng trừ khi bạn chọn để chuyển đổi bản sao làm việc của bạn sang chi nhánh mới được tạo ra, việc tạo ra một Chi nhánh hoặc Thẻ không ảnh hưởng đến bản sao làm việc của bạn. Ngay cả khi bạn tạo ra các chi nhánh từ WC của bạn, những thay đổi được cam kết vào chi nhánh mới, chứ không phải thân cây, vì vậy WC của bạn vẫn có thể được đánh dấu là sửa đổi đối với thân cây.
Bạn cũng có thể tạo ra một chi nhánh hoặc thẻ mà không có một bản sao làm việc. Để làm được điều đó, hãy mở trình duyệt kho. Bạn có thể kéo các thư mục đến một vị trí mới. Bạn phải giữ phím Ctrl trong khi bạn kéo lê để tạo một bản sao, nếu không thư mục sẽ được di chuyển, chứ không được sao chép.
Bạn cũng có thể kéo một thư mục với nút chuột phải. Một khi bạn thả chuột bạn có thể lựa chọn từ trình đơn ngữ cảnh là bạn muốn thư mục được di chuyển hoặc sao chép. Tất nhiên để tạo ra một chi nhánh hoặc thẻ bạn phải sao chép thư mục, chứ không di chuyển nó.
Tuy nhiên, có một cách khác là từ hộp thoại tường trình. Bạn có thể hiển thị hộp thoại tường trình ví dụ như thân cây, chọn một bản sửa đổi (hoặc là bản sửa đổi CHÍNH ở đầu hoặc một bản sửa đổi trước đó), nhấp chuột phải và chọn
.... Đó (không thực sự) là câu hỏi. Trong khi một kiểm xuất tải xuống mọi thứ từ chi nhánh mong muốn trong kho lưu trữ vào thư mục làm việc của bạn,
→ chỉ chuyển dữ liệu được thay đổi vào bản sao làm việc của bạn. Tốt cho tải mạng, tốt cho sự kiên nhẫn của bạn. :-)Để có thể làm việc với chi nhánh hay thẻ mới được tạo ra bạn có nhiều cách để xử lý nó. Bạn có thể:
→ để làm một kiểm xuất tươi trong một thư mục trống. Bạn có thể kiểm tra bất kỳ vị trí nào trên đĩa địa phương của bạn và bạn có thể tạo nhiều bản sao làm việc từ kho lưu trữ của bạn như bạn muốn.
Chuyển bản sao làm việc hiện tại của bạn sang bản sao mới được tạo ra trong kho. Một lần nữa chọn thư mục cấp cao nhất của dự án của bạn và sử dụng
→ từ trình đơn ngữ cảnh.Trong hộp thoại tiếp theo, nhập địa chỉ URL của chi nhánh mà bạn vừa tạo ra. Chọn nút radio Bản sửa đổi Chính và nhấp chuột vào . Bản sao làm việc của bạn được chuyển sang chi nhánh / thẻ mới.
Chuyển đổi công việc giống như Cập Nhật ở chỗ nó không bao giờ loại bỏ các thay đổi cục bộ của bạn. Bất kỳ thay đổi bạn đã thực hiện trong bản sao làm việc của bạn chưa được cam kết sẽ được sáp nhập khi bạn làm Chuyển Đổi. Nếu bạn không muốn điều này xảy ra thì bạn phải cam kết những thay đổi trước khi chuyển đổi, hoặc trở lại bản sao của bạn làm việc với một phiên bản đã cam kết (thường là CHÍNH).
Nếu bạn muốn làm việc trên thân cây và chi nhánh, nhưng không muốn chi phí của một việc kiểm xuất mới, bạn có thể sử dụng Windows Explorer để tạo một bản sao của thân cây của bạn kiểm xuất ra trong một thư mục khác, sau đó
→ bản sao đó sang chi nhánh mới của bạn.Mặc dù Subversion chính nó làm cho không có sự phân biệt giữa các thẻ và các nhánh, cách mà chúng được sử dụng thường khác nhau một chút.
Các thẻ thường được sử dụng để tạo ra một ảnh chụp tĩnh của dự án tại một giai đoạn cụ thể. Bởi vì chúng thường không được sử dụng cho phát triển - đó là những gì các chi nhánh, là lý do chúng tôi đề nghị cấu trúc kho lưu trữ /trunk/branches/tag
ngày lúc đầu. Làm việc trên một phiên bản thẻ không phải là một ý tưởng tốt , Nhưng bởi vì các tập tin địa phương của bạn không được bảo vệ chống ghi nên không có gì để ngăn chặn bạn làm điều này lúc nhầm lẫn. Tuy nhiên, nếu bạn cố gắng cam kết một đường dẫn trong kho, trong đó có /Tags/
, TortoiseSVN sẽ cảnh báo bạn.
Có thể rằng bạn cần phải thực hiện thay đổi thêm đến bản phát hành mà bạn đã gắn thẻ. Cách đúng đắn để xử lý việc này là tạo ra một chi nhánh mới từ thẻ đầu tiên và cam kết chi nhánh. Thực hiện các Thay đổi của bạn trên chi nhánh này và sau đó tạo ra một thẻ mới từ chi nhánh mới này, ví dụ như Version_1.0.1
.
Nếu bạn chỉnh sửa một bản sao làm việc được tạo ra từ một chi nhánh và cam kết, thì tất cả thay đổi đi đến chi nhánh mới và không phải là thân cây. Chỉ có những sửa đổi được lưu trữ. Phần còn lại vẫn còn là một bản sao rẻ.