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


194

La frappe svn logcrache une liste incroyablement longue et inutile sur une ligne de commande. Je n'ai aucune idée pourquoi c'est la valeur 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 --fullou quelque chose de similaire.

Peut-être que les gars de SVN pensent que je voulais alimenter cette sortie vers un autre programme. Cependant, si tel est le cas, il serait plus logique d'avoir l'appel le plus verbeux pour le programme - pas pour l'utilisateur du terminal.

Quoi qu'il en soit, comment puis-je voir juste une activité récente comme les 5 ou 10 dernières entrées pour voir ce qui a changé?


9
Oui, il faut vraiment travailler comme, euh, git log.
Paul Draper

Réponses:


261

limit option, par exemple:

svn log --limit 4

svn log -l 4

Seules les 4 dernières entrées


127

Outre ce que Bert F a dit , de nombreuses commandes, y compris loga l' option -r(ou --revision). Voici quelques exemples pratiques utilisant cette option pour afficher des plages de révisions:

Pour tout répertorier par ordre croissant:

svn log -r 1:HEAD

Pour tout répertorier par ordre décroissant:

svn log -r HEAD:1

Pour répertorier tout, du treizième à la base de la révision actuellement extraite, par ordre croissant:

svn log -r 13:BASE

Pour tout obtenir entre les dates données:

svn log -r {2011-02-02}:{2011-02-03}

Vous pouvez combiner toutes les expressions ci-dessus avec l' --limitoption, de sorte que vous pouvez avoir un contrôle assez granulaire sur ce qui est imprimé. Pour plus d'informations sur ces -rexpressions, reportez-vous au svn help logou au chapitre correspondant du livre Version Control with Subversion


8
Merci beaucoup pour cette explication, @Daniel Dinnyes - J'ai souvent le problème opposé de l'OP: svn log .peut ne renvoyer que la première révision pour moi (de même avec svn log --limit 4 .); mais si j'appelle svn log -r HEAD:1 ., je reçois enfin toutes les entrées répertoriées ... Merci encore - cheers!
sdaau

C'est mieux, car svn log ne montre que l'historique des modifications du chemin actuel.
Ninja

41

J'aime utiliser -vpour 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

2
L'option détaillée est extrêmement utile
Jason George

Et si l'équipe de développement est vraiment adorable, elle met l'identifiant du problème dans le commentaire svn et vous pouvez facilement trouver le problème lié au commit.
Jonas Söderström

11

Dirigez la sortie via lessou un autre pager:

svn log | less

1
Si vous avez> 23k révisions, vous devrez toujours attendre ~ 20 secondes pour voir les premières entrées (et lorsque vous n'utilisez pas de journal détaillé). Mais c'est sympa - les spectacles les plus récents en haut. Et mieux que la pagination 100 à la fois de TortoiseSVN! Quand vous voulez remonter plus loin.
Tomasz Gandor

6

Dans le cas où quelqu'un regarde cette vieille question, une commande pratique pour voir les changements 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


8
ou tout simplementsvn log -r BASE:HEAD -v
Gary

5

Pour ajouter à ce que les 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 tout ce que vous voulez par défaut


4

Comme vous l'avez déjà remarqué, la svn logcommande exécutée sans aucun argument affiche tous les messages de journal liés à l'URL que vous spécifiez ou au dossier de copie de travail dans lequel vous exécutez la commande.

Vous pouvez toujours affiner / limiter les svn logrésultats:

  • svn log --limit NUM n'affichera que 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 --searchaffichera les révisions qui correspondent au modèle de recherche que vous spécifiez (la commande est disponible dans Subversion 1.8 et les clients plus récents). Vous pouvez rechercher par
    • l'auteur de la révision (c'est-à-dire le nom d'utilisateur des committers),
    • date à laquelle la révision a été engagée,
    • texte de commentaire de révision (message de log),
    • liste des chemins modifiés lors de la révision.

4

Cette réponse est dirigée vers d'autres questions concernant les options de sous-commandes de Subversion. Pour chaque sous-commande disponible (c'est-à-dire ajouter, journal, état ...), vous pouvez simplement ajouter l' --helpoption pour afficher la liste complète des options disponibles que vous pouvez utiliser avec votre sous-commande ainsi que des exemples sur la façon de les utiliser. L'extrait suivant est extrait directement de la svn log --helpsortie de la commande dans la section "Exemples":

Show the latest 5 log messages for the current working copy
directory and display paths changed in each commit:
  svn log -l 5 -v

3

Mais le journal svn est toujours dans l'ordre inverse, c'est-à-dire que les 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 tri doit être chronologique. La seule commande qui le fait semble être svn log -r 1:HEADmais cela prend beaucoup trop de temps sur un référentiel avec quelque 10000 entrées. Je suis venu ceci ceci:

Affichez les 10 dernières entrées de subversion par ordre chronologique:

svn log -r $(svn log -l 10 | grep '^r[0-9]* ' | tail -1 | cut -f1 -d" "):HEAD
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.