สร้างรายการไฟล์ที่เปลี่ยนแปลงระหว่างเวอร์ชัน hg


118

ฉันต้องการสร้างรายการไฟล์ที่เปลี่ยนแปลงระหว่างการแก้ไขสองครั้งในไดเร็กทอรีที่กำหนดใน Mercurial

โดยเฉพาะอย่างยิ่งฉันไม่สนใจในสิ่งที่เปลี่ยนแปลง แต่ไฟล์ใดที่เปลี่ยนแปลงในไดเร็กทอรีนั้น

เช่นสมมติว่าระหว่างthenและotherthenไฟล์มีการเปลี่ยนแปลงเพียง 2 ไฟล์:

>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>

คำสั่งสมมุติคืออะไร? ฉันได้ลองใช้ diff และ log แล้ว แต่ฉันไม่เห็นวิธีโน้มน้าวให้พวกเขาทำ: ไม่ว่าฉันจะได้รับโปรแกรมแก้ไข (diff) หรือฉันได้รับ repo ทั้งหมด (บันทึก)

คำตอบ:


166
hg status --rev x:y

ที่ไหนxและyเป็นหมายเลขแก้ไขที่ต้องการ (หรือแท็กหรือชื่อสาขา)

หากคุณใช้เทอร์มินัลใน windows hg status --rev x:y> your-file.txtให้เพิ่มเพื่อบันทึกรายการลงในไฟล์


3
หากต้องการดูเฉพาะการเปลี่ยนแปลงในไดเรกทอรีปัจจุบัน:hg status --rev x:y .
ผู้ใช้

14
หากต้องการดูการเปลี่ยนแปลงในการแก้ไขล่าสุด: hg status --rev .^
kunigami

8
หากต้องการรับเฉพาะรายชื่อไฟล์ (และไม่มีอักขระนำหน้าที่ระบุประเภทของการเปลี่ยนแปลง) ให้ต่อท้าย-nเช่นhg status --rev x:y -n
เสือชีต้า

1
hg status --change .แสดงรายการไฟล์ที่เปลี่ยนแปลงใน.รายการเดียวกับhg status --rev .^แต่โดยตรงมากกว่า
Metaxis

14

สถานะคือสิ่งที่คุณต้องการ

แต่ทั้งนี้ขึ้นอยู่กับความหมายของคุณโดย "ระหว่างการแก้ไขสองครั้ง" คุณอาจพิจารณาใช้ช่วง " x :: y " (DAG - Directed Acyclic Graph)

ให้ชุดการเปลี่ยนแปลงแบบขนาน

1--2---4 \---3

hg status --rev 1:4 จะส่งคืน (1,2,3,4) นั่นคืออะไรก็ได้ที่อยู่ระหว่างและรวมถึงจุดสิ้นสุดตามตัวเลขในท้องถิ่นrev . สิ่งนี้อาจ (และส่วนใหญ่อาจจะ) ส่งคืนผลลัพธ์ที่แตกต่างกันในที่เก็บอื่นแม้ว่าจะเกี่ยวข้องกันก็ตาม!

hg status --rev 1::4จะคืนค่า (1,2,4) นั่นคือจุดสิ้นสุดและชุดการเปลี่ยนแปลงทั้งหมดซึ่งเป็นลูกหลานของ '1' และบรรพบุรุษของ '4'

กรณีหลัง x :: y มักมีประโยชน์มากกว่าในการใช้งานจริง นี่คือสิ่งที่คุณได้รับจาก TortoiseHg \ Visual Diff


> hg ช่วย revsets:

"x :: y" ช่วง DAG หมายถึงชุดการเปลี่ยนแปลงทั้งหมดที่สืบเชื้อสายมาจาก x และบรรพบุรุษของ y รวมทั้ง x และ y เอง หากจุดสิ้นสุดแรกถูกทิ้งไว้จะเท่ากับ "บรรพบุรุษ (y)" หากจุดที่สองถูกปล่อยทิ้งไว้จะเทียบเท่ากับ "ลูกหลาน (x)"


1
บางทีคุณอาจต้องรวมคำสั่งไว้อย่างชัดเจนเพื่อให้คำตอบของคุณไม่ขึ้นอยู่กับคำสั่งอื่นและพิสูจน์ได้ว่าโง่กว่า บางอย่างเช่น "ใช่สถานะคือสิ่งที่คุณต้องการเช่นhg status --rev x::y"
PhoneixS
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.