2009-08-20 26 views
76

Tôi đã thực hiện thanh toán từ thân cây của mình đến DIR địa phương và thực hiện nhiều thay đổi cục bộ tại đó. Bây giờ tôi không muốn cam kết nó trở lại thân cây, nhưng tôi muốn thực hiện một chi nhánh từ phiên bản địa phương này. Điều đó có thể không?Subversion: Tôi có thể kiểm tra, sửa đổi và sau đó biến nó thành chi nhánh không?

Tôi có thể chỉ sao chép thân cây vào chi nhánh và sau đó cd DIRsvn switch cho chi nhánh?

CẬP NHẬT: Cảm ơn bạn đã trả lời! Để tóm tắt các bước:

  • cd DIR
  • svn copy . new-branch-URL
  • svn switch new-branch-URL .

(lưu ý các dấu chấm)

+0

tôi thấy quá nhiều xung đột bằng cách sử dụng 'svn switch', vì vậy tôi đã chọn để kiểm tra các bản sao tươi từ' mới ngành URL' sau 'svn copy'. – BornToCode

+0

có bạn có thể. Tôi sử dụng tortoiseSVN và bạn có thể làm điều đó trong đó. – Nick

Trả lời

38

Theo dòng lệnh giúp đỡ svn bản sao của nó có thể sao chép từ một thư mục để một URL kho lưu trữ. Vì vậy, bạn sẽ có thể sao chép bản sao làm việc của bạn để các chi nhánh, ví dụ:

svn copy working_directory url_to_branch 
9

Trong client SVN của tôi: TortoiseSVN nó là đủ để:

  • nhấp chuột phải vào thư mục đầu tôi muốn chi nhánh
  • trong "URL" chọn thư mục chi nhánh tại kho
  • của bạn trong khung "Tạo bản sao trong kho từ:" chọn "bản sao làm việc"

done :)

Cũng giống như sao chép phiên bản cục bộ sang url kho lưu trữ được chỉ định.

1

Có, bạn có thể làm điều này bằng cách Dòng lệnh SVN cũng như tortoiseSVN.

Bạn phải chỉ rõ workingcopy SVN của bạn như src và chi nhánh mới của bạn như là điểm đến của lệnh

svn copy <file/path/to/working/copy> <URL/TO/REPOSITORY/BRANCH> 

.

Trong TortoiseSVN chỉ cần trỏ vào bản sao làm việc của bạn, chọn "Chi nhánh/thẻ" từ ContextMenu và chọn "bản sao làm việc" trong phần "Tạo bản sao trong kho từ:"

Lưu ý rằng nó không phải là một tốt ý tưởng (vì lý do truy xuất nguồn gốc) để tạo các thẻ theo cách như vậy, nhưng đối với các nhánh thì nó hoàn toàn ổn.

50

Sách SVN (http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.using.create) không khuyên bạn tạo chi nhánh từ bản sao làm việc cục bộ.

Mặc dù cũng có thể tạo chi nhánh bằng cách sử dụng svn copy để sao chép thư mục trong bản sao làm việc, kỹ thuật này không được khuyến nghị. Nó có thể khá chậm, trên thực tế! Sao chép một thư mục ở phía máy khách là một hoạt động thời gian tuyến tính, ở chỗ nó thực sự phải sao chép mọi tệp và thư mục con trong thư mục sao chép làm việc đó trên đĩa cục bộ.

Thay vào đó, hãy tạo chi nhánh trước và sau đó sử dụng lệnh svn switch để bạn có thể thực hiện thay đổi. Nếu bản sao làm việc của bạn bị lỗi thời với thân cây thì hãy thêm "@REV" vào URL nguồn nơi "REV" là bản sửa đổi bản sao làm việc của bạn được báo cáo bởi svn info.

Sao chép thư mục trên máy chủ, tuy nhiên, là hoạt động liên tục, và đó là cách mà hầu hết mọi người tạo nhánh.

$ svn copy http://svn.example.com/repos/calc/trunk \ 
      http://svn.example.com/repos/calc/branches/my-calc-branch \ 
     -m "Creating a private branch of /calc/trunk." 
+2

Cảm ơn câu trả lời này. Đây là giải pháp tốt hơn vì nó duy trì lịch sử sửa đổi. – evanflash

+3

Điều đó có nghĩa là nếu tôi có thay đổi trong bản sao làm việc cục bộ của mình, tôi có thể làm 'svn copy ' để sao chép thân cây vào nhánh mới trên máy chủ svn, sau đó sử dụng 'svn switch' trong bản sao làm việc của tôi chuyển sang nhánh mới mà không mất bất kỳ thay đổi nào? Hay công tắc sẽ giết các tệp đã sửa đổi không được cam kết của tôi? – Kasapo

+3

@Kasapo, vâng đúng vậy. và cũng lưu ý nếu bạn đã lỗi thời với thân cây; nếu có, hãy thêm "@REV" vào URL nguồn như tôi đã lưu ý để sau khi bạn chuyển sang nhánh, chỉ những thay đổi cục bộ của bạn mới hiển thị dưới dạng sự khác biệt. – Lucas

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