In Hash sửa đổi Mercurial hiện tại?


124

Có cách nào tốt hơn để trích xuất băm sửa đổi hiện tại trong Mercurial hơn

hg log -l1|grep changeset|cut -d: -f3

?

Một phần của tập lệnh triển khai ứng dụng web của tôi "gắn thẻ" tarball ứng dụng đã tải lên với hàm băm sửa đổi độc đáo.


2
Lưu ý rằng hg log -l 1cung cấp cho bạn các thay đổi gần đây nhất, không nhất thiết là thay đổi mà bạn hiện đang cập nhật! Cờ -f giới hạn đầu ra nhật ký hg đối với tổ tiên của thư mục làm việc hiện tại, do đó hg log -f -l1gần với những gì bạn muốn.
không thấm nước

Câu trả lời:


196

Thử:

hg id -i

Thí dụ:

$ hg id -i
adc56745e928

22
Trong trường hợp mọi người bỏ lỡ các giải pháp bên dưới nếu bạn muốn sử dụng hàm băm đầy đủ: hg --debug id -inếu bạn muốn hỗ trợ mẫu sử dụng hg parent --template '{node}' Đừng sử dụng hg log -l 1, bộ thay đổi kho lưu trữ mới nhất của nó, không phải là bộ thay đổi bản sao làm việc hiện tại.
Joseph Lisee

7
Không nên sử dụng --debug trong các tập lệnh, đầu ra đó được kiểm soát ít hơn so với khả năng tương thích ngược. Sử dụng mẫu. Nếu bạn muốn làm điều đó w / log thì sử dụng .dấu chấm làm bản sửa đổi.
Ry4an Brase

Cảm ơn Ry4an tôi không biết về "-r." tham khảo bản sửa đổi bản sao làm việc hiện tại. Đó có vẻ là động thái tốt hơn sau đó chuyển từ "log" sang "cha mẹ".
Joseph Lisee

Không thành vẫn đề. hg help revisionshg help revsetscó một số phím tắt mạnh mẽ điên rồ như thế.
Ry4an Brase

Nhưng nó không phải là cụ thể câu trả lời hầu hết các câu hỏi, vì afaik hg id -iin chỉ ngắn (12 kí tự) dạng id băm toàn cầu và vì hg identifythiếu --templateafaics không có cách nào để chỉ trích việc rà soát, không có gì khác kể từ khi trang người đàn ông nói nó in một bản tóm tắt.
Shelby Moore III

41
hg --debug id -i

Điều này sẽ tạo ra hàm băm dài, cộng với nếu có những thay đổi không được cam kết.


Đó dường như là mặc định trong 3.1.2
nickd

1
Bỏ phiếu vì nhận xét của Ry4an .
Shelby Moore III

20

Bạn có thể sử dụng --template với lệnh cha, tôi sử dụng điều này để có được hàm băm dài:

hg parent --template '{node}'

Trang hg man nói hg parentsĐỔI , mặc dù có lẽ đó không phải là trường hợp khi bạn viết câu trả lời này. Nếu có một sự hợp nhất không được cam kết, có hai phiên bản cha .
Shelby Moore III

2
Ai đó có thể cho chúng tôi biết lý do tại sao hg cha mẹ bị phản đối và chúng ta nên sử dụng những gì thay thế?
Vincent

17

Tóm tắt câu trả lời và câu trả lời của họ, có vẻ như đây là cách tốt nhất để in định danh duy nhất (không phải dạng ngắn) của phiên bản hiện tại :

hg log -l 1 --template '{node}\n' -r .

Lưu ý nếu có sự hợp nhất không được cam kết , .(dấu chấm) chỉ hiển thị cha mẹ đầu tiên của hai cha mẹ của nhóm làm việc.
Shelby Moore III

9
hg log -l 1 --template '{node|short}\n'

Xem các tài liệu , đoạn văn "Những điều cơ bản của khuôn mẫu" và sau đây.


2
Tôi muốn gần như điều này, nhưng với hàm băm dài. Bí danh lidđể log -l 1 --template '{node}\n'đạt được chính xác điều này - in ID sửa đổi đầy đủ.
Michael Ekstrand

6
Điều này in những thay đổi kéo gần đây nhất. Thư mục làm việc của chúng tôi có thể được cập nhật lên một bộ thay đổi cũ hơn. Để in thay đổi, chúng tôi được cập nhật, sử dụng "hg id". Vấn đề duy nhất là, "hg id" không hỗ trợ các mẫu cũng như không có tùy chọn in băm dài (trừ khi có ai đó biết cách làm điều đó).
Eiver

1
Như Eiver đã nói điều này không in bản sửa đổi thực sự trong bản sao làm việc của bạn chỉ là bản mới nhất trong kho lưu trữ của bạn. Bởi vì sử dụng giải pháp này có thể giới thiệu các lỗi theo dõi, tôi đã bỏ phiếu cho giải pháp này.
Joseph Lisee

1
Ditto Joe's downvote. Ngoài ra @Eiver sử dụng hg --debug id -inhư đã nói ở nơi khác.
AJP

3

Lệnh không ĐỔI cụ thể nhất do sự hiện diện của chỉ --templatecó thể in thông tin sửa đổi nếu sự đồng nhất đó là bắt buộc (như ngụ ý của câu hỏi):

hg log -l 1 -b . -T '{rev}:{node|short}\n'

Hoặc cho dạng băm dài độc đáo:

hg log -l 1 -r . -T '{node}\n'

Các -b .hoặc branch(.)(dot cho tên chi nhánh) có nghĩa là chi nhánh thư mục làm việc hiện tại-r .có nghĩa là sửa đổi thư mục làm việc hiện tại, được ghi nhận trong hg help revsetshg help revisions .

Lưu ý nếu có sự hợp nhất không được cam kết , .(dấu chấm) chỉ hiển thị cha mẹ đầu tiên của hai cha mẹ của nhóm làm việc.


3

Như những người khác đã chỉ ra, không sử dụng log -l.

Sử dụng hg log -r .để có được thông tin chi tiết, trái ngược với việc sử dụng hg idcó đầu ra bị hạn chế và nó không hỗ trợ các mẫu. Bạn cũng có thể tạo một bí danh nhỏ here = log -r .và sử dụng hg here. Nếu bạn chỉ muốn sử dụng băm hg log -r . --template '{node}\n'.


1

Trong trường hợp sử dụng TortoiseHg, bấm chuột phải vào hàng sửa đổi trong Bàn làm việc và chọn "Sao chép băm" (theo tài liệu ).

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.