2009-11-17 19 views
12

Trong Git sửa đổi băm hiện được lưu trữ trongLàm thế nào để tôi có được bản sửa đổi thủy ngân hiện tại mà không cần gọi hg?

.git/refs/heads/master 

Có tương đương trong Mercurial mà không yêu cầu tôi thực hiện cuộc gọi đến HG đăng nhập -l1? Tôi biết tôi có thể lấy nhánh hiện tại trong .hg/branch.

Điều này là "hiển thị" hàm băm hg hiện tại trên màn hình khi duyệt một trang web.

Trả lời

25
$ hg parents --template="{node}\n" 
52b8cee1e59c91b9147635b7f44a3a8896ee0b00 

$ hexdump -n 20 -e '1/1 "%02x"' .hg/dirstate 
52b8cee1e59c91b9147635b7f44a3a8896ee0b00 

Nhưng tại sao bạn không thể gọi hg parents --template="{node}\n"?

+5

Tôi bị ấn tượng bởi kỹ năng nhị phân của bạn :) – tonfa

+3

Heh, tôi vừa mở dirstate.py và nhận thấy rằng băm gốc là hai mươi hai đầu tiên các phần byte của dirstate.py. Một chút googling đã cho tôi các chuỗi định dạng hexdump thích hợp (thần những điều đó là khủng khiếp). –

0

Tôi không phải là chuyên gia về thủy ngân, nhưng thực hiện phương pháp tiếp cận búa tạ và thực hiện grep cho băm sửa đổi hiện tại trong .hg chỉ tạo ra một giá trị có thể, và đó là .hg/branchheads.cache.

Tôi tin rằng điều này lưu trữ tất cả những người đứng đầu kho lưu trữ, vì vậy nó có thể có nhiều mục nhập. Theo mặc định, tôi nghĩ rằng nó sẽ luôn có hai mục, một cho nhánh mặc định và một cho số sửa đổi đầu.

Tôi nghĩ rằng branchheads.cache được xây dựng lại bất cứ khi nào thay đổi mới đến, do đó, nó luôn luôn nên có bản sửa đổi băm hiện tại chính xác trong đó.

+2

grep cho phiên bản nhị phân :) (nó thực sự trong '.hg/dirstate') – tonfa

+1

đủ Fair - Tôi nên khóa búa tạ mà đi và tham gia vào não. – Tom

+0

Vấn đề với điều này là nó cho thấy người đứng đầu của chi nhánh, và sẽ không chính xác trong việc hiển thị rev hiện tại nếu bạn không ở trên một chi nhánh đầu. (thông qua 'hg up 3' nếu đầu và tất cả các nhánh khác cao hơn) – Eric

2

hg id --debug -i -r .

+2

Câu hỏi được hỏi "không gọi hg" – mjs

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