Les gestionnaires de configuration distribués ont vraiment la côte en ce moment, et en particulier Git.
Pour l'avoir testé, il faut bien admettre que ces outils simplifient énormément le processus de développement, en permettant de découpler très facilement les différentes tâches sur lesquelles on travaille dans autant de branches de développement.
Sur SVN, la gestion des branches n'est pas aisée. Donc dans la pratique, quand on travaille sur plusieurs évolutions (sous Eclipse) :
- Soit on duplique le projet dans son espace de travail (avec un projet par évolution) : c' est certainement encore la manière la plus propre de faire, bien qu'un peu lourde à mettre en oeuvre.
- Soit on travaille dans un unique projet : on n'a alors pas de moyen évident de distinguer quelle modification de code correspond à quelle évolution.
Cas d'application concret : en local, un développeur travaille sur deux fonctionnalités dans son projet, dont une est terminée et doit être commitée pour être embarquée dans la livraison du jour. Il faut alors retrouver quels sont les fichiers correspondants, pour faire un commit partiel du projet.
Autant dire que les risques de faire une erreur (oubli de fichier ou commit d'un fichier de l'autre évolution) sont loin d'être négligeables... et conduisent donc souvent à devoir faire un deuxième (quand ce n'est pas un troisième) commit correctif.
Ce scénario peut paraître un peu catastrophique, mais il peut pourtant arriver (et peut-être plus souvent qu'on ne le croit).
Quelques avantages de Git :
- il permet de résoudre le problème mentionné ci-dessus : la gestion locale des branches permet d'en créer et d'en changer très rapidement, sans avoir à dupliquer le projet (entre autres fonctionnalités).
- il est beaucoup plus souple que SVN dans ses possibilités de revenir en arrière en cas d'erreur : il permet par exemple "d'amender" un commit déjà effectué.
- une fois que plusieurs fonctionnalités sont terminées, les possibilités de fusion (merge) des branches sont beaucoup plus puissantes que celle de Git, avec plusieurs stratégies de résolution des conflits (fast forward, etc.)
Tout ceci est très bien sur le papier, mais passons maintenant à l'application en entreprise, où la gestion de configuration des projets est gérée de manière centralisée par SVN (à Alcion Group, par exemple). Même si on est convaincu par les avantages des DVCS, l'impact sur le SI est tel que ça peut difficilement être mis en place.
Mais là encore, Git peut nous sauver. Il peut en effet être utilisé en local sur les postes de développement, et s'interfacer avec le serveur SVN de l'entreprise. Les développeurs bénéficient ainsi de ses avantages, pour un faible impact sur l'infrastructure.
Nicolas de loof explique très bien les principes d'utilisation de Git avec SVN. Afin d'adapter ces principes à nos environnements de développement, j'ai rédigé un tutoriel d'application pratique pour Eclipse.
Pour commencer et découvrir Git, je vouc recommande :
- ''Why Git is better than X ?'' : la liste des avantages de Git sur les autres gestionnaires de configuration
- un tutoriel d'introduction
- Le manuel d'utilisation officiel
Et, pour aller plus loin, quelques lectures studieuses... et un peu plus volumineuses :
- Le ''Git Community Book''
- ''Git Magic'', un autre livre en ligne
- ''ProGit'', le plus gros livre en ligne disponible sur ce sujet, et certainement le plus complet
Jeudi 21 février à 18h30 au siège
Ce mois-ci, une conférence pleine de bonnes nouvelles : on peut développer des écrans portables et sexy en Java, sans avoir besoin de connaître Javascript !
Aujourd'hui je peux :
Cette PFIC est exclusivement construite par l'intégration d'outils opensource:
Merci à Aurélien Drouet pour son intervention convaincante :
.NET ne se déploie bien que sur Windows. Ceci n'est pas une insulte aux développeurs de
Pour ce dernier rendez-vous avant l'été, nous mettons
un coup de projecteur sur une nouvelle technologie
dont beaucoup ont entendu parler mais que peu
ont eu l'occasion d'utiliser.
Un méta-framework est une "suite" de frameworks techniques assemblés afin de couvrir l'ensemble des besoins de réalisation d'une application.
Par exemple, certains réfléchissent, au sein d'AlcionGroup, à la possibilité de pré-assembler un socle applicatif basé sur Spring et Hibernate, prêt à partir sur nos projets.
Différentes initiatives vont dans le même sens (JAD, Keel, Roma, Jaxio, MD4J, Seam, RIFE, AppFuse, Tapestry...) dans le double objectif d'améliorer la productivité du développement, et de réduire les dépendances entre composants afin de faciliter l'évolution du logiciel produit (rester agile !).
Il y aura, à moyen terme, une norme defacto, sorte de "pile standard", incluant - ou non - les outils de développement rapide que l'intégration verticale suggère.
Une petite compilation des labs à suivre lors d'une veille technologique. N'hésitez pas à compléter la liste :)
Un fil du forum de
Ah bon, vous ne saviez pas ? Depuis l'avènement des technologies objet, des approches composants, du développement des outils de génie logiciel, coder est devenu aussi facile que d'assembler des Duplo... Enfin,
Le portail ultime ? Capable de fournir à chaque employé les applications dont il a besoin, sur son bureau. En prenant en compte la gestion des droits, et un déploiement totalement managé, particulièrement adapté aux grandes flottes.
Vu sur
Le décisionnel, qu'est-ce exactement ? C'est l'art d'agréger les données du ou des systèmes d'information de l'entreprise, afin de fournir des outils de pilotage (pouvoir corréler par exemple les ventes dans une région avec les délais de fabrication dans telle usine et élaborer un plan d'action correctif). Les mots clés sont : datawarehouse (centralisation et historisation des données des différents SI), analyse muti-dimensionnelle (axes et indicateurs), et l'ordre SQL "group by"...
Depuis quelques semaines, le développement AJAX est entré dans l'age adulte grâce à la décision de Google de distribuer gratuitement le framework utilisé en interne le Google Web Toolkit (GWT). Une des qualités majeures de cette solution est qu'elle est J2EE et épargne l'essentiel du développement HTML/Javascript au réalisateur de l'application. Cela tombe bien, c'était le plus délicat et sujet aux bugs et aux incompatibilités entre navigateurs.