2009-07-10 29 views
11

Tôi đang sử dụng SVN rùa cho một dự án mà tôi đang làm việc một mình và tôi đã cam kết (do nhầm lẫn) một tệp lớn vào kho lưu trữ của tôi (Cơ sở dữ liệu Intellisense VC++). Bây giờ tôi muốn loại bỏ tập tin này từ kho lưu trữ của tôi để tạo điều kiện sao lưu của nó.Có thể xóa hoàn toàn tệp khỏi kho lưu trữ SVN của tôi không?

Xóa tệp khỏi dự án của tôi và thực hiện cam kết (rõ ràng) không giải quyết được sự cố của tôi vì phiên bản trước của tệp đó vẫn còn trong kho lưu trữ. Có cách nào để giải quyết vấn đề này không liên quan đến việc tạo ra một kho lưu trữ mới không?


EDIT

Giải pháp @ryansstack làm việc một cách hoàn hảo, đó là những gì tôi đã làm (tôi chạy các lệnh trong thư mục nơi kho của tôi đã nằm):

Trước tiên tôi tạo ra một bãi chứa của kho lưu trữ của tôi lọc tệp lớn đó:

svnadmin dump tcc | svndumpfilter exclude "/trunk/Image Segmentation/Image Segmentation.ncb" > tcc.bak 

Sau đó, tôi đã tạo một kho lưu trữ mới (tcc2) và chạy theo dõi ng lệnh:

svnadmin load tcc2 < tcc.bak 

Bây giờ, kích cỡ của tcc2 là 7 MB so với 170 MB của tcc.

+0

Dupe http: // stackoverflow.com/questions/663584/subversion-vĩnh viễn-xóa-không chính xác-kiểm tra-in-directory-dự án/663595 # 663595 http://stackoverflow.com/questions/560684/svn-obliterate –

Trả lời

2

Theo như tôi biết, một khi tệp được cam kết trong svn, không có chức năng nào trong svn để hoàn tác điều đó. Bạn có thể loại bỏ các tập tin từ thư mục và cam kết thư mục, nhưng điều đó sẽ chỉ làm cho các tập tin không phải là một phần của phiên bản mới nhất của thư mục; bản sửa đổi cam kết vẫn còn trong đó. Thông thường tôi thấy rằng một điều tốt, nhưng tất nhiên có những trường hợp (như của bạn), nơi nó có thể ít hấp dẫn hơn.

-1

Chúng tôi chạy vào cùng một vấn đề. Quản trị viên máy chủ SVN của tôi cho tôi biết điều này không thể thực hiện được. Cách duy nhất bạn có thể làm là bắt đầu một kho lưu trữ mới và lưu kho cũ vào đĩa hoặc bất cứ thứ gì.

Không thực hiện bất kỳ thay đổi nào đối với tệp, đặc biệt. nếu đó là một tập tin nhị phân, bởi vì sau đó tôi tin rằng SVN lưu trữ nhiều bản sao của nó.

+0

SVN có sự khác biệt của các tệp nhị phân. –

2

Tôi đã xem xét thực hiện điều gì đó tương tự và về cơ bản Subversion được thiết lập để bạn không thể chỉ đơn giản xóa nội dung như vậy.

Nhưng vì bạn đã sao lưu cơ sở dữ liệu, bạn nên check this out. Những gì tôi đã kết thúc làm là bán phá giá kho của tôi, lọc nó, và sau đó tải nó vào một kho lưu trữ mới. Tất nhiên, tôi đã làm chu trình dump/filter/load vì các lý do khác, do đó, một chút lọc bổ sung không thêm nhiều công việc. Nếu bạn đã thực hiện sao lưu, bạn có thể sao lưu repo hiện tại của mình (tôi cho rằng bạn đang làm một bãi chứa, hoặc nhiều bãi gia tăng cho điều đó), lọc bản sửa đổi cụ thể bằng cách sử dụng svndumpfilter và tải lại từ bản sao lưu.

EDIT: Tigris chính thức có issue 516 về điều này. Lệnh "svn obliterate" được lên kế hoạch, nhưng nó chưa được thực hiện.

-1

không thể hoàn tác tệp đã cam kết từ svn.

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