2008-10-29 32 views
20

Tôi đang sử dụng rùa svn trong Windows.Làm thế nào tôi có thể chi nhánh trong SVN và có nó chi nhánh thư mục svn: bên ngoài của tôi là tốt?

Làm cách nào để phân nhánh trong SVN và cũng có thể phân nhánh thư mục svn: external?

+1

Đây là một bài đăng trên blog nói về vấn đề này và những công việc tiềm năng ... http://thinkinging.com/2008/10/21/set-the-revision-of-your-svnexternals-or-else/ –

+0

Đây là một tiện ích dòng lệnh cửa sổ đóng băng các phần tử bên ngoài cho phân nhánh/gắn thẻ: http://svnxf.codeplex.com/ –

Trả lời

22

Bạn nên sử dụng các tài liệu svn:externalsbên ngoài bên ngoài từ các kho lưu trữ khác nhau. Vì vậy, svn:externals nên tham khảo components, modules, công cụ của bên thứ 3, vv

Bạn nên không sử dụng svn:externals để mô phỏng một "liên kết tượng trưng" -behaviour bằng cách sử dụng externals chỉ vào kho cùng. Bạn có thể giải quyết các vấn đề đó hầu hết thời gian bằng cách sửa đổi cấu trúc xây dựng của bạn hoặc sử dụng tính năng kiểm tra tập lệnh và tính năng kiểm tra thưa thớt.

svn: externals có rất nhiều vấn đề nhất trong số đó là khó khăn để xem, theo dõi và sửa chữa: see an example here

  • cam kết không thể chiều dài qua externals (không cam kết nguyên tử)
  • chi nhánh sẽ không chi nhánh của họ bên ngoài (như bạn đã chỉ ra)
  • thẻ sẽ không "đóng băng" các phần tử bên ngoài của chúng để các bản dựng sau có thể dẫn đến các bản dựng khác nhau/bị hỏng
  • hợp nhất và hợp nhất lại sẽ không hoạt động ở bên ngoài

Nếu bạn sử dụng externals để trỏ đến các kho lưu trữ khác, bạn sẽ hầu như không có những vấn đề này.

+0

Vấn đề là rằng có những tình huống khi bạn thực sự cần các phần bên ngoài cùng một repo, đặc biệt khi hệ thống cần các thành phần động và một công cụ xây dựng sẽ là một quá mức cần thiết. Tôi đã chạy nhiều hơn một vài lần trong các loại kịch bản cho các dự án có kích thước lớn hơn. – haknick

+0

Một giải pháp có thể đáng xem xét là thiết lập GIT-SVN. Và sau đó có thể sử dụng git cho phần nhân bản và vẫn giữ SVN Externals. – haknick

3

Khi bạn tạo chi nhánh trong Subversion, bạn chỉ cần tạo bản sao giá rẻ của thân cây, nhánh hoặc thẻ mà bạn đang phân nhánh. Bản sao giá rẻ này sẽ chứa tất cả các tệp và thuộc tính giống như thân cây, nhánh hoặc thẻ mà bạn đã phân nhánh cho đến khi bạn bắt đầu sửa đổi các thuộc tính hoặc tệp của nhánh mới.

Tuy nhiên, bạn có thể sửa đổi một trong các móc 'cam kết' để tự động sửa đổi cài đặt khi bạn cam kết chi nhánh của mình. http://svnbook.red-bean.com/en/1.1/ch05s02.html

Nếu không, nếu bạn muốn sửa đổi bên ngoài của mình trên nhánh bạn sẽ cần phải thực hiện theo cách thủ công.

+4

Sửa đổi giao dịch svn-cam thông qua các kịch bản móc không được khuyến khích và không được cộng đồng svn hỗ trợ. Nó sẽ dẫn đến desynchronisations workcopy nghiêm trọng! –

10

Bạn sẽ phải tạo thủ công một chi nhánh trong kho lưu trữ bên ngoài của bạn và sau đó thay đổi thuộc tính svn: external để trỏ đến nhánh chính xác.

+0

điều này là không khả thi đối với tôi bởi vì tôi có rất nhiều svn: externals trong dự án của tôi –

+3

Khả thi hay không, đây là giải pháp duy nhất. Nó đã được yêu cầu được thực hiện một tính năng tự động của SVN chính nó nhưng vấn đề vẫn còn mở, và khá cũ ... http://subversion.tigris.org/issues/show_bug.cgi?id=1258 –

2

hiện có các ngoại lệ tương đối. mặc dù bạn nên biết :) im sử dụng chúng ngay bây giờ - ở giữa giải quyết một vài rắc rối tôi đã nhận, nhưng im tiến triển. tôi vừa gắn thẻ một dự án sau khi tạo các externals tương đối bên trong nó. bây giờ là điều kỳ diệu - khi tôi kiểm tra chi nhánh, nó thông báo cho tôi các phần bên ngoài là từ sửa đổi "sửa đổi hàng đầu của thân cây", nhưng bản thân bên ngoài là bản gốc - đó là những gì tôi muốn :)

+0

FYI, tôi đang gặp sự cố với các bên ngoài tương đối của mình. http://subversion.tigris.org/issues/show_bug.cgi?id=4150 http://stackoverflow.com/questions/439666/svnswitch-doesnt-work-with-relative-svnexternal/12062304#12062304 – AnneTheAgile

Các vấn đề liên quan