วิธีสร้าง svn diff แสดงเฉพาะการเปลี่ยนแปลงบรรทัดที่ไม่ใช่ช่องว่างระหว่างการแก้ไขสองครั้ง


95

ฉันสามารถรับความแตกต่างระหว่างการแก้ไขสองครั้งโดยใช้สิ่งที่ชอบ

svn diff -r 100:200 > file.diff

แต่ปัญหาคือมีหลายบรรทัดที่แสดงขึ้นเนื่องจากการเปลี่ยนช่องว่าง มีวิธีเขียนเฉพาะเส้นที่เปลี่ยนไปอย่างมีนัยสำคัญไม่ใช่แค่ในช่องว่างหรือไม่?

คำตอบ:


95

คุณสามารถใช้ได้

svn diff -r 100:200 -x -b > file.diff

หากคุณต้องการละเว้นช่องว่างทั้งหมด:

svn diff -x -w | less

ที่มา


ใหม่สำหรับ 1.6 หรือไม่? SVN ไม่เคยทำเช่นนั้น ฉันควรจะรักษาปัจจุบันมากกว่านี้ :)
Dan McGrath

4
1.5.4 เลย แต่: --ignore-space-change ไม่ใช่ --ignore-space-changes
ur

@ แดนแมคจี. ไม่ทราบว่าใหม่สำหรับ 1.6 หรือไม่ แต่รายการหมายเลข 8 ที่akatombo.com/en/comments/ignore_whitespace_in_a_subversion_diffแนะนำว่าใช้ได้ตั้งแต่ 1.4
jrbjazz

1
เนื่องจาก EOL อาจถือเป็นช่องว่างเช่นกันการเพิ่ม-x --ignore-eol-styleอาจจำเป็นหากลักษณะ EOL แตกต่างกันระหว่างการแก้ไข
nedim

5
การใช้svn diff -x -wบางครั้งอาจมีประโยชน์เช่นกันเนื่องจากไม่สนใจช่องว่างที่มากขึ้น (นามแฝงสำหรับการละเว้นทุกช่องว่าง)
Kendall


7

คุณสามารถใช้คำสั่ง diff ทางเลือกโดยใช้อาร์กิวเมนต์ --diff-cmd สำหรับ svn diff diff เป็นยูทิลิตี้ที่ดีที่มีคุณสมบัติมากมายสำหรับการละเว้นช่องว่าง

ตัวอย่างเช่น:

svn diff --diff-cmd /usr/bin/diff -x "-w"

11
จริงๆแล้วฉันใช้ svn diff --diff-cmd / usr / bin / diff -x "-w" -r 2000: 2100> jj1 และมันก็ใช้ได้ ขอบคุณ
umar

@umar: นี่เป็นวิธีเดียวที่ดูเหมือนจะใช้ได้กับฉัน
Lightness Races ใน Orbit

7

โปรดทราบว่าจุดสิ้นสุดของบรรทัดไม่ถือเป็นช่องว่างในสถานการณ์นี้และจะต้องถูกละเว้นด้วย:

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