มีวิธีที่ดีกว่าในการแยกแฮชการแก้ไขปัจจุบันใน Mercurial มากกว่า
hg log -l1|grep changeset|cut -d: -f3
?
ส่วนหนึ่งของสคริปต์การปรับใช้ webapp ของฉัน "แท็ก" tarball ของแอปที่อัปโหลดพร้อมกับแฮชการแก้ไขที่เป็นเอกลักษณ์
มีวิธีที่ดีกว่าในการแยกแฮชการแก้ไขปัจจุบันใน Mercurial มากกว่า
hg log -l1|grep changeset|cut -d: -f3
?
ส่วนหนึ่งของสคริปต์การปรับใช้ webapp ของฉัน "แท็ก" tarball ของแอปที่อัปโหลดพร้อมกับแฮชการแก้ไขที่เป็นเอกลักษณ์
คำตอบ:
ลอง:
hg id -i
ตัวอย่าง:
$ hg id -i
adc56745e928
hg --debug id -i
หากคุณต้องการการสนับสนุนเทมเพลตให้ใช้hg parent --template '{node}'
Do not use hg log -l 1
ชุดการเปลี่ยนแปลงที่เก็บล่าสุดไม่ใช่ชุดการเปลี่ยนแปลงสำเนาที่ใช้งานได้ในปัจจุบัน
.
dot เป็นการแก้ไข
hg help revisions
และhg help revsets
มีทางลัดที่ทรงพลังแบบนั้น
hg id -i
พิมพ์เพียงสั้น (12 ตัวอักษร) รูปแบบของรหัสกัญชาทั่วโลกและเนื่องจากhg identify
ขาด--template
afaics มีวิธีที่จะดึงเพียงการแก้ไขและไม่มีอะไรอื่นตั้งแต่ไม่มีหน้าคนบอกว่ามัน พิมพ์สรุป
hg --debug id -i
สิ่งนี้จะส่งออกแฮชแบบยาวพร้อมด้วยเครื่องหมายบวกหากมีการเปลี่ยนแปลงที่ไม่ได้กำหนดไว้
คุณสามารถใช้ --template กับคำสั่ง parent ฉันใช้สิ่งนี้เพื่อรับแฮชแบบยาว:
hg parent --template '{node}'
hg parents
คือเลิกแม้ว่าบางทีที่อาจไม่ได้รับกรณีที่เมื่อคุณเขียนคำตอบนี้ หากมีการผสานที่ไม่ถูกผูกมัดจะมีการแก้ไขพาเรนต์สองรายการ
สรุปคำตอบและการตอบสนองของพวกเขาก็ดูเหมือนว่านี่เป็นวิธีที่ดีที่สุดในการพิมพ์ที่ไม่ซ้ำกัน (ไม่ได้แบบสั้น) ระบุในปัจจุบันรุ่น:
hg log -l 1 --template '{node}\n' -r .
hg log -l 1 --template '{node|short}\n'
ดูเอกสารย่อหน้า "พื้นฐานของเทมเพลต" และต่อไปนี้
lid
เพื่อให้log -l 1 --template '{node}\n'
บรรลุสิ่งนี้ - พิมพ์ ID การแก้ไขแบบเต็ม
hg --debug id -i
ตามที่กล่าวไว้ที่อื่น
คำสั่งที่ไม่ถูกยกเลิกที่เฉพาะเจาะจงที่สุดซึ่งเนื่องจากการมีอยู่ของ--template
สามารถพิมพ์เฉพาะข้อมูลการแก้ไขหากต้องการความกระชับนั้น (ตามนัยของคำถาม):
hg log -l 1 -b . -T '{rev}:{node|short}\n'
หรือสำหรับแฮชแบบยาวที่ไม่ซ้ำใคร:
hg log -l 1 -r . -T '{node}\n'
-b .
หรือbranch(.)
(dot สำหรับชื่อสาขา) หมายถึงสาขาไดเรกทอรีการทำงานปัจจุบันและ-r .
หมายถึงการแก้ไขไดเรกทอรีการทำงานปัจจุบันซึ่งเป็นเอกสารในและhg help revsets
hg help revisions
หมายเหตุหากมีการผสานที่ไม่ได้กำหนดไว้.
(dot) จะแสดงเฉพาะพาเรนต์แรกของผู้ปกครองสองคนของกลุ่มการทำงาน
ตามที่คนอื่นชี้ไว้อย่าใช้log -l
.
ใช้hg log -r .
เพื่อรับข้อมูลโดยละเอียดซึ่งต่างจากการใช้hg id
เอาต์พุตที่มี จำกัด และไม่รองรับเทมเพลต นอกจากนี้คุณยังสามารถสร้างนามแฝงเล็กน้อยเช่นและการใช้งานhere = log -r .
hg here
หากคุณต้องการใช้แฮชhg log -r . --template '{node}\n'
เท่านั้น
ในกรณีที่ใช้ TortoiseHg ให้คลิกขวาที่แถวการแก้ไขใน Workbench และเลือก "Copy hash" (ตามเอกสารประกอบ )
hg log -l 1
จะให้ชุดการเปลี่ยนแปลงล่าสุดแก่คุณซึ่งไม่จำเป็นต้องเป็นชุดการเปลี่ยนแปลงที่คุณกำลังอัปเดตอยู่ในขณะนี้! แฟล็ก -f จำกัด เอาต์พุตบันทึก hg ไว้ที่บรรพบุรุษของไดเร็กทอรีการทำงานปัจจุบันดังนั้นจึงhg log -f -l1
ใกล้เคียงกับสิ่งที่คุณต้องการมากขึ้น