Comment trouver qui a supprimé une ligne d'un fichier dans un référentiel SVN?


11

Je travaille sur un très gros projet (plus de 10000 versions) et il m'arrivait parfois de savoir qui des autres utilisateurs avait supprimé une ligne dans un fichier. Y a-t-il un moyen de faire ça? Je peux faire svn blameavec le numéro de révision pour vérifier si une ligne existe dans cette révision, puis voir dans quelle révision la ligne a disparu et voir qui a commis cette révision, mais cette procédure est boiteuse avec ce grand projet.

Existe-t-il un moyen plus intelligent de le faire?

Réponses:


5

Cela fait ce dont vous avez besoin automatiquement, mais pas très rapidement car il n'utilise pas la recherche binaire comme suggéré ci-dessus:

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

Je voudrais vérifier l'historique du fichier et essayer de trouver rapidement une révision où cette ligne est présente, puis blâmer entre HEAD et cette révision.

Si le fichier a subi 100 révisions depuis sa création, alors si vous effectuez une recherche binaire dans les révisions à la recherche de cette ligne, vous ne devriez pas avoir à regarder plus de 10 révisions différentes.


Je ne vois pas l'opinion, tout cela me semble être un bon conseil: P
Phoshi

1
C'est la même chose que mon approche. Je veux quelque chose de plus simple / plus rapide que de chercher dans 10 révisions.
Ivan Petrushev

... c'est 10 révisions. Au moment où vous avez posté la question ci-dessus, vous pourriez avoir terminé maintenant. À moins que ce soit quelque chose que vous devrez refaire, auquel cas ne tenez pas compte de mes commentaires.
ta.speot.is

2
Oui, c'est excellent pour un seul coup, mais j'ai besoin de quelque chose qui peut être utilisé régulièrement.
Ivan Petrushev

2

svn log --diffidentifiera les suppressions avec "-" dans la colonne zéro. Grep pour "r" également pour que vous puissiez voir la révision.

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

Il y en a aussi svn log --searchmais qui ne cherchera que le message de commit.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.