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?

Ivan Petrushev
la source

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 
Peter Brülls
la source
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.

ta.speot.is
la source
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.

Robert Calhoun
la source