2011-10-30 21 views
8

Kho lưu trữ thủy ngân của chúng tôi bị kẹt khi cố gắng cập nhật cho chi nhánh cũ có cặp phụ/sửa đổi không tồn tại nữa.Làm thế nào để sửa chữa một repo Mercurial mà không cập nhật vì điểm để thiếu sửa đổi trong subrepo?

abort: unknown revision '22e9bb6a6cd98be85b995f632b2f72d6298f9354'! 

Có cách nào để nói với Mercurial để nâng cấp lên phiên bản hoặc chi nhánh nhưng không cố gắng để cập nhật các subrepos?

+0

Cảm ơn bạn đã đặt câu hỏi này. FWIW, có vẻ như điều này đã được vá hai năm sau khi bạn hỏi: http://mercurial.808500.n3.nabble.com/PATCH-subrepo-check-phase-of-state-in-each-subrepositories-before-committing-td4005250 .html – weberc2

Trả lời

6

Đường phụ có còn tồn tại ở một nơi khác không? Bạn có thể thay đổi con trỏ đến nó bằng cách sử dụng phần [subpaths], cung cấp một lớp dịch ở trên các vị trí trong .hgsub.

Nếu nó thực sự không tồn tại bất cứ nơi nào bạn có thể vì vậy một số kỳ diệu sâu như:

hg debugsetparent REVISION_YOU_WANT 
cat /dev/null > .hgsub # put an empty .hgsub in place 
hg commit .hgsub 
hg update tip 

Điều đó sẽ tạo ra một phiên bản mới đó là giống như REVISION_YOU_WANT ngoại trừ nó có một tập tin .hgsub rỗng, vì vậy bạn có thể sau đó cập nhật nó.

Sẽ tốt hơn nếu bạn có thể tìm thấy subrepo tại một số vị trí mới và trỏ đến nó bằng các đường phụ.

+0

Đây có phải là hack sẽ được tuyên truyền để repos khác trong anyway thời gian tới tôi đẩy hoặc nó chỉ là địa phương? – Pol

+0

Nếu bạn cam kết, nó sẽ được tuyên truyền khi 'đẩy. Nếu bạn không muốn bản sao đó trước khi hành động. Các bản sao cục bộ (gần) tức thời và mất (gần) không có không gian đĩa - chúng là một cách tuyệt vời để thử điều đó. –

+2

Lưu ý rằng nếu cam kết bạn đang cố gắng cập nhật trở lại là trên một chi nhánh được đặt tên (khác với mặc định), sau khi bạn thực hiện hg debugsetparent , bạn cũng sẽ phải thực hiện chi nhánh hg . –

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