Subversion: Tôi có thể kiểm tra, sửa đổi và sau đó biến nó thành một chi nhánh không?


80

Tôi đã thanh toán từ thân cây của mình sang DIR cục bộ và thực hiện nhiều thay đổi cục bộ ở đó. 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 tạo một nhánh từ phiên bản cục bộ này. Điều đó có thể không?

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

CẬP NHẬT : Cảm ơn vì 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)


vâng bạn có thể. Tôi sử dụng rùa bò và bạn có thể làm điều đó trong đó.
Nick

Tôi thấy có quá nhiều xung đột khi sử dụng svn switch, vì vậy tôi đã chọn kiểm tra bản sao mới từ new-branch-URLsau đó svn copy.
fikr4n

Câu trả lời:


39

Theo dòng lệnh của nó giúp svn copy có thể sao chép từ một thư mục vào 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 mình vào nhánh, ví dụ:

svn copy working_directory url_to_branch

52

SVN Book ( http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.using.create ) không khuyến nghị 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 một nhánh bằng cách sử dụng svn copyđể sao chép một thư mục trong bản sao đang hoạt động, nhưng kỹ thuật này không được khuyến khích. Trên thực tế, nó có thể khá chậm! 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, trong đó 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 đang hoạt động đó trên đĩa cục bộ.

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

Tuy nhiên, 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 chi 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 vì 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ó những thay đổi trong bản sao làm việc cục bộ của mình, tôi có thể svn copy <trunk-URL> <newBranch-URL>sao chép đường trục sang một nhánh mới trên máy chủ svn, sau đó sử dụng svn switchtrong bản sao làm việc của mình để 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 chưa cam kết của tôi?
Kasapo

3
@Kasapo, vâng đúng vậy. và cũng cần lưu ý nếu bạn đã lạc hậu với cốp xe; nếu vậy, 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 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 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 sẽ và thuận tiện nhất để tạo một nhánh từ các sửa đổi cục bộ.
Spiros

9

Trong ứng dụng SVN của tôi: TortoiseSVN, nó đủ để:

  • nhấp chuột phải vào thư mục trên cùng mà tôi muốn phân nhánh
  • trong "Tới URL" chọn thư mục 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ư sao chép phiên bản cục bộ vào url kho lưu trữ được chỉ định.


1

Có, bạn có thể làm điều này bằng dòng lệnh SVN cũng như rùaSVN .

Bạn phải chỉ định bản làm việc SVN của mình là src và 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ỉ cần trỏ vào bản sao làm việc của bạn, chọn "Chi nhánh / thẻ" từ menu ngữ cảnh và chọn "Bản sao làm việc" trong phần "Tạo bản sao trong kho lưu trữ từ:"

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.