2010-01-18 24 views
7

Giả sử tôi sao chép một kho lưu trữ Mercurial từ xa (qua mạng cục bộ hoặc thậm chí qua Internet) để thử một cái gì đó.
Tôi làm việc trong bản sao của tôi, thực hiện một vài cam kết ... và sau đó tôi nhận ra rằng những thay đổi của tôi không có ý nghĩa và tôi phải bắt đầu lại.Cách nhanh nhất để "đặt lại" kho Mercurial sang Phiên bản X (không nhân bản)

Vì vậy, tôi muốn có một bản sao "mới" một lần nữa, từ cùng một kho lưu trữ nguồn.
Về cơ bản, tôi muốn "đặt lại" repo địa phương của mình về điểm trước khi tôi bắt đầu thử nghiệm.

Cách tốt nhất/nhanh nhất để thực hiện việc này là gì?

Cách đơn giản nhất là tạo một bản sao mới, nhưng sau đó HG sao chép toàn bộ repo và toàn bộ lịch sử qua mạng một lần nữa.
Nếu repo thực sự lớn, việc này sẽ mất thời gian và/hoặc chặn mạng.

Tôi cố gắng tạo một bản sao mới vào cùng một thư mục (hy vọng HG sẽ nhận ra điều này và chỉ cập nhật các tệp đã thay đổi và lịch sử) nhưng dường như cũng sao chép toàn bộ repo.

Tôi có thể "hg rollback", nhưng điều này chỉ trả về lần commit cuối cùng. Nếu tôi thực hiện một số cam kết, tôi chỉ có thể hoàn tác lần commit cuối cùng. Vì vậy, tôi không thể thiết lập lại repo đến điểm trước khi tôi bắt đầu cam kết.

Bất kỳ ý tưởng nào?
Có thực sự không có cách nào khác hơn để sao chép toàn bộ điều một lần nữa?
(lưu ý: một giải pháp với TortoiseHg sẽ được tốt đẹp ... Tôi thích này trong dòng lệnh)

Trả lời

17

Bạn sẽ kết thúc chúng tôi bằng cách sử dụng hg strip như gizmo gợi ý, nhưng cách truyền thống để thực hiện việc này là sao chép lại - không phải từ repo từ xa, mà từ repo địa phương của bạn. Ví dụ: nếu bạn thanh toán là 'kho lưu trữ' và bạn đã thêm các thay đổi 99 và 100 mà bạn không thích bạn muốn:

cd .. 
hg clone -r 98 respository repository-scrubbed 
mv repository respository-with-crap-I-do-not-want 
mv repository-scrubbed repository 

Điều đó sẽ gần ngay lập tức.

1

hg update -r <changeset number> ví dụ hg update -r 1 cho phiên bản thứ hai. Bạn có thể sử dụng hg log để xem phiên bản nào bạn muốn

+2

Điều đó sẽ không thực sự cuộn hệ thống trở lại trạng thái giống như khi nó được sao chép - bạn vẫn có các cam kết được tạo từ 'ngày hôm qua' –

8

Nếu bạn bật Mq Extension, bạn có thể sử dụng lệnh "hg strip" để xóa lịch sử bạn không muốn nữa.
Thông tin thêm có sẵn trên trang wiki Strip command.

+0

điều này làm việc cho tôi –

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