2010-05-21 21 views
6

Tôi có một số tệp tôi muốn thêm vào lật đổ. Thay vì dành thời gian của tôi và thêm từng cá nhân, tôi quyết định trở thành một người thông minh và làm một:Subversion 'unadd'?

svn add * 

.. đó là một sai lầm. Có cách nào tôi có thể 'unadd' tất cả mọi thứ? Có khoảng 7 tệp tôi muốn thêm ... nó hiện đã đánh dấu thêm 500 tệp tự động được tạo mà tôi không có ý định thêm!

Tôi chưa cam kết, vì vậy hy vọng có cách để hoàn tác tác vụ này !!

Trả lời

12

Bạn có bất cứ thay đổi khác so với các tập tin bổ sung? (svn status sẽ cho bạn biết - các tệp đã sửa đổi sẽ hiển thị là M, các tệp được thêm dưới dạng A - và svn diff sẽ hiển thị cho bạn chi tiết về bất kỳ thay đổi nào). Nếu không, sau đó bạn chỉ có thể làm:

svn revert * 

Nhưng nếu bạn làm có những thay đổi khác hơn là cho biết thêm, rằng sẽ loại bỏ chúng!

(Có lẽ giá trị thử nghiệm trên một vài tác phẩm đầu tiên :-)

+0

Tôi nghĩ bạn có nghĩa là trạng thái svn, chứ không phải svn diff. – Aif

+0

@Aif: Tôi muốn đề cập đến cả hai, nhưng bằng cách nào đó đã quản lý để hợp nhất các giải thích thành một. Cảm ơn đã chỉ ra điều đó! – psmears

0

Bạn có thể sử dụng
svn revert -depth = infinity.

Điều này sẽ allso hoàn tác tất cả các thay đổi cục bộ cho tệp của bạn, vì vậy hãy sử dụng nó một cách cẩn thận.

0

Bạn có thể sử dụng lệnh sau:

svn revert 
8
svn st |grep ^A |cut -c 9- |xargs svn revert 

Để đầu tiên xác minh những tập tin sẽ được chuyển mà không sửa đổi bất cứ điều gì loại trừ lệnh cuối cùng:

svn st |grep ^A |cut -c 9- 

lệnh Piping là mạnh mẽ:

  • svn st sẽ stat mọi thứ
  • grep ^A sẽ chỉ cung cấp các dòng bắt đầu bằng chữ cái A được thêm vào.
  • cut -c 9- sẽ lấy tên tệp từ những dòng đó.
  • xargs svn revert sẽ chạy svn revert cho mỗi tên tệp.

Nếu bạn đang sử dụng Windows, bạn sẽ phải tải xuống gói UnxUtils hoặc tương tự, nhưng cũng đáng giá vì nó mang lại nhiều lệnh shell mạnh mẽ.

+0

-1 cho 'cài đặt Unix' giải pháp – jwg

1

Chừng nào bạn chỉ có thêm những điều mới, chỉ cần làm

svn revert * 

Để được an toàn, tạo một bản sao cục bộ của tập tin của bạn đầu tiên.

8

Bạn có thể sử dụng

svn rm --keep-local * 

Tất cả các file sẽ được lưu giữ như là, mà không cần hoàn nguyên.Và unadd cho bước cam kết.

+0

Sẽ không cam kết sau khi thực hiện điều này có nghĩa là tệp được xóa khỏi kho lưu trữ từ xa? – jwg

+0

Điều này đã xóa tất cả các tệp của tôi khi chạy lệnh này (không cam kết) –