Câu hỏi Subversion: Tôi có thể kiểm tra, sửa đổi, và sau đó làm cho nó một chi nhánh?


Tôi đã thực hiện thanh toán từ thân cây của tôi đến DIR địa phương và thực hiện rất 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?

Tôi có thể chỉ cần sao chép thân cây vào một nhánh, và sau đó cd DIR và svn switch đến chi nhánh?

CẬP NHẬT: Cảm ơn các câu trả lời, nó đã hoạt động! Để 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)


76
2017-08-20 21:02


gốc


có bạn có thể. Tôi sử dụng tortoiseSVN và bạn có thể làm điều đó trong đó. - Nick
Tôi đã tìm thấy quá nhiều xung đột bằng cách sử dụng svn switch, vì vậy tôi đã chọn thanh toán bản sao mới từ new-branch-URL sau svn copy. - BornToCode


Các câu trả lời:


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

svn copy working_directory url_to_branch

38
2017-08-20 21:09





Sách SVN (http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.using.create) không khuyên bạn nên tạo một 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 một thư mục trong bản sao làm việc, kỹ thuật này không được khuyến khích. 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 đó, tạo chi nhánh đầu tiên và sau đó sử dụng svn switch để bạn có thể thực hiện các thay đổi của mình. 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.

Tuy nhiên, việc sao chép một thư mục trên máy chủ là một hoạt động liên tục, và đó là cách mà hầu hết mọi người tạo ra các 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."

50
2017-09-20 02:15



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
Điều đó có nghĩa là nếu tôi có thay đổi trong bản sao làm việc tại địa phương của mình, tôi có thể làm svn copy <trunk-URL> <newBranch-URL> để sao chép các thân cây đến một chi 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
@ 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
Hãy để tôi thêm một liên kết rất hữu ích giải thích chi tiết hơn về giải pháp của Lucas: svnbook.red-bean.com/en/1.6/svn.branchmerge.switchwc.html (nhìn vào hộp thông tin ở phía dưới). Đây thực sự là giải pháp sạch và tiện lợi nhất để tạo ra một nhánh từ các sửa đổi cục bộ. - Spiros


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

  • nhấp chuột phải vào thư mục trên cùng tôi muốn chi nhánh
  • trong "Tới URL", hãy chọn thư mục chi nhánh trong kho lưu trữ của bạn
  • trong khung "Tạo bản sao trong kho từ:" chọn "Bản sao làm việc"

làm xong :)

Nó giống như việc sao chép phiên bản cục bộ đến url kho lưu trữ được chỉ định.


9
2017-08-20 21:13





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

Bạn phải chỉ định SVN của bạn làm việc như src và chi nhánh mới của bạn là đích đến của

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

chỉ huy.

Trong TortoiseSVN chỉ 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ưởng hay (vì các lý do truy nguyên) để 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.


1
2017-08-21 00:22