Taper svn log
crache une liste incroyablement longue et inutile sur une ligne de commande. Je ne sais pas pourquoi c’est le défaut. Si je voulais lire (ou même lire) 300 entrées sur le terminal, cela ne me dérangerait pas de taper svn log --full
ou quelque chose de similaire.
Peut-être que les gars de SVN pensent que je voulais transmettre cette sortie à un autre programme. Cependant, si tel est le cas, il serait plus logique d’avoir un appel plus verbeux pour le programme – pas l’utilisateur du terminal.
Quoi qu’il en soit, comment puis-je voir une activité récente comme les 5 ou 10 dernières entrées pour voir ce qui a changé?
option limit
, par exemple:
svn log --limit 4 svn log -l 4
Seulement les 4 dernières entrées
Outre ce que dit Bert F , de nombreuses commandes, y compris log
ont l’option -r
(ou --revision
). Voici quelques exemples pratiques utilisant cette option pour afficher les plages de révisions:
Pour lister tout en ordre croissant:
svn log -r 1:HEAD
Pour lister tout en ordre décroissant:
svn log -r HEAD:1
Pour lister tout de la treizième à la base de la révision actuellement extraite dans l’ordre croissant:
svn log -r 13:BASE
Pour tout avoir entre les dates données:
svn log -r {2011-02-02}:{2011-02-03}
Vous pouvez combiner toutes les expressions ci-dessus avec l’option --limit
, de sorte que vous puissiez avoir un contrôle assez granulaire sur ce qui est imprimé. Pour plus d’informations sur ces expressions -r
, reportez-vous au svn help log
ou au chapitre correspondant du livre Contrôle des versions avec Subversion
J’aime utiliser -v
pour le mode verbeux.
Il vous donnera l’ID de validation, les commentaires et tous les fichiers concernés.
svn log -v --limit 4
Exemple de sortie:
I added some migrations and deleted a test xml file ------------------------------------------------------------------------ r58687 | mr_x | 2012-04-02 15:31:31 +0200 (Mon, 02 Apr 2012) | 1 line Changed paths: A /trunk/java/App/src/database/support A /trunk/java/App/src/database/support/MIGRATE A /trunk/java/App/src/database/support/MIGRATE/remove_device.sql D /trunk/java/App/src/code/test.xml
Pipe la sortie à travers less
ou un autre pager:
svn log | less
Pour append à ce que d’autres ont dit, vous pouvez également créer un alias dans votre fichier .bashrc ou .bash_aliases:
alias svnlog='svn log -l 30 | less'
ou ce que vous voulez comme défaut
Comme vous l’avez déjà remarqué, svn log
commande svn log
exécutée sans aucun argument affiche tous les messages de journal relatifs à l’URL spécifiée ou au dossier de la copie de travail sur lequel vous exécutez la commande.
Vous pouvez toujours affiner / limiter les résultats de svn log
:
svn log --limit NUM
affichera seulement le premier NUM de révisions, svn log --revision REV1(:REV2)
affichera le message du journal pour la révision REV1 ou pour la gamme REV1 – REV2, svn log --search
affichera les révisions qui correspondent au modèle de recherche que vous spécifiez (la commande est disponible dans Subversion 1.8 et un client plus récent). Vous pouvez rechercher par
Mais svn log est toujours dans l’ordre inverse, c’est-à-dire que la plupart des entrées les plus récentes sont sorties en premier, défilant en haut de mon terminal et disparues. Je veux vraiment voir les dernières entrées, c’est-à-dire que l’ordre de sorting doit être chronologique. La seule commande qui fait cela semble être svn log -r 1:HEAD
mais cela prend beaucoup trop de temps sur un référentiel avec quelque 10000 entrées. Je suis venu ceci ceci:
Afficher les 10 dernières entrées de subversion dans l’ordre chronologique:
svn log -r $(svn log -l 10 | grep '^r[0-9]* ' | tail -1 | cut -f1 -d" "):HEAD
Cette réponse concerne d’autres questions concernant les options des sous-commandes Subversion. Pour chaque sous-commande disponible (par exemple, add, log, status …), vous pouvez simplement append l’option --help
pour afficher la liste complète des options disponibles avec votre sous-commande, ainsi que des exemples d’utilisation. L’extrait suivant est tiré directement de la sortie de la commande svn log --help
sous la section “examples”:
Show the latest 5 log messages for the current working copy directory and display paths changed in each commit: svn log -l 5 -v
Si quelqu’un regarde cette ancienne question, une commande pratique pour voir les modifications depuis votre dernière mise à jour:
svn log -r $(svn info | grep Revision | cut -f 2 -d ' '):HEAD -v
LE (merci Gary pour le commentaire)
Même chose, mais beaucoup plus court et plus logique:
svn log -r BASE:HEAD -v