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.
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_ .
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
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:
svn:author
propriété non versée),svn:date
propriété non versée),svn:log
propriété non versée),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.
Nous utilisons http://opensolaris.org/os/project/opengrok/
git-svn
miroir de ce référentiel.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.
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.
J'aime TRAC - ce plugin pourrait être utile dans votre tâche: http://trac-hacks.org/wiki/RepoSearchPlugin
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.
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!
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).
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.
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.
theres krugle et koders mais les deux sont chers. Les deux ont des plug-ins ide pour Eclipse.
// 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.