JPF 2008 Gestion distribué de version avec Mercurial Michael Scherer JPF 2008
Plan ● Historique et concept ● Système distribué ● Utilisation de mercurial
JPF 2008 RCS ● Mono fichier ● Mono utilisateur
JPF 2008 CVS ● Grand frère de rcs ● Fait parti de Posix ● Son age se fait sentir
JPF 2008 Subversion ● CVS refait correctement ● Très populaire ● Intégration ● Compris par tous
JPF 2008 DVCS I ● Première vague : – Darcs – Tla – Monotone – Svk / Svl
JPF 2008 DVCS II ● Git ● Bzr ● Mercurial
JPF 2008 Concept ● Révision unique ● Publication ≠ Commit ● Historique non linéaire ● Capacité de « picorer » des patchs
JPF 2008 Révision unique
JPF 2008 Commit ≠ publication
JPF 2008 Historique non linéaire
JPF 2008 Cherrypicking ● Prendre juste un morceau de patch – très utile pour correctifs
JPF 2008 Avantages
JPF 2008 Plus besoin du droit de commit
JPF 2008 Permet de bosser en privé
JPF 2008 Permet de bosser sans accès au réseau (exemple : au milieu de la Moselle )
JPF 2008 Bonus : pas de réseau = plus rapide
JPF 2008 Procédure de backup grandement simplifié
JPF 2008 Libre choix du workflow
JPF 2008 Problèmes
JPF 2008 Complexité ● Création facile de branche
JPF 2008 Fork facile ? ● Risque de dupliquer les efforts ? (ou pas) ● Un faux problème
JPF 2008 Consommation disque
JPF 2008 Manque d'intégration
JPF 2008 Mercurial Python Commencé en 2005 Par Matt Mackall lignes de code pour la version 1.0 Utilisé par : Mozilla OpenSolaris Alsa Scapy Xen...
JPF 2008 Workflow simple ● 1 personne ● 1 ordinateur en local
JPF 2008 Creation du depot hg init
JPF 2008 Ajout d'un fichier hg add toto.py
JPF 2008 Premier commit hg commit
JPF 2008 Voir l'historique hg log
JPF 2008 Et si on a un portable ? ● 1 personne ● 2 machines, dont une sans accès permanent à la première
JPF 2008 Clone du dépôt hg clone ssh://pc- fixe/projet
JPF 2008 Commit ? hg commit
JPF 2008 Resynchroniser hg pull hg push
JPF 2008 Et le travail à plusieurs ? ● 2 personnes ou + ● 2 ordinateurs ou +
JPF 2008 Publication ● ssh ● http ● protocole dédié – hg serve
JPF 2008 Intégration des patchs ● hg pull / push ● hg merge
JPF 2008 Qui dirige ?
JPF 2008 Core team
JPF 2008 Hiérarchie ● Noyau linux
JPF 2008 Full P2P
JPF 2008 Cool stuff ● Plugins – Acl, Bisect, ● Hooks – precommit, update ● Gestion des branches ● Import svn
JPF 2008 Branches ● Features ? ● Validations et test ? ● Version ? ● Plateforme ?
JPF 2008 Système de hook
JPF 2008 Système d'extension
JPF 2008 Import depuis svn
JPF 2008 ?