Quelques nouveautés de Subclipse

Pour utiliser Mylar avec Subversion, j'ai installé la dernière version instable du plugin Subclipse. Je viens de parcourir rapidement le changelog de cette branche 1.1 et y ai découvert quelques trucs intéressants:

  • le principal à mon sens est l'introduction de la notion de "changesets" dans la vue Synchronize. Un changeset correspond à un commit. Ainsi, quand vous cherchez les dernières mises à jour d'un projet, vous pouvez soit avoir l'affichage standard présentant la liste de tous les fichiers modifiés, soit un affichage par commits, qui vous permet pour chacun de voir son auteur, le commentaire et la liste des fichiers impactés. Pratique pour mieux suivre ce qui se passe sur le projet (c'est équivalent à la "Timeline" de Trac par exemple)
  • Globalement, la tendance est à coller au plus près au plugin CVS, pour faciliter le passage de l'un à l'autre, d'où quelques évolutions de l'interface.
  • la vue "historique" spécifique a été abandonnée au profit de celle présente par défaut dans Team. Attention donc, lors de la mise à jour Eclipse risque de vous signaler qu'il n'arrive pas à restaurer complètement votre environnement. La vue "opérations en attente" a également disparu.
  • ajout d'une option "override and update" pour remplacer un fichier modifié localement par la dernière version du serveur. Si le fichier n'est pas versionné, il sera effacé. De même, choisir Revert sur un fichier non versionné l'effacera.
  • passage en Eclipse Public License
  • un meilleur support de la gestion des locks, des améliorations de performance, l'introduction de templates de commentaires pour les commits et le support du correcteur orthographique pour ces commentaires... Je n'ai pas creusé de ce côté là.
  • Ajout du 18.01 : ATTENTION ! je n'avais pas prêté attention à cela, mais depuis la version 1.1.8, Subclipse intègre le nouveau format de stockage local de svn 1.4. Ce qui signifie que les fichiers extraits ne pourront plus être gérés par des versions plus anciennes de clients Subversion.

Interfacer Subversion avec un gestionnaire de tickets

J'ai par ailleurs découvert un intéressant document proposant une solution pour interfacer Subversion avec des systèmes de gestion de tickets. L'implémentation proposée est de stocker localement certaines informations dans les propriétés des dossiers. Les propriétés sont à définir au niveau du répertoire principal de votre projet.

Les propriétés suivantes sont proposées:

  • bugtraq:message : si cette propriété est renseignée, le client demandera un identifiant de ticket au moment du commit, et ajoutera automatiquement le message au commentaire, en remplaçant %BUGID% par cet identifiant. Par exemple, pour fonctionner avec les hooks de Trac, renseignez cette propriété à "refs: #%BUGID%"
  • bugtraq:logregex : expression régulière pour rechercher l'identifiant du ticket dans le commentaire. Une seule des propriétés message ou logregex doit être définie.
  • bugtraq:warnifnoissue : booléen permettant de déclencher un avertissement en cas de commit sans numéro de ticket.
  • bugtraq:url : url permettant d'afficher en ligne un ticket. Dans cette URL, %BUGID% sera remplacé par l'identifiant du ticket. Si cette propriété est positionnée, le client pourra afficher automatiquement un lien vers le ticket.
  • bugtraq:append : booléen définissant si l'identifiant du ticket est ajouté au début (false) ou à la fin (true, par défaut) du commentaire.
  • bugtraq:label : label de la zone de saisie de l'identifiant du ticket
  • bugtraq:number : booléen à vrai si l'identifiant du ticket doit être numérique

Plusieurs clients svn implémentent déjà une partie de cette spécification. Cf par exemple cette documentation pour TortoiseSVN, un client windows. Au niveau de Subclipse, si le répertoire de base du projet possède la propriété bugtraq:message, la fenêtre de saisie du commentaire de commit contiendra une zone permettant de renseigner l'identifiant du ticket lié, et le message sera ajouté au commentaire.

Utiliser Mylar pour suivre l'activité.

Quel développeur n'a jamais pesté contre la contrainte de devoir régulièrement remplir des compte-rendus d'activité, des feuilles de temps ou autre. J'avoue que j'ai beaucoup de mal à le faire. J'ai essayé plusieurs solutions, mais n'en ai jamais trouvé de vraiment convainquante. Toutes demandent un effort, berk. Or, Mylar propose une fonctionnalité intéressante, puisqu'il permet de créer des rapports d'activité. Et sans demander d'effort supplémentaire :-) Il suffit d'activer au fur et à mesure les tâches sur lesquelles on travaille, mais cela je le fais puisque ça apporte la navigation contextuelle, les changesets, etc. Le rapport d'activité est une cerise sur le gâteau qui me permet en fin de semaine de remplir un peu plus facilement ma feuille de temps. Bien sûr Mylar n'est à la base pas fait pour ça, et le système a encore des limites. Il ne permet de suivre que les tâches de programmation, je ne sais pas comment sont comptabilisées les pauses café, etc (apparemment il ne prend en compte que le temps passé dans Eclipse, donc par exemple pas les tests effectués dans un navigateur, etc). Mais en fouillant un peu dans les docs et les demandes d'évolutions, j'ai découvert des discutions pour intégrer plus de fonctions de ce type dans de prochaines releases (par exemple les tickets 121337, 135668). Et en se basant sur RCP, on peut aussi imaginer une application plus globale, où chaque action (répondre à un mail, rédiger un document, etc) pourrait s'effectuer à l'intérieur d'Eclipse, être liée via Mylar à un gestionnaire de tâches, tous les documents, code source, documentation, propositions commerciales, etc, étant sauvegardés et versionnés sur un serveur distant... Yapluka ;-)

Décidément, Eclipse se rapproche de plus en plus de GNU/Emacs, vous savez si un plugin "doctor" existe déjà ?