Forum Programmation.shell SVN, mon ami pour la vie

Posté par .
Tags : aucun
0
19
fév.
2010
Bonjour,

'Chez moi', on fabrique un soft. Ce soft a deux version, nommons les 1.3 et 1.4.
Dans svn on a donc créé une branche par version.
Aujourd'hui, on veut merger des modifs de la branche 1.3 dans la branche 1.4. Mais pas toutes! Juste les commits de l'utilisateur TOTO.
Donc, via svn mergeinfo, on détermine les commits faits sur 1.3 , qui sont pas dans 1.4.
Ensuite on utilise svn log pour connaitre le nom de l'auteur du commit.

Malheureusement, on a l'impression que svn et le shell ne sont pas super potes. Pour connaitre le nom des gens dont on doit merger les commits, c'est pas évident, on doit recourir à des bidouilles de shell. Je vous poste ci dessous la procédure qu'on utilise. Mais si je poste, c'est surtout pour avoir vos idées d'amélioration, parce que franchement, à mon avis, ya plus simple :)

Positionné sur le checkout de la branche 1.4
---------
svn mergeinfo --show-revs eligible
http://subversion.chez.moi/branches/1.3 | tr -d r | xargs ./lol.sh | grep TOTO -A 2
---------
lol.sh:
---------
for i in $@ ; do
svn log -r $i http://subversion.chez.moi
done
---------

Je vous remercie d'avance pour les conseils. Sachez que j'ai un peu fouillé avec xargs et tout, et que bon c'est pas complètement trivial. Où alors ça l'est mais faut bien connaitre son shell et son svn. En tout cas testez de votre côté avant :)

A toute
  • # SVN, mon ami pour la vie

    Posté par (page perso) . Évalué à 2.

    Avec ceci, j'ai la liste des révisions dont TOTO est l'auteur :

    IFS='| '
    svn log | grep '^r' | while read rev author date size; do [ $author == "TOTO" ] && echo $rev; done

    A toi de remplacer svn log par la commande de SVN qui te donne les révisions qui t'intéressent, et le grep par une expression un peu plus restrictive (ça marche sur mon dépôt à moi parce que les règles de rédaction des messages font que, mais enfin...).

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.