คุณจะตรวจสอบไฟล์ทั้งหมดที่เปลี่ยนแปลงในชุดการเปลี่ยนแปลงที่กำหนดได้อย่างไร?
ฉันไม่ได้มองหาความแตกต่างในกรณีนี้เพียงแค่รายการเพิ่ม / ลบ / แก้ไข
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