Exemple: disons que vous souhaitez modifier le nom d'utilisateur de tous vos commits précédents. J'ai eu besoin de le faire plusieurs fois pour diverses raisons.
Version Git
git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ];
then
GIT_COMMITTER_NAME="<New Name>";
GIT_AUTHOR_NAME="<New Name>";
GIT_COMMITTER_EMAIL="<New Email>";
GIT_AUTHOR_EMAIL="<New Email>";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD
Version Mercurial:
auteurs.convert.list:
<oldname>=<newname>
Ligne de commande:
hg convert --authors authors.convert.list SOURCE DEST
Maintenant, lequel semble plus facile à utiliser?
Note: J'ai passé 2 ans à travailler uniquement avec Git, donc ce n'est pas un discours "je déteste ça, je ne l'ai pas eu en 2 secondes".
Pour moi, c'est la facilité d'utilisation. Git est très orienté Linux avec une manière de faire les choses sous Linux. Cela signifie une ligne de commande, des pages de manuel, et le découvrir vous-même. Son interface graphique était très médiocre (remarque: je me base sur msysGit il y a environ un an), qui semblait tout simplement me gêner. Je pouvais à peine l'utiliser
La ligne de commande était pire. En tant que programme orienté Linux, il était très difficile à utiliser sous Windows. Au lieu d'un port natif, ils ont simplement enveloppé git avec MinGW (Think cygwin), ce qui rendait le travail beaucoup plus difficile. MinGW n'est pas une invite de commande Windows et agit simplement différemment. C'est fou que ce soit la seule façon de travailler avec Git. Même sous Linux, le seul moyen semblait fonctionner avec une ligne de commande directe. Des projets comme RabbitVCS ont aidé certains, mais n'étaient pas très puissants.
L’approche orientée ligne de commande et le fait que ce soit un programme Linux signifie que presque tous les guides d’aide, la documentation d’aide et les questions relatives au forum / AQ reposaient sur l’exécution de commandes monstrueuses comme ci-dessus. Les commandes SCM de base (commit, pull, push) ne sont pas aussi complexes, mais leur complexité augmente de manière exponentielle.
Je déteste aussi le seul endroit où de nombreux utilisateurs de git OSS semblent traîner: Github. Lorsque vous accédez pour la première fois à une page github, cela vous claque avec tout ce que vous pouvez éventuellement faire. Pour moi, une page git de projets a l' air chaotique, effrayante et trop puissante. Même l'explication de ce qu'est le projet est poussée au fond. Github blesse vraiment les gens qui n'ont pas déjà un site complet. Son suivi des problèmes est également terrible et déroutant. Surcharge de fonctionnalité.
Les utilisateurs de Git semblaient aussi être très culte. Les utilisateurs de Git semblent toujours être ceux qui commencent des "guerres saintes" pour lesquelles le DVCS est meilleur, ce qui oblige ensuite les utilisateurs de Mercurial à se défendre. Des sites comme http://whygitisbetterthanx.com/ affichent de l'arrogance et une mentalité proche de "Utilisez mon logiciel ou mourez". Bien souvent, je suis allé chercher de l'aide pour ne pas connaître X, utiliser X au préalable, Windows, etc.
Mercurial, en revanche, semble aller dans le sens d’une approche plus douce. Leur propre page d'accueil semble beaucoup plus conviviale pour les nouveaux utilisateurs que celle de Git . Dans une simple recherche sur Google, le 5ème résultat est TortoiseHg, une très belle interface graphique pour Mercurial. Toute leur approche semble être la simplicité d'abord, le pouvoir plus tard.
Avec Mercurial, je n'ai pas d'absurdité SSH (SSH est un enfer sous Windows), je n'ai pas de commandes stupidement complexes, je n'ai pas d'utilisateur culte à suivre, je n'ai pas la folie. Mercurial fonctionne.
TortoiseHg fournit une interface réellement utilisable (bien que, dernièrement, elle semble se développer) qui fournit des fonctionnalités utiles. Les options sont limitées à ce dont vous avez besoin, en supprimant le fouillis et les options rarement utilisées. Il fournit également de nombreux défauts par défaut
Mercurial, étant très amical avec les nouveaux arrivants, était très facile à prendre en charge. Même certains des sujets les plus complexes, tels que le modèle de création de branches et l'édition d'historique, étaient très faciles à suivre. J'ai ramassé Mercurial rapidement et sans douleur.
Mercurial fonctionne également pour la première fois avec peu d’installation. Sur n’importe quel système d’exploitation, je peux simplement installer TortoiseHg et bénéficier de toutes les fonctionnalités souhaitées (principalement des commandes de menu contextuel) sans avoir à rechercher différents Guis. Il manque également la configuration de SSH (la moitié des guides disent d’utiliser Putty, Plink et Pagent, tandis que l’autre moitié dit d’utiliser ssh-keygen). TortoiseHg prend quelques minutes à configurer tandis que Git prend 30 minutes à une heure avec beaucoup de recherches sur Google.
Enfin, vous avez le dépôt en ligne. L'équivalent de Githubs est BitBucket, qui présente certains des problèmes que j'ai décrits ci-dessus. Cependant, il y a aussi Google Code. Lorsque je me connecte à un projet Google Code , je ne suis pas surchargé de fonctionnalités, je reçois une interface propre et agréable. Google Code est plutôt un combo de sites Web / référents en ligne, ce qui aide réellement les projets OSS n'ayant pas de configuration de site existante. Je serais très à l'aise d'utiliser Google Code comme site Web de mes projets pendant un bon bout de temps, ne construisant un site Web que lorsque cela est absolument nécessaire. Son système de suivi des problèmes est également puissant, s’intégrant parfaitement entre le système de suivi des problèmes presque inutile de Github et la monstruosité de Bugzilla .
Mercurial fonctionne tout simplement, pour la première fois, à chaque fois. Git se met en travers de mon chemin et ne me met en colère que plus je l'utilise.