2012-04-11 35 views
32

Tôi vừa tạo ra một repo mercurial được tạo ra từ một hệ sinh thái không đồng nhất của repos khác. Trước khi tôi xuất bản nó cho đồng nghiệp của tôi, tôi muốn làm sạch nó càng nhiều càng tốt. Để kết thúc này, tôi muốn hoàn toàn loại bỏ một vài tập tin cũ lớn từ lịch sử (giả vờ họ không bao giờ tồn tại), vì vậy repo sẽ nhỏ hơn.Làm thế nào để bạn loại bỏ các tệp lớn khỏi lịch sử bằng thủy ngân?

Điều này có thể thực hiện với tính năng siêu việt không?

+8

Không hiểu phiếu bầu "đóng chủ đề"; câu hỏi này là hoàn toàn đúng chủ đề. –

+0

@Graham, bạn có nói rằng bạn nghĩ rằng các kỹ sư phần mềm nên sử dụng kiểm soát sửa đổi? Đó là cuộc nói chuyện điên rồ ... – sage

Trả lời

35

Kiểm tra phần mở rộng convert, đặc biệt là tùy chọn --filemap.

Enable bằng cách thêm dòng sau vào mercurial.ini:

[extensions] 
convert = 

Tạo một bản đồ các tập tin để loại trừ:

exclude path/to/file1 
exclude path/to/file2 

Sau đó, chuyển đổi các repo:

hg convert srcrepo destrepo --filemap <map> 

Lưu ý có một lỗi trong Mercurial 2.1.1 gây ra lỗi với lệnh trên:

initializing destination destrepo repository 
abort: invalid mode ('r') or filename 

Chỉ cần thêm tùy chọn --splicemap <nonexistent file> để khắc phục sự cố.

+0

Cảm ơn câu trả lời của bạn! Tài liệu cho --filemap khá khan hiếm, bạn có một liên kết giải thích nó với chi tiết hơn một chút không? –

+0

@static_rtti, câu trả lời được cập nhật. –

+0

Thật tuyệt vời! Cảm ơn nhiều. –

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