Taper svn log
crache une liste incroyablement longue et inutile sur une ligne de commande. Je ne sais pas pourquoi c'est le cas par 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.
Les gars de SVN pensent peut-être que je voulais transférer ce résultat dans un autre programme. Toutefois, si tel est le cas, il serait plus judicieux d’avoir l’appel le plus détaillé pour le programme - et non pour l’utilisateur du terminal.
En tout cas, comment puis-je voir quelques activités récentes comme les 5 ou 10 dernières entrées pour voir ce qui a changé?
limit
option, 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, notamment log
ont l'option -r
(ou --revision
). Vous trouverez ci-dessous des exemples pratiques utilisant cette option pour afficher des plages de révisions:
Pour tout lister par ordre croissant:
svn log -r 1:HEAD
Pour tout lister par ordre décroissant:
svn log -r HEAD:1
Pour lister tout, de la treizième à la base de la révision actuellement extraite, par 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
afin de disposer d'un contrôle assez granulaire sur ce qui est imprimé. Pour plus d'informations sur ces expressions -r
, reportez-vous à svn help log
ou au chapitre correspondant du livre Version Control with Subversion
J'aime utiliser -v
pour le mode prolixe.
Il vous donnera l'identifiant de la validation, les commentaires et tous les fichiers affecté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
Transférez le résultat à travers less
ou un autre pageur:
svn log | less
Pour ajouter à 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 par défaut
Au cas où quelqu'un examinerait cette vieille 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
Comme vous l'avez déjà remarqué svn log
la commande exécutée sans aucun argument indique tous les messages de journalisation liés à l'URL vous spécifiez ou dans le dossier de la copie de travail où vous exécutez la commande.
Vous pouvez toujours affiner/limiter les résultats _svn log
_:
svn log --limit NUM
montrera uniquement le premier NUM de révisions,svn log --revision REV1(:REV2)
affichera le message du journal pour la révision REV1 ou pour la plage REV1 - REV2,svn log --search
affiche les révisions correspondant au modèle de recherche que vous avez spécifié (la commande est disponible dans les versions Subversion 1.8 et plus récente). Vous pouvez rechercher par Cette réponse s'adresse à d'autres questions concernant les options des sous-commandes Subversion. Pour chaque sous-commande disponible (c.-à-d. Ajouter, consigner, statut ...), vous pouvez simplement ajouter l'option --help
pour afficher la liste complète des options disponibles que vous pouvez utiliser avec votre sous-commande, ainsi que des exemples d'utilisation. . L'extrait suivant provient 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
Mais svn log est toujours dans l’ordre inverse, c’est-à-dire que les entrées les plus récentes sont sorties en premier, puis défilent vers le haut de mon terminal. Je veux vraiment voir les dernières entrées, c’est-à-dire que l’ordre de tri doit être chronologique. La seule commande qui semble effectuer cela semble être svn log -r 1:HEAD
, mais cela prend beaucoup trop de temps sur un référentiel contenant quelque 10 000 entrées. J'ai remonté 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