Comment afficher les commits d'un utilisateur spécifique dans svn? Je n'ai trouvé aucun commutateur pour cela pour svn log.
svn
bash
version-control
mimrock
la source
la source
--search
option avec Subversion 1.8 ou un client plus récent.Réponses:
Vous pouvez utiliser ceci:
Il vous montrera chaque commit effectué par l'utilisateur spécifié (USERNAME).
METTRE À JOUR
Comme suggéré par @bahrep, la subversion 1.8 est livrée avec une
--search
option.la source
p
).svn log
sur une copie de travail. Vous pouvez également spécifier votre référentiel, c'est-à-diresvn log https://your-svn-repo
.--search
option.Avec Subversion 1.8 ou version ultérieure:
Outre les correspondances d'auteur, cela affichera également les commits SVN contenant ce nom d'utilisateur dans le message de validation, ce qui ne devrait pas se produire si votre nom d'utilisateur n'est pas un mot courant.
Le
-l 50
limitera la recherche aux 50 dernières entrées.http://svnbook.red-bean.com/en/1.8/svn.ref.svn.html#svn.ref.svn.sw.search
la source
svn log --search foo --search bar -l 30
.If multiple --search options are provided, a log message is shown if it matches any of the provided search patterns.
svn n'est pas livré avec des options intégrées pour cela. Il a une
svn log --xml
option, pour vous permettre d'analyser la sortie vous-même et d'obtenir les parties intéressantes.Vous pouvez écrire un script pour l'analyser, par exemple en Python 2.6:
Si vous enregistrez ce qui précède sous le nom svnLogStripByAuthor.py, vous pouvez l'appeler comme suit:
la source
Puisque tout le monde semble pencher vers linux (et al): voici l'équivalent Windows:
la source
fonctionne pour la plupart.
Ou pour être plus précis:
la source
-A
pour afficher le contexte, mais ce nombre est statique alors que le message de validation est de longueur variable. Vous pourriez faire une solution avec sed ou similaire, mais c'est un effort. : P| awk '{ print "-" $1 }' | xargs svn log
Bien que la solution d'voyer fonctionne correctement, en voici une qui utilise la sortie XML de SVN, en l'analysant avec
xmlstarlet
.À partir de là, vous pouvez accéder à des requêtes XML plus avancées.
la source
Voici ma solution en utilisant xslt. Malheureusement, xsltproc n'est pas un processeur de streaming, vous devez donc donner une limite au journal. Exemple d'utilisation:
svnLogFilter.xslt
svnLogText.xslt
la source
À partir de Subversion 1.8, vous pouvez utiliser
--search
et les--search-and
options de ligne de commande avec lasvn log
commande .Cela devrait donc être aussi simple que de courir
svn log --search JohnDoe
.la source
Vous pouvez utiliser Perl pour filtrer le journal par nom d'utilisateur et gérer les messages de validation. Définissez simplement la variable $ / qui décide de ce qui constitue une "ligne" en Perl. Si vous définissez ceci sur le séparateur des entrées du journal SVN, Perl lira un enregistrement à la fois et vous devriez alors pouvoir faire correspondre le nom d'utilisateur dans tout l'enregistrement. Voir ci-dessous:
la source
Pour OBTENIR des différences avec l'enregistrement.
Récupérez les numéros de révision dans un fichier:
Maintenant, lisez le fichier et exécutez diff pour chaque révision:
la source
J'avais écrit un script par Python:
et utilise:
la source