• [^] # Re: Centralisé et Décentralisé

    Posté par (site web personnel) . En réponse à la dépêche Subversion (SVN) 1.5 est disponible. Évalué à 5.

    misc m'a convaincu de tester Mercurial. En fait, la semaine où j'ai lancé mon projet Hasard, j'errais entre le train et l'hôtel, deux lieux généralement dépourvus d'Internet (gratuit). En gros, il suffit de remplacer "svn" par "hg" dans la ligne de commande. Pour publier son travail (et faire une sauvegarde), il faut faire "hg push" de tant à autre. Mercurial marche très bien avec Apache et SSH. Quand on veut récupérer les modifications des autres, "hg pull" ne suffit pas. Il faut aussi faire "hg update" et "hg merge", chose assez déroutante quand on vient de Subversion.

    Quelques remarques personnelles sur svn VS hg :
    - je commite très souvent car c'est instantané (c'est un peu comme passer de cvs diff à svn diff !) et ça coûte pas cher. Je dois faire 4 à 10x plus de commits, qui sont donc plus petits, plus facile à relire, et c'est aussi plus facile à annuler.
    - on peut supprimer ses derniers commits avec "hg strip", là où subversion est totalement figé : interdiction absolue de supprimer du code (même si on a commité /etc/shadow ou des photos perso)
    - mis à part hg push et hg pull, toutes les opérations sont instantanées, ça fait limite peur au début :-)
    - hg push envoie N commits d'un coup alors que svn ci n'envoie qu'un commit
    - hg revert conserve une copie du fichier modifié (c'est optionnel : hg revert --no-backup)
    - hg ci quitte si le changelog est vide (c'est très positif :-))
    - j'ai merdé : j'ai mis plusieurs dizaines de mégaoctets de fichiers de test dans mon dépôt par erreur. Du coup, le dépôt pèse 40 Mo alors que les sources font juste 40 Ko (en virant l'historique avec "rm -rf .hg*"). Je pense qu'avec l'expérience, je ne ferai plus cette erreur (ex: "hg strip" pour virer des commits).