Mục bên ngoài

Đôi khi nó rất hữu ích để xây dựng một bản sao làm việc được tạo ra bởi một số kiểm xuất khác nhau. Ví dụ, bạn có thể muốn các tập tin hoặc thư mục con khác nhau đến từ các địa điểm khác nhau trong một kho lưu trữ, hoặc có lẽ từ các kho khác nhau hoàn toàn. Nếu bạn muốn mọi người sử dụng có cùng một cách bố trí, bạn có thể xác định thuộc tính svn:externals để kéo vào nguồn tài nguyên được chỉ định tại các địa điểm nơi chúng là cần thiết.

Thư mục bên ngoài

Hãy nói rằng bạn hãy kiểm xuất một bản sao làm việc của /project1 sang D:\dev\project1 . Chọn thư mục D:\dev\project1 , nhấp chuột phải và chọn Cửa sổ trình đơn Thuộc tính từ trình đơn ngữ cảnh. Hộp thoại Thuộc Tính xuất hiện. Sau đó vào tab Subversion. Ở đó, bạn có thể thiết lập các thuộc tính. Nhấp vào Thuộc tính ... . Trong hộp thoại thuộc tính, hoặc nhấp đúp chuột vào svn:externals nếu nó đã tồn tại, hoặc nhấp vào nút Mới ... và chọn externals từ trình đơn. Để thêm vào một thành phần bên ngoài mới, nhấp vào Mới ... và sau đó điền vào các thông tin cần thiết trong hộp thoại hiển thị.

Cẩn thận

URL phải được thoát ra đúng đắn nếu không chúng sẽ không làm việc, ví dụ như bạn phải thay thế mỗi khoảng trống bằng %20.

Nếu bạn muốn đường dẫn địa phương bao gồm các khoảng trống hoặc ký tự đặc biệt khác, bạn có thể đặt nó bên trong dấu ngoặc kép, hoặc bạn có thể sử dụng ký tự \ (Dấu gạch chéo ngược) như ký tự thoát kiểu phong cách Unix shell trước bất kỳ ký tự đặc biệt nào. Trong quá trình này cũng có nghĩa là bạn phải sử dụng / (Dấu gạch chéo) như một dấu phân cách đường dẫn. Lưu ý rằng hành vi này mới có trong Subversion 1.6 và sẽ không làm việc với các máy khách cũ.

Sử dụng số sửa đổi rõ ràng

You should strongly consider using explicit revision numbers in all of your externals definitions, as described above. Doing so means that you get to decide when to pull down a different snapshot of external information, and exactly which snapshot to pull. Besides the common sense aspect of not being surprised by changes to third-party repositories that you might not have any control over, using explicit revision numbers also means that as you backdate your working copy to a previous revision, your externals definitions will also revert to the way they looked in that previous revision, which in turn means that the external working copies will be updated to match the way they looked back when your repository was at that previous revision. For software projects, this could be the difference between a successful and a failed build of an older snapshot of your complex code base.

Hộp thoại biên tập cho thuộc tính svn:externals cho phép bạn chọn các thành phần ngoài và tự động đặt chúng một cách rõ ràng vào bản chỉnh sửa CHÍNH.

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.

Nếu bạn sử dụng các URL tuyệt đối svn:externals trong các định nghĩa và bạn có di chuyển bản sao làm việc của bạn (ví dụ, nếu URL của kho của bạn thay đổi), sau đó các thành phần bên ngoài của bạn sẽ không thay đổi và có thể không làm việc nữa.

Để tránh các vấn đề như vậy, máy khách Subversion phiên bản 1.5 và mới hơn hỗ trợ các URL bên ngoài tương đối. Bốn phương pháp khác nhau để chỉ định một URL tương đối được hỗ trợ. Trong các ví dụ sau đây, giả sử chúng ta có hai kho: một ở http://example.com/svn/repos-1 và một tại http://example.com/svn/repos-2. Chúng ta đã kiểm xuất http://example.com/svn/repos-1/project/trunk vào C:\Working và thuộc tính svn:externals được thiết lập trên thân.

