web-dev-qa-db-fra.com

Recherche de référentiel SVN

Existe-t-il un bon logiciel qui me permette de rechercher des extraits de code dans mon référentiel SVN? J'ai trouvé 'FishEye' mais le coût est de 1200 et dépasse largement mon budget.

154
John

Si vous recherchez uniquement le nom du fichier, utilisez:

svn list -R file:///Subversion/repository | grep filename

Les fenêtres:

svn list -R file:///Subversion/repository | findstr filename

Sinon, vérifiez et effectuez une recherche dans le système de fichiers:

egrep -r _code_ .
67
phil_w

Il y a sourceforge.net/projects/svn-search .

Il existe également une application Windows directement à partir de l’accueil SVN, appelée SvnQuery, disponible à l’adresse http://svnquery.tigris.org

37
Elmar Weber

Commençant par Sous-version 1.8, vous pouvez utiliser --search option avec svn log commande . Notez que la commande n'effectue pas de recherche de texte intégral dans un référentiel, elle considère uniquement les données suivantes:

  • auteur de la révision (svn:author propriété non versée),
  • date (svn:date propriété non versée),
  • enregistrer le texte du message (svn:log propriété non versée),
  • liste des chemins modifiés (c.-à-d. chemins affectés par la révision particulière).

Voici la page d'aide sur ces nouvelles options de recherche:

 If the --search option is used, log messages are displayed only if the
 provided search pattern matches any of the author, date, log message
 text (unless --quiet is used), or, if the --verbose option is also
 provided, a changed path.
 The search pattern may include "glob syntax" wildcards:
     ?      matches any single character
     *      matches a sequence of arbitrary characters
     [abc]  matches any of the characters listed inside the brackets
 If multiple --search options are provided, a log message is shown if
 it matches any of the provided search patterns. If the --search-and
 option is used, that option's argument is combined with the pattern
 from the previous --search or --search-and option, and a log message
 is shown only if it matches the combined search pattern.
 If --limit is used in combination with --search, --limit restricts the
 number of log messages searched, rather than restricting the output
 to a particular number of matching log messages.
11
bahrep
10
Ben Noland
  1. Créer git-svn miroir de ce référentiel.
  2. Rechercher des chaînes ajoutées ou supprimées dans git: git log -S'my line of code' ou le même dans gitk

L'avantage est que vous pouvez effectuer de nombreuses recherches localement, sans charger le serveur ni la connexion réseau.

9
Vi.

Cet exemple dirige le contenu complet du référentiel vers un fichier dans lequel vous pouvez ensuite rechercher rapidement des noms de fichiers dans un éditeur:

svn list -R svn://svn > filelist.txt

Ceci est utile si le référentiel est relativement statique et que vous souhaitez effectuer des recherches rapides sans avoir à tout charger de manière répétée à partir du serveur SVN.

8
Contango

J'aime TRAC - ce plugin pourrait être utile dans votre tâche: http://trac-hacks.org/wiki/RepoSearchPlugin

4
Kai

Juste une note, FishEye (et de nombreux autres produits Atlassian) possède une édition à 10 $ Starter Editions, qui dans le cas de FishEye vous donne 5 référentiels et un accès pour 10 participants maximum. L'argent va à la charité dans ce cas.

www.atlassian.com/starter

4

Péniblement lent (et implémenté grossièrement), mais une combinaison de svn log et de svn cat fonctionne si vous effectuez une recherche dans l'historique de fichiers uniques ou de petits référentiels:

svn log filetosearch |
    grep '^r' |
    cut -f1 -d' ' |
    xargs -i bash -c "echo '{}'; svn cat filetosearch -'{}'" 

affichera chaque numéro de révision où le fichier a été modifié et le fichier. Vous pouvez toujours convertir chaque révision dans un fichier différent, puis grep pour apporter des modifications.

PS Upvotes massives à quiconque me montre comment faire cela correctement!

3
Ken

Si vous êtes vraiment désespéré, faites un dump du référentiel (regardez "svnadmin dump") puis passez à grep. Ce n'est pas beau, mais vous pouvez parcourir les résultats de la recherche pour trouver les métadonnées qui indiquent le fichier et la révision, puis les vérifier pour une meilleure apparence.

Pas une bonne solution, certes, mais c'est gratuit :) SVN n'offre aucune fonctionnalité permettant de rechercher des archivages antérieurs (ou même des fichiers journaux antérieurs, autant que je sache).

2
rmeador

J'ai commencé à utiliser cet outil

http://www.supose.org/wiki/supose

Cela fonctionne très bien sans interface graphique mais il est rapide et maintenu.

1
Kuryaki

Un grand nombre de référentiels SVN sont "tout simplement" des sites HTTP. Vous pouvez donc consulter une application de recherche "d'analyse Web" prête à l'emploi que vous pouvez pointer sur la racine SVN et qui vous fournira des fonctionnalités de base. La mise à jour sera probablement une astuce. Peut-être qu'une vérification SVN dans un hackery pourra chatouiller l'index pour ignorer ou réindexer les modifications au fur et à mesure.

Juste penser à voix haute.

1
Will Hartung

theres krugle et koders mais les deux sont chers. Les deux ont des plug-ins ide pour Eclipse.

1
Brendon-Van-Heyzen

// Edit: L'outil a déjà été mentionné dans une autre réponse, alors donnez tous les crédits à Kuryaki.

Vient de trouver SupoSE qui est un outil de ligne de commande basé sur Java qui analyse un référentiel pour créer un index, puis est en mesure de répondre à certains types de requêtes. Nous sommes toujours en train d'évaluer l'outil, mais il semble prometteur. Il vaut la peine de mentionner qu’il fait un index complet de toutes les révisions, y compris les fichiers de code source et les formats bureautiques courants.

0
jek