วิธีใช้ WinMerge เป็นเครื่องมือ Diff สำหรับ Mercurial


19

ฉันใช้ระบบควบคุมเวอร์ชันกระจาย Mercurial และฉันสงสัยว่าฉันจะกำหนดค่าให้ใช้ WinMerge ได้อย่างไรแทนที่จะใช้เครื่องมือ diff ภายในของตัวเอง ฉันได้รับ WinMerge เป็นเครื่องมือผสานแล้ว แต่ฉันต้องการให้ Mercurial ใช้ WinMerge เมื่อฉันพิมพ์:

hg diff

มีวิธีการทำเช่นนั้นหรือฉันติดอยู่กับเครื่องมือ diff ภายในของ Mercurial หรือไม่?

คำตอบ:


24

จากTortoiseHg คำถามที่พบบ่อย :

เพิ่มบรรทัดเหล่านี้ลงในไฟล์ Mercurial.ini ส่วนตัวของคุณ

[ส่วนขยาย]
extdiff =

[extdiff]
cmd.winmerge = C: \ Program Files \ WinMerge \ WinMergeU.exe
opts.winmerge = / e / x / u / wl

ตอนนี้เรียกใช้เครื่องมือการตั้งค่าส่วนกลาง บนแท็บ TortoiseHg คุณควรเห็น winmerge พร้อมใช้งานในรายการดรอปดาวน์สำหรับ Visual Diff Command เลือก winmerge นำไปใช้แล้วปิด

วิธีการเดียวกันนี้สามารถใช้เพื่อเพิ่มเกือบทุกเครื่องมือ diff ภาพ แต่โปรดทราบว่าเครื่องมือ diff ของคุณจะต้องสามารถสนับสนุนไดเรกทอรี diffs หาก TortoiseHg ใช้งานได้เว้นแต่ว่าคุณใช้รีลีส 0.8 หรือใหม่กว่า

โจเอลยังจัดหาวิธีแก้ปัญหาที่นี่ในกรณีที่คุณเรียกใช้ Mercurial ภายใต้ Cygwin

คำอธิบายของ WinMerge args บรรทัดคำสั่งที่นี่ สรุป:

  • /e ช่วยให้คุณสามารถปิด WinMerge ได้ด้วยการกดปุ่ม Esc เพียงครั้งเดียว
  • /x ปิด WinMerge (หลังจากแสดงกล่องโต้ตอบข้อมูล) เมื่อคุณเริ่มเปรียบเทียบไฟล์ที่เหมือนกัน
  • /u ป้องกัน WinMerge จากการเพิ่มพา ธ (ซ้ายหรือขวา) ไปยังรายการที่ใช้ล่าสุด (MRU)
  • /wl เปิดทางด้านซ้ายเป็นแบบอ่านอย่างเดียว

ฉันไม่ได้ใช้ TortoiseHG และฉันไม่ได้ใช้งาน Mercurial ภายใต้ Cygwin ฉันใช้บรรทัดคำสั่งเริ่มต้นติดตั้ง Mercurial จากmercurial.berkwood.com วิธีการแก้ปัญหาของคุณใช้งานได้ในแง่ที่ว่าฉันสามารถพิมพ์ 'hg winmerge <file>' เพื่อดูความแตกต่างระหว่างมันกับเวอร์ชั่นก่อนหน้า แต่ 'hg diff <file>' ยังคงแสดงผลที่แตกต่างกัน (น่าเกลียด) เครื่องมือ. ยังดีกว่าไม่มีอะไร
ปริมาณ

ฉันคิดว่าคำตอบนี้ถือว่าคุณจะแก้ไข Mercurial.ini ในไดเรกทอรี TortoiseHg (เช่น C: \ Program Files \ TortoiseHg) หากคุณแก้ไขไฟล์ในไดเรกทอรี Mercurial (เช่น C: \ Program Files \ Mercurial) สิ่งนี้จะไม่ทำงาน (อย่างน้อยมันก็ไม่เหมาะกับฉัน)
Ashley Davis

ยัง c: \ Program Files (x86) \ WinMerge \ WinMergeU.exe
Avram

ตรวจสอบให้แน่ใจว่าคุณไม่ใส่เครื่องหมายคำพูดรอบ ๆ พา ธ ไปยัง WinMerge ในไฟล์ปรับแต่งมิฉะนั้นไฟล์จะไม่ทำงาน
Drealmer

7

นี่คือวิธีการทำงานสำหรับฉัน - บรรทัดคำสั่ง Mercurial บริสุทธิ์นอกเหนือจาก Tortoisehg

ก่อนอื่นแก้ไขไฟล์ (ในหน้าต่าง 64 บิต)

C: \ Program Files (x86) \ Mercurial \ Mercurial.ini

[extensions]
; must uncomment this line
extdiff =

[extdiff]
; i'm using winmerge unicode version
cmd.winmerge = C:\Program Files (x86)\WinMerge\WinMergeU.exe
; it explains winmerge command line parameters here: http://winmerge.org/docs/manual/CommandLine.html
opts.winmerge = /r /e /x /u /wl

จากนั้นคุณสามารถใช้ "hg winmerge ... " แทน "hg diff ... "


ฉันพบว่ามีประโยชน์ในการเรียกใช้ winmerge ในพื้นหลังเพื่อให้ฉันสามารถดูการเปลี่ยนแปลงในขณะที่ตั้งค่าข้อความยืนยันและแสดงสถิติว่าไฟล์ใดมีการเปลี่ยนแปลงในบรรทัดคำสั่ง ในการทำเช่นนี้ให้ใส่แบตช์ไฟล์ในไดเรกทอรี Mercurial ที่มี start / b hg winmerge <NEWLINE> hg diff --stat
danio

3

คำตอบที่ให้ไว้ก่อนหน้านี้ไม่ได้ให้ผลที่ต้องการ พวกเขาไม่อนุญาตให้ทำการแก้ไขที่แตกต่างและในสถานที่แก้ไข (ฉันหมายถึงฟังก์ชั่นเดียวกันซึ่งมีให้สำหรับ TortoiseSVN จากกล่อง) ในการทำเช่นนั้นฉันได้เพิ่มเพิ่มเติมใน mercurial.ini ในส่วนนี้:

[merge-tools]
winmerge.regkey=Software\Thingamahoochie\WinMerge\
winmerge.regname=Executable
winmerge.priority=-10
winmerge.args=/e /x /wl /ub /dl other /dr local $other $local $output
winmerge.fixeol=True
winmerge.checkchanged=True
winmerge.gui=True
winmerge.diffargs=/r /e /x /ub /wl /dl '$plabel1' /dr '$clabel' $parent $child
winmerge.diff3args=
winmerge.dirdiff=True

สิ่งนี้นำมาจากhttp://blog.stevehorn.cc/blog/easy-mercurial-visual-diff-between-two.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.