2008-09-24 29 views
30

Giả sử tôi có một tập hợp các cam kết trong một thư mục kho lưu trữ ...Suy vi trong Subversion

123 (250 new files, 137 changed files, 14 deleted files) 
122 (150 changed files) 
121 (renamed folder) 
120 (90 changed files) 
119 (115 changed files, 14 deleted files, 12 added files) 
118 (113 changed files) 
117 (10 changed files) 

Tôi muốn để có được một bản sao làm việc bao gồm tất cả những thay đổi từ phiên bản 117 trở đi nhưng không bao gồm những thay đổi cho các phiên bản 118 và 120.

EDIT: Để có thể làm cho vấn đề rõ ràng hơn, tôi muốn hoàn tác các thay đổi đã được thực hiện ở 118 và 120 trong khi vẫn giữ lại tất cả các thay đổi khác. Thư mục chứa hàng nghìn tệp trong hàng trăm thư mục con.

Cách tốt nhất để đạt được điều này là gì?

Câu trả lời, nhờ Bruno và Bert, là lệnh (trong trường hợp này, để loại bỏ 120 sau khi toàn bộ hợp nhất được thực hiện)

svn merge -c -120 . 

Lưu ý rằng số sửa đổi phải được xác định với một dẫn đầu trừ. '-120' không '120'

Trả lời

31

Để hoàn tác sửa đổi 118 và 120:

svn up -r HEAD  # get latest revision 
svn merge -c -120 . # undo revision 120 
svn merge -c -118 . # undo revision 118 
svn commit   # after solving problems (if any) 

Cũng xem mô tả trong Undoing changes.

Lưu ý dấu trừ trong đối số -c -120. Công tắc -c (hoặc --change) được hỗ trợ kể từ Subversion 1.4, các phiên bản cũ hơn có thể sử dụng -r 120:119.

-2

Tôi cho rằng bạn có thể tạo ra một chi nhánh từ phiên bản 117, sau đó hợp nhất tất cả mọi thứ trừ 118 và 120.

svn copy -r 117 source destination 

Sau đó kiểm chi nhánh này và từ đó làm svnmerge.py merge -r119,120-123

EDIT: Thao tác này không hoàn tác các bản sửa đổi trong nhánh/thân cây. Sử dụng svn merge để thay thế.

+1

Tôi băn khoăn về điều đó ... nhưng liệu sự thành công của điều này có phụ thuộc rất nhiều vào việc các tập tin tương tự đã được thay đổi trong 117, 118 và 119 hay không? Sẽ không có một nguy cơ mà bạn muốn nhận một số vật phẩm từ 118 kiểm tra? –

8

Có cách đơn giản hơn nếu bạn sử dụng TortoiseSVN, máy khách Windows cho Subversion. Bạn chỉ cần nhấp để xem nhật ký trong bản sao công việc đã cập nhật của mình, chọn các bản chỉnh sửa bạn muốn hoàn tác, nhấp chuột phải và chọn "Hoàn nguyên thay đổi từ các bản sửa đổi này".

Đây là thao tác an toàn vì các thay đổi được áp dụng ngay trong vùng làm việc của bạn. Bạn vẫn phải cam kết sửa đổi kho lưu trữ của mình.

Đây là một trong những tính năng tốt nhất của TortoiseSVN. Tôi đã luôn luôn là một anh chàng dòng lệnh, nhưng Tortoise đã thay đổi suy nghĩ của tôi.

+1

Trên máy Mac, máy khách SVN Cornerstone thực hiện điều này tốt nhất. Tôi đã thử Phiên bản nhưng nó không thể cạnh tranh với Cornerstone cho loại công việc này. –

+0

+1 Rất hữu ích/đơn giản cho những ai sử dụng TortoiseSVN. Cám ơn vì cái này! –

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