Comment voyez-vous les entrées de journal SVN récentes?

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
    • auteur de la révision (nom d’utilisateur des committers),
    • date à laquelle la révision a été engagée,
    • texte de commentaire de révision (message de journal),
    • liste des chemins modifiés en révision.

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