Tương đối so với thư mục mẹ

These URLs always begin with the string ../ for example:

../../widgets/foo  common/foo-widget
            

This will extract http://example.com/svn/repos-1/widgets/foo into C:\Working\common\foo-widget.

Lưu ý rằng URL là tương đối với địa chỉ URL của thư mục với thuộc tính svn:externals , không phải với thư mục nơi thành phần bên ngoài được ghi vào đĩa.

Tương đối so với gốc kho

These URLs always begin with the string ^/ for example:

^/widgets/foo  common/foo-widget
            

This will extract http://example.com/svn/repos-1/widgets/foo into C:\Working\common\foo-widget.

You can easily refer to other repositories with the same SVNParentPath (a common directory holding several repositories). For example:

^/../repos-2/hammers/claw  common/claw-hammer
            

This will extract http://example.com/svn/repos-2/hammers/claw into C:\Working\common\claw-hammer.

Tương đối với giản đ

URLs beginning with the string // copy only the scheme part of the URL. This is useful when the same hostname must the accessed with different schemes depending upon network location; e.g. clients in the intranet use http:// while external clients use svn+ssh://. For example:

//example.com/svn/repos-1/widgets/foo  common/foo-widget
            

This will extract http://example.com/svn/repos-1/widgets/foo or svn+ssh://example.com/svn/repos-1/widgets/foo depending on which method was used to checkout C:\Working.

Tương đối so với tên chủ của máy chủ

URLs beginning with the string / copy the scheme and the hostname part of the URL, for example:

/svn/repos-1/widgets/foo  common/foo-widget
            

This will extract http://example.com/svn/repos-1/widgets/foo into C:\Working\common\foo-widget. But if you checkout your working copy from another server at svn+ssh://another.mirror.net/svn/repos-1/project1/trunk then the external reference will extract svn+ssh://another.mirror.net/svn/repos-1/widgets/foo.

You can also specify a peg and operative revision for the URL if required. To learn more about peg and operative revisions, please read the corresponding chapter in the Subversion book.

Quan trọng

If you specify the target folder for the external as a subfolder like in the examples above, make sure that all folders in between are versioned as well. So for the examples above, the folder common should be versioned!

While the external will work in most situations properly if folders in between are not versioned, there are some operations that won't work as you expect. And the status overlay icons in explorer will also not show the correct status.

Nếu bạn cần thêm thông tin về làm cách nào TortoiseSVN xử lý các thuộc tính đọc phần “Thiết lập Dự án” .

Để tìm hiểu về các phương pháp khác nhau để truy cập các tiểu dự án chung hãy đọc phần “Bao gồm các tiểu dự án chung” .

Các tập tin bên ngoài

Kể từ Subversion 1.6, bạn có thể thêm các thành phần bên ngoài trong một tập tin vào bản sao làm việc của bạn bằng cách sử dụng các cú pháp tương tự như đối với các thư mục. Tuy nhiên, có một số hạn chế.

  • The path to the file external must be a direct child of the folder where you set the svn:externals property.

  • URL cho một tập tin bên ngoài phải ở trong cùng một kho lưu trữ như địa chỉ URL tập tin bên ngoài sẽ được chèn vào; tập tin thành phần ngoài liên kho lưu trữ không được hỗ trợ.

Một tập tin bên ngoài cư xử giống như bất kỳ tập tin được phiên bản khác trong nhiều khía cạnh, nhưng chúng không thể được di chuyển hoặc xóa bằng cách sử dụng các lệnh bình thường, thay vào đó thuộc tính svn:externals phải được sửa đổi.

Creating externals via drag and drop

If you already have a working copy of the files or folders you want to include as externals in another working copy, you can simply add those via drag and drop from the windows explorer.

Simply right drag the file or folder from one working copy to where you want those to be included as externals. A context menu appears when you release the mouse button: SVN Add as externals here if you click on that context menu entry, the svn:externals property is automatically added. All you have to do after that is commit the property changes and update to get those externals properly included in your working copy.