Điều tôi đưa ra là không phù hợp, nhưng đã hoàn thành công việc, mặc dù những thay đổi tôi cần để thoát ra được xen kẽ với công việc khác và có một số nhánh nội bộ. Đây là những gì tôi đã làm. (Cảm nhận và cải tiến được hoan nghênh.)
Got một danh sách của tất cả các changesets (mà tôi sử dụng để tạo ra các lệnh dưới đây):
hg log -r 'keyword(xyz)' --template '{rev}\n'
tạo một bản vá cho mỗi changeset:
hg diff -p -U 8 --reverse -c 15094 > 15094.rev.patch
hg diff -p -U 8 --reverse -c 15095 > 15095.rev.patch
...
Sau đó, áp dụng từng bản vá ngược.Ở đây, vấn đề trật tự, cuối cùng-to-đầu tiên:
hg import -m "reversing changeset 15302" 15302.rev.patch
hg import -m "reversing changeset 15292" 15292.rev.patch
...
Quá trình này bị gián đoạn nhiều lần cho các ô hợp nhất đã không đi qua sẽ tự động, nơi mà tôi đã phải tự áp dụng thay đổi vào một tập tin từ tập tin .rej và sau đó tự cam kết, trước khi chọn lên hàng nhập khẩu nơi nó đã tắt.
Cuối cùng (trong một bản sao khác ... tôi đã đề cập đến tôi đã làm điều này tất cả trong một bản sao?) Tôi nén toàn bộ tập hợp các thay đổi ngược thành một changeset sử dụng hg histedit -o
và lệnh gấp của nó.
Bây giờ tôi có một thay đổi duy nhất mà tôi có thể đảo ngược và áp dụng nếu tôi quyết định đưa công việc trở lại sau này (Mặc dù nếu tôi băng qua cây cầu đó, tôi có thể áp dụng các bản vá "chuyển tiếp" một lần nữa để có được thông tin đổ lỗi/chú thích tốt hơn)
Nguồn
2012-05-22 01:01:57
Tôi thấy các lệnh có thể khác nhau có thể có liên quan. diff -r có thể mất nhiều phiên bản, nhưng tôi nhầm lẫn về ngữ nghĩa chính xác. export -r thực hiện nhiều thay đổi. backout mất một duy nhất. Tôi không chắc chắn về ưu/khuyết điểm của mỗi xuất khẩu –
không có cờ --reverse, sai lầm của tôi ở đó. –