Existe-t-il un moyen d'effectuer une recherche en texte intégral dans un référentiel de subversion, y compris toute l'historique?
Par exemple, j'ai écrit une fonctionnalité que j'ai utilisée quelque part, mais qui n'était pas nécessaire, alors j'ai svn rm'd les fichiers, mais maintenant je dois la retrouver pour l'utiliser pour autre chose. Le journal svn dit probablement quelque chose comme "supprimé les éléments inutilisés", et il y a des tas de vérifications comme ça.
Edit 2016-04-15: Veuillez noter que ce qui est demandé ici par le terme "recherche en texte intégral", c'est de rechercher les différences réelles de l'historique des commit, et non les noms de fichiers et / ou les messages de commit . Je le souligne parce que la formulation de l'auteur ci-dessus ne reflète pas très bien cela - puisque dans son exemple, il pourrait aussi bien ne chercher qu'un nom de fichier et / ou un message de validation. D'où beaucoup de svn log
réponses et de commentaires.
la source
--search
argument de lasvn log
commande. Voir ma réponse sur stackoverflow.com/a/17473516/761095svn log --search
n'effectue pas de recherche en texte intégral comme l'exige @rjmunro, mais recherche uniquement l'auteur, la date, le message du journal et la liste des chemins modifiés.Réponses:
la source
apt-get install git-svn
.svn log
dans Apache Subversion 1.8 prend en charge une nouvelle--search
option . Vous pouvez donc rechercher les messages du journal de l'historique du référentiel Subversion sans utiliser les outils et scripts tiers.svn log --search
recherche dans l'auteur, la date, le texte du message du journal et la liste des chemins modifiés.Voir SVNBook |
svn log
référence de ligne de commande .la source
Si vous utilisez Windows, jetez un œil à SvnQuery . Il gère un index de texte intégral des référentiels locaux ou distants. Chaque document jamais engagé dans un référentiel est indexé. Vous pouvez effectuer des requêtes de type Google à partir d'une interface Web simple.
la source
J'utilise un petit shellscript, mais cela ne fonctionne que pour un seul fichier. Vous pouvez bien sûr combiner cela avec find pour inclure plus de fichiers.
Si vous voulez vraiment tout rechercher, utilisez la
svnadmin dump
commande et grep.la source
Le meilleur moyen que j'ai trouvé pour le faire est avec moins:
Une fois que moins arrive avec la sortie, vous pouvez frapper
/
pour rechercher, comme VIM.Éditer:
Selon l'auteur, il souhaite rechercher plus que les messages et les noms de fichiers. Dans ce cas, vous devrez le ghetto-hacker avec quelque chose comme:
Vous pouvez également remplacer
grep
ou autre chose pour faire la recherche pour vous. Si vous souhaitez l'utiliser sur un sous-répertoire du référentiel, vous devrez utilisersvn log
pour discerner la première révision dans laquelle ce répertoire existait, et utiliser cette révision à la place de0
.la source
Je cherchais quelque chose de similaire. Le meilleur que j'ai trouvé est OpenGrok . Je n'ai pas encore essayé de le mettre en œuvre, mais cela semble prometteur.
la source
pour diff, vous pouvez utiliser l'
--diff
optionpuis utilisez vim ou nano ou ce que vous aimez utiliser, et faites une recherche pour ce que vous recherchez. Vous le trouverez assez rapidement.
Ce n'est pas un script sophistiqué ou quoi que ce soit d'automatisé. Mais ça marche.
la source
Bien que ce ne soit pas gratuit, vous pouvez jeter un œil à Fisheye d'Atlassian, les mêmes personnes qui vous apportent JIRA. Il effectue une recherche en texte intégral contre SVN avec de nombreuses autres fonctionnalités utiles.
http://www.atlassian.com/software/fisheye/
la source
Je cherchais la même chose et j'ai trouvé ceci:
http://svn-search.sourceforge.net/
la source
Je viens de rencontrer ce problème et
fait le travail pour moi. J'ai renvoyé la révision de la première occurrence et j'ai cité la ligne que je cherchais.
la source
Je n'ai aucune expérience avec cela, mais SupoSE (open source, écrit en Java) est un outil conçu pour faire exactement cela.
la source
svn log -l<commit limit> | grep -C<5 or more lines> <search message>
la source
Je fais généralement ce que dit Jack M (utilisez svn log --verbose) mais je dirige vers grep au lieu de less.
la source
less
vous pouvez voir la révision, la date, etc. au lieu de simplement la ligne dans le commentaire. C'est généralement ce que je recherche de toute façon.J'ai écrit ceci comme un script cygwin bash pour résoudre ce problème.
Cependant, il faut que le terme de recherche se trouve actuellement dans le fichier du système de fichiers. Pour tous les fichiers qui correspondent au système de fichiers grep, un grep de tous les diffs svn pour ce fichier est alors effectué. Pas parfait, mais devrait être assez bon pour la plupart des utilisations. J'espère que cela t'aides.
/ usr / local / bin / svngrep
/ usr / local / bin / svnrevisions
la source
Si vous essayez de déterminer quelle révision est responsable d'une ligne de code spécifique, vous recherchez probablement:
Crédit: réponse originale
la source
Je suis tombé sur ce script bash , mais je ne l'ai pas essayé.
la source