Bao gồm các tiểu dự án chung

Sometimes you will want to include another project within your working copy, perhaps some library code. There are at least 4 ways of dealing with this.

Sử dụng svn:externals

Thiết lập thuộc tính svn:externals cho một thư mục trong dự án của bạn. Thuộc tính này bao gồm một hoặc nhiều dòng, mỗi dòng có tên của một thư mục con mà bạn muốn sử dụng như là các thư mục cho kiểm xuất cho mã chung, và URL kho lưu trữ mà bạn muốn được kiểm xuất ở đó. Để cí đầy đủ chi tiết tham khảo phần “Mục bên ngoài” .

Cam kết các thư mục mới. Bây giờ khi bạn cập nhật, Subversion sẽ kéo một bản sao của dự án mà từ kho lưu trữ của nó vào bản sao làm việc của bạn. Các thư mục con sẽ được tạo ra tự động nếu có yêu cầu. Mỗi khi bạn cập nhật bản làm việc chính của bạn, bạn cũng sẽ nhận được phiên bản mới nhất của tất cả các dự án bên ngoài.

Nếu dự án bên ngoài là trong cùng một kho lưu trữ, bất kỳ thay đổi bạn thực hiện sẽ được bao gồm trong danh sách cam kết khi bạn cam kết dự án chính của bạn.

If the external project is in a different repository, any changes you make to the external project will be shown or indicated when you commit the main project, but you have to commit those external changes separately.

Trong ba phương pháp mô tả, đây là cách duy nhất mà không cần cài đặt ở phía máy khách. Một khi các thành phần bên ngoài được quy định trong các thuộc tính thư mục, tất cả các máy khách sẽ nhận được các thư mục làm đầy khi chúng cập nhật.

Sử dụng một bản sao làm việc lồng nhau

Tạo một thư mục mới trong dự án của bạn để chứa các mã thông thường, nhưng không thêm nó vào Subversion.

Chọn TortoiseSVN Kiểm xuất cho thư mục mới và kiểm xuất một bản sao của mã thông thường vào nó. Bây giờ bạn có một bản sao hoạt động riêng biệt lồng nhau trong bản sao làm việc chính của bạn.

Hai bản sao làm việc là độc lập. Khi bạn thực hiện thay đổi vào bản cha, các thay đổi đến WC lồng nhau được bỏ qua. Tương tự như vậy khi bạn cập nhật các bản cha, WC lồng nhau không được cập nhật.

Sử dụng một vị trí tương đối

If you use the same common core code in several projects, and you do not want to keep multiple working copies of it for every project that uses it, you can just check it out to a separate location which is related to all the other projects which use it. For example:

C:\Projects\Proj1
C:\Projects\Proj2
C:\Projects\Proj3
C:\Projects\Common
        

and refer to the common code using a relative path, e.g. ..\..\Common\DSPcore.

If your projects are scattered in unrelated locations you can use a variant of this, which is to put the common code in one location and use drive letter substitution to map that location to something you can hard code in your projects, e.g. Checkout the common code to D:\Documents\Framework or C:\Documents and Settings\{login}\My Documents\framework then use

SUBST X: "D:\Documents\framework"
        

to create the drive mapping used in your source code. Your code can then use absolute locations.

#include "X:\superio\superio.h"
        

Phương pháp này sẽ chỉ làm việc tốt trong tất cả các môi trường máy tính, và bạn sẽ cần phải lập tài liệu ánh xạ ổ đĩa cần thiết để nhóm của bạn biết nơi có các tập tin bí ẩn. Phương pháp này là nghiêm ngặt cho sử dụng trong môi trường phát triển khép kín, và không được khuyến khích sử dụng chung.

Add the project to the repository

The maybe easiest way is to simply add the project in a subfolder to your own project working copy. However this has the disadvantage that you have to update and upgrade this external project manually.

To help with the upgrade, TortoiseSVN provides a command in the explorer right-drag context menu. Simply right-drag the folder where you unzipped the new version of the external library to the folder in your working copy, and then select Context MenuSVN Vendorbranch here. This will then copy the new files over to the target folder while automatically adding new files and removing files that aren't in the new version anymore.