2009-10-29 13 views

Répondre

9

Ce que vous voulez faire est de faire un Blame sur ce fichier source et il vous montrera les révisions qui ont changé chacune des lignes de code.

Je ne suis pas au courant de toute commande qui serait en mesure de vous donner toutes les révisions pour une ligne de code donnée ... ce que vous pouvez faire est de faire un journal de spectacle sur un seul fichier, puis regardez chacun des révisions qui ont eu lieu au fil du temps.

+0

Y a-t-il aussi un moyen de trouver * toutes * les révisions qu'une certaine ligne a été modifiée? Blame ne me donnera que la dernière révision. –

+0

Non, cela vous montrera seulement qui a changé la ligne en dernier. Il voulait quelque chose qu'il puisse pointer sur une ligne et montrer dans quelles révisions cette ligne a été changée (ma compréhension de la question). –

+0

Je ne suis pas au courant d'une telle commande qui serait en mesure de vous donner toutes les révisions pour une ligne de code donnée ... ce que vous pouvez faire est de faire un journal de spectacle sur un seul fichier, puis regardez chacune des révisions a eu lieu au fil du temps. – mezoid

1

Vous pouvez cliquer avec le bouton droit sur un fichier dans votre dépôt et sélectionner TortoiseSVN-> Afficher le journal pour obtenir les révisions dont ce fichier a été affecté. Sur une base ligne par ligne, il n'y a aucune façon que je sache.

2

La faute de Mezoid semble correcte. En aparté, j'aimerais partager une technique que les utilisateurs svn de la ligne de commande pourraient trouver utile. (Il s'agit de svn blame, mais j'utilise le synonyme "annotate", ou "svn ann", parce que "blame" sonne un peu dur!)

OK, donc vous avez une ligne qui vous intéresse, et ça a une chaîne distinctive "distinctiveString". Vous voulez lire le message de validation lorsque la ligne a été introduite pour la première fois, mais il a peut-être été modifié plusieurs fois. Alors, vous allez-y et faites ceci:

# svn ann that.file | grep distinctiveString 
2345  yada yada distinctiveString blah blah 

Un regard sur l'interface web TRAC pour svn montre que r2345 simplement changé l'empreinte de la ligne, il n'a pas été la révision à laquelle la ligne a été introduite. Alors, la prochaine que vous utilisez l'indicateur -R (ou -r, faire svn aide pour vous assurer Ann) pour spécifier la révision un de moins que la révision que vous avez trouvé à l'étape précédente:

# svn ann -R 2344 that.file|grep distinctiveString 
2211 yada yada distinctiveString blah blah 

Rincer et répéter jusqu'à ce que vous trouviez l'original.

Vous pouvez omettre la recherche TRAC à chaque étape en répétant simplement jusqu'à ce que vous ne voyiez plus la ligne, et en prenant le résultat de l'itération pénultième.

OK, c'est un peu laborieux, mais si vous voulez vraiment savoir qui a introduit cette ligne, il fera le travail. Il peut vous faire gagner du temps si le message de validation d'origine explique l'intention d'un morceau de code obscur qui semble avoir été supprimé.

+0

J'aime ça. Je vais devoir essayer ça. – mezoid