34 votes

trouver la révision svn par le texte supprimé

Existe-t-il un moyen de trouver une révision SVN en recherchant une chaîne de texte qui a été supprimée dans le fichier? Je connais le texte exact à rechercher et le fichier à consulter, mais il existe des centaines de révisions.

32voto

martin_ljchan Points 577

En s'appuyant sur le script de khmarbaise, j'ai trouvé ceci:

 #!/bin/bash
file="$1"
REVISIONS=`svn log $file -q --stop-on-copy |grep "^r" | cut -d"r" -f2 | cut -d" " -f1`
for rev in $REVISIONS; do
    prevRev=$(($rev-1))
    difftext=`svn diff --old=$file@$prevRev --new=$file@$rev | tr -s " " | grep -v " -\ \- " | grep -e "$2"`
    if [ -n "$difftext" ]; then
        echo "$rev: $difftext"
    fi
done
 

passez le nom de fichier et la chaîne de recherche sur la ligne de commande:

 xyz.sh "filename" "text to search"
 

svn diff me donne à la fois le tour où il est ajouté et où il est supprimé; Je vais le laisser ici au cas où il serait utile à quiconque. Il y a un message d'erreur lors de la dernière révision dont je ne sais pas comment me débarrasser (j'ai encore beaucoup de bash à apprendre :)) mais les nombres de tours sont corrects.

9voto

khmarbaise Points 28405

juste un petit script bash qui filtre les lignes modifiées ... Si vous changez pom.xml dans votre fichier, avec une URL supplémentaire, vous avez ce dont vous avez besoin ... (Si vous êtes sur le système Unix). Mettez ce qui suit dans un fichier de script (xyz.sh) et effectuez un filtre sur la sortie.

 #!/bin/bash
REVISIONS=`svn log pom.xml -q|grep "^r" | cut -d"r" -f2 | cut -d" " -f1`
for rev in $REVISIONS; do
    svn blame -r$rev:$rev pom.xml | tr -s " " | grep -v " -\ \- "
done


xyz.sh | grep "Text you are searching for"
 

L'impression sera quelque chose comme:

 256 ......
 

Le 256 est la révision dans laquelle le changement a été effectué.

1voto

Ves Points 464

J'aime blameall.py .

Sa sortie pour un fichier contient toutes les lignes existantes et supprimées afin que je puisse voir les lignes supprimées dans le contexte environnant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X