Bagaimana menemukan siapa yang menghapus baris dari file di repositori SVN?


11

Saya mengerjakan proyek yang sangat besar (versi 10.000+) dan kadang-kadang saya perlu tahu siapa pengguna lain yang menghapus beberapa baris dalam sebuah file. Apakah ada cara untuk melakukan itu? Saya dapat melakukan svn blamedengan nomor revisi untuk memeriksa apakah ada garis dalam revisi itu, kemudian melihat di mana revisi garis hilang dan melihat siapa yang melakukan revisi itu, tetapi prosedur itu timpang dengan proyek besar itu.

Apakah ada cara yang lebih cerdas untuk melakukan itu?

Jawaban:


5

Ini melakukan apa yang Anda butuhkan secara otomatis, meskipun tidak terlalu cepat karena tidak menggunakan pencarian biner seperti yang disarankan di atas:

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

Saya akan memeriksa riwayat file dan mencoba dan cepat menemukan revisi di mana garis itu ada, dan kemudian menyalahkan antara HEAD dan revisi itu.

Jika file telah melalui 100 revisi sejak awal maka jika Anda mencari biner melalui revisi mencari garis itu Anda tidak harus melihat lebih dari 10 revisi yang berbeda.


Saya tidak melihat pendapatnya, itu semua tampak seperti nasihat yang baik bagi saya: P
Phoshi

1
Ini sama dengan pendekatan saya. Saya ingin sesuatu yang lebih sederhana / lebih cepat daripada mencari di 10 revisi.
Ivan Petrushev

... ini 10 revisi. Pada saat Anda memposting pertanyaan di atas Anda dapat dilakukan sekarang. Kecuali jika ini adalah sesuatu yang harus Anda lakukan lagi, dalam hal ini mengabaikan komentar saya.
ta.speot.is

2
Yap, ini sangat baik untuk satu tembakan, tapi saya butuh sesuatu yang bisa sering digunakan secara teratur.
Ivan Petrushev

2

svn log --diffakan mengidentifikasi penghapusan dengan "-" di kolom nol. Grep untuk "r" juga sehingga Anda dapat melihat revisi tersebut.

% 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") {

Ada juga svn log --searchtetapi itu hanya akan mencari pesan komit.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.