วิธีการค้นหาผู้ที่ลบบรรทัดจากไฟล์ในที่เก็บ SVN?


12

ฉันทำงานในโครงการที่มีขนาดใหญ่มาก (มากกว่า 10,000 เวอร์ชัน) และบางครั้งมันก็เกิดขึ้นที่ฉันต้องรู้ว่าใครของผู้ใช้คนอื่นลบบรรทัดในไฟล์ มีวิธีทำเช่นนั้นหรือไม่? ฉันสามารถทำsvn blameกับหมายเลขการแก้ไขเพื่อตรวจสอบว่ามีบรรทัดอยู่ในการแก้ไขนั้นหรือไม่จากนั้นดูว่าการแก้ไขสายใดหายไปและดูว่าใครเป็นคนยืนยันการแก้ไขนั้น แต่ขั้นตอนนั้นอ่อนแอกับโครงการขนาดใหญ่นั้น

มีวิธีที่ฉลาดกว่าในการทำเช่นนั้นหรือไม่?

คำตอบ:


5

นี่คือสิ่งที่คุณต้องการโดยอัตโนมัติ แต่ไม่เร็วมากเพราะไม่ได้ใช้การค้นหาแบบไบนารีตามที่แนะนำไว้ข้างต้น:

svn log FILE | egrep '^r[0-9]' | sed -e 's/ .*//' | while read rev; do echo $rev ; svn cat FILE -"$rev" | grep "case STRING" && break  ; done 

5

ฉันจะตรวจสอบประวัติของไฟล์แล้วลองค้นหาการแก้ไขที่มีบรรทัดนั้นอยู่อย่างรวดเร็วแล้วโทษระหว่าง HEAD กับการแก้ไขนั้น

หากไฟล์ได้ผ่านการแก้ไข 100 ครั้งนับตั้งแต่เริ่มต้นถ้าคุณค้นหาไบนารีผ่านการแก้ไขเพื่อค้นหาบรรทัดนั้นคุณไม่ควรดูการแก้ไขอื่นมากกว่า 10 ครั้ง


ฉันไม่เห็นความคิดเห็นทุกอย่างดูเหมือนคำแนะนำที่ดีสำหรับฉัน: P
Phoshi

1
นี่เป็นเช่นเดียวกับแนวทางของฉัน ฉันต้องการบางสิ่งที่ง่ายกว่า / เร็วกว่าการค้นหาในการแก้ไข 10 รายการ
Ivan Petrushev

... มันคือการแก้ไข 10 ครั้ง ตามเวลาที่คุณโพสต์คำถามข้างต้นคุณสามารถทำได้ตอนนี้ ถ้านี่ไม่ใช่สิ่งที่คุณจะต้องทำอีกครั้งซึ่งในกรณีนี้จะไม่สนใจความคิดเห็นของฉัน
ta.speot.is

2
ใช่มันยอดเยี่ยมสำหรับนัดเดียว แต่ฉันต้องการบางสิ่งบางอย่างที่สามารถใช้งานได้เป็นประจำ
Ivan Petrushev

3

svn log --diffจะระบุการลบด้วย "-" ในคอลัมน์ศูนย์ Grep สำหรับ "r" ด้วยเช่นกันคุณจึงสามารถเห็นการแก้ไขได้

% svn log --diff src/fozbo.cpp -r22222:HEAD | grep -e '^r' -e '^-.*xyzzy'
r22222 | jruser | 2016-07-19 20:16:07 -0400 (Tue, 19 Jul 2016) | 1 line
-   else if ( password== "xyzzy") {

นอกจากนี้ยังมีsvn log --searchแต่จะค้นหาเฉพาะข้อความยืนยัน

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