Tôi không mong đợi đây sẽ là một câu trả lời chiến thắng, nhưng đó là một tình huống khá bất thường. Đề cập đến trong trường hợp ai đó không phải tôi chạy vào đó.
Hôm nay tôi nhận được "chờ khóa trên kho" trên lệnh hg đẩy.
Khi tôi giết lệnh hung hg, tôi không thể thấy .hg / store / lock
Khi tôi tìm kiếm .hg / store / lock trong khi lệnh được treo, nó đã tồn tại. Nhưng lockfile đã bị xóa khi lệnh hg bị giết.
Khi tôi đi đến mục tiêu đẩy và thực hiện hg pull, không có vấn đề gì.
Cuối cùng, tôi nhận ra rằng ID quá trình trên hg đẩy là thông báo chờ khóa đang thay đổi mỗi lần. Nó chỉ ra rằng "hg đẩy" đã treo chờ một khóa được giữ bởi chính nó (hoặc có thể là một quy trình con, tôi đã không điều tra thêm).
Hóa ra hai không gian làm việc, hãy gọi chúng là A và B, có các cây .hg được chia sẻ bởi symlink:
A/.hg --symlinked-to--> B/.hg
Đây KHÔNG phải là một điều tốt để làm với Mercurial. Mercurial không hiểu khái niệm hai không gian làm việc chia sẻ cùng một kho lưu trữ. Tuy nhiên, tôi hiểu rằng làm thế nào một người nào đó đến Mercurial từ một VCS khác có thể muốn điều này (Perforce, mặc dù không phải là DVCS; DVCS Bazaar có thể làm như vậy). Tôi ngạc nhiên khi một REP-ROOT / .hg được liên kết hoàn toàn hoạt động, mặc dù có vẻ như ngoại trừ việc đẩy này.