Come trovare chi ha eliminato una riga da un file in un repository SVN?


11

Lavoro su un progetto molto grande (oltre 10000 versioni) e a volte è successo che ho bisogno di sapere chi degli altri utenti ha eliminato una riga in un file. C'è un modo per farlo? Posso fare svn blamecon il numero di revisione per verificare se esiste una linea in quella revisione, quindi vedere in quale revisione la linea è andata e vedere chi ha commesso quella revisione, ma quella procedura è zoppa con quel grande progetto.

C'è un modo più intelligente per farlo?

Risposte:


5

Questo fa quello che ti serve automaticamente, anche se non molto velocemente perché non usa la ricerca binaria come suggerito sopra:

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

Vorrei controllare la cronologia del file e provare a trovare rapidamente una revisione in cui è presente quella riga, quindi incolpare HEAD e quella revisione.

Se il file ha subito 100 revisioni dall'inizio, quindi se si esegue una ricerca binaria tra le revisioni alla ricerca di quella riga, non è necessario esaminare più di 10 revisioni diverse.


Non vedo l'opinione, mi sembra tutto un buon consiglio: P
Phoshi

1
Questo è lo stesso del mio approccio. Voglio qualcosa di più semplice / più veloce di guardare in 10 revisioni.
Ivan Petrushev,

... sono 10 revisioni. Al momento in cui hai pubblicato la domanda di cui sopra, ora potresti farcela. A meno che non sia qualcosa che dovrai ripetere, nel qual caso ignora i miei commenti.
ta.speot.is

2
Sì, è eccellente per un singolo colpo, ma ho bisogno di qualcosa che possa essere usato spesso su base regolare.
Ivan Petrushev,

2

svn log --diffidentificherà le eliminazioni con "-" nella colonna zero. Grep per "r" anche in modo da poter vedere la revisione.

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

C'è anche svn log --searchma che cercherà solo il messaggio di commit.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.