คุณจะตรวจสอบไฟล์ทั้งหมดที่เปลี่ยนแปลงในชุดการเปลี่ยนแปลงที่กำหนดได้อย่างไร?
ฉันไม่ได้มองหาความแตกต่างในกรณีนี้เพียงแค่รายการเพิ่ม / ลบ / แก้ไข
hg log -vprX
ทำรายการความแตกต่าง แต่ฉันแค่ต้องการไฟล์
คุณจะตรวจสอบไฟล์ทั้งหมดที่เปลี่ยนแปลงในชุดการเปลี่ยนแปลงที่กำหนดได้อย่างไร?
ฉันไม่ได้มองหาความแตกต่างในกรณีนี้เพียงแค่รายการเพิ่ม / ลบ / แก้ไข
hg log -vprX
ทำรายการความแตกต่าง แต่ฉันแค่ต้องการไฟล์
คำตอบ:
หากคุณต้องการแสดงเฉพาะไฟล์ที่มีการเปลี่ยนแปลงคุณควรใช้ "status command" ต่อไปนี้จะแสดงรายการการเปลี่ยนแปลงของไฟล์ใน REV ฉบับแก้ไข
hg status --change REV
-n
/ --no-status
ตั้งค่าสถานะด้วย
hg status --no-status --change REV
hg status --rev REV~1:REV
ที่เคยทำมาก
hg status --change .
เพียงแค่ลบออกp
จากรายการของคุณhg log -vpr
จะแสดงรายการไฟล์ -p
หมายถึงแสดงแพทช์ คุณยังสามารถใช้เทมเพลตเพื่อจัดรูปแบบผลลัพธ์ตามรสนิยมของคุณ
hg status --change .
ทำงานได้ดีขึ้นและให้คำนำหน้าการดำเนินการไฟล์ (A \ M \ D ฯลฯ ) และเส้นทางสัมพัทธ์ที่ดีกว่า
ฉันรู้ว่าคำถามนี้มีไว้สำหรับชุดการเปลี่ยนแปลงเดียว แต่ถ้าคุณต้องการให้ไฟล์ทั้งหมดถูกแก้ไขสำหรับชุดการเปลี่ยนแปลงต่างๆคุณสามารถทำได้
hg status --rev 1 --rev 10 -m
hg log -r BEGIN:END --template "{files}\n"
ตามที่ @ geoffrey-zheng และ @ton เขียนไว้เมื่อสองปีก่อน !!!
hg status --rev BEGIN --rev END
คือ 1. จำง่ายกว่าhg log -r BEGIN:END --template "{files}\n"
มาก 2. พิมพ์ไฟล์ในบรรทัดแยกกันโดยไม่ต้องใช้sed
(@Eric Lawler) หรือjoin()
(@Foxichu); 3. หากไม่มี-m
แฟล็กจะแสดงไม่เพียง แต่แก้ไข แต่ยังเพิ่มและลบไฟล์ (ใช้สีมาตรฐานที่ดีที่นี่ด้วย) 4. มี-a
และ-r
แฟล็กที่อนุญาตให้มีการกรองที่แตกต่างกัน 5. ถ้าใครไม่ต้องการคำนำหน้าสถานะก็มี-n
ตัวเลือกที่จะระงับมัน
hg status --change .
.
เป็นชวเลขสำหรับ rev ปัจจุบันเช่นเดียวกับ@HEAD
ใน Git
hg status
hg status --change REV_ID
พบคำถามนี้ผ่าน Google สำหรับแนวคิดที่คล้ายกัน หากต้องการแสดงไฟล์ทั้งหมดที่มีการเปลี่ยนแปลงผ่านช่วงของการแก้ไขก็เป็นเรื่องง่ายที่:
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"
จะแสดงรายการไฟล์แต่ละไฟล์ที่เปลี่ยนแปลงหรือเพิ่มในแต่ละชุดการเปลี่ยนแปลงตั้งแต่ [start rev] ถึง [end rev] โดยไฟล์ของชุดการเปลี่ยนแปลงแต่ละไฟล์จะขึ้นบรรทัดใหม่ สลับ{file_mods}{file_adds}
กับ{files}
การแสดงไฟล์ทั้งหมดที่มีการปรับเปลี่ยนเพิ่มหรือลบออกsed -e 's/ /\n/g'
จะแยกไฟล์ทั้งหมดเพื่อแสดงในบรรทัดแยกกันและsort
จะเอ้อจัดเรียงรายการให้คุณเพื่อให้เราสามารถกรองรายการด้วย uniquniq
จะกรองรายการเพื่อลบรายการที่ซ้ำกัน - ไฟล์ที่เปลี่ยนแปลงในการแก้ไขมากกว่าหนึ่งครั้ง--template
แก้ปัญหาชั่นโดยไม่ต้องมีข้อบกพร่องเหล่านี้อาจจะสร้างขึ้นโดยใช้join()
การแนะนำโดย @Foxichu
ฉันรู้ว่าคำถามนี้เป็นคำถามเก่าและฉันไม่แปลกใจเลยว่าไม่มีใครเสนอรูปแบบรหัสที่แก้ไขแล้ว OP ฉันมีรายชื่อของการแก้ไข / เพิ่มไฟล์ / ลบ (ไม่ได้ระบุว่าซึ่งเป็นที่แม้ว่า) hg log -v
โดยเพียงแค่การทำงาน หรือสิ่งที่ฉันต้องการจริงๆhg log -v -l5
เพื่อดูไฟล์ที่ได้รับการแก้ไข / เพิ่ม / ลบในการคอมมิต 5 ครั้งล่าสุด (รวมถึงไฟล์ที่ฉันยังไม่ได้ส่งไปยัง repo)
หากคุณชอบร้านค้าส่วนใหญ่คุณใช้ระบบจองตั๋วเพื่อติดตามการเปลี่ยนแปลง หากคุณทราบหมายเลขตั๋วและต้องการค้นหาคอมมิตทั้งหมดที่เกี่ยวข้องกับตั๋วนั้น (สมมติว่าคุณใส่หมายเลขตั๋วในข้อความคอมมิต) คุณสามารถใช้:
hg log -k TICKET_NUMBER
สิ่งนี้จะแสดงการแก้ไขทั้งหมดที่เกี่ยวข้องกับตั๋ว อย่างไรก็ตามจะไม่แสดงรายการไฟล์ คุณสามารถใช้หนึ่งในคำตอบด้านบนเพื่อรับรายการไฟล์ที่เกี่ยวข้องกับการแก้ไข
เพื่อให้ง่ายขึ้นด้วยการรวมข้อมูลจากคำตอบก่อนหน้านี้คุณสามารถทำสิ่งต่อไปนี้เพื่อค้นหา commits รวมถึงไฟล์ที่เปลี่ยนแปลง:
hg log -vk TICKET_NUMBER