J'ai eu un truc que je ne comprenais pas avec Mercurial. J'avais créé une branche nommée sur mon dépôt local, et fait des commits. Du coup, tout logiquement, j'avais deux "heads", une pour la branche nommée, et une autre pour la branche "default". Au moment de faire mon push, Mercurial a ralé, comme quoi ça allait créer des nouvelles têtes sur le dépôt distant, et me disait qu'il faudrait faire un merge avant de faire le push. Le problème, c'est que je ne veux pas fusionner les deux branches !

Du coup, j'ai eu un gros doute sur ma compréhension de ce qu'était un head, une branche nommée et à quoi ça servait. Mais j'avais beau lire la doc, il me semblait bien avoir compris tout ceci. Et ça ne m'avançait pas sur le pourquoi de l'erreur de Mercurial. Pourquoi fallait-il absolument faire un merge ? Pourquoi avoir un système de branches si c'est pour les fusionner systématiquement ?

Et puis j'ai expliqué mon problème sur le channel irc de Mercurial, et je fus plutôt rassuré. Ou presque. Parce qu'en fait, c'est moi qui n'ait pas tout à fait compris le sens du message d'erreur. Je l'ai trop pris au pied de la lettre. Ce n'est pas une erreur, mais un avertissement, et l'ordre qu'il faille fusionner, n'est pas un ordre, mais une simple proposition pour résoudre le problème (parmis d'autres non explicitées). Et on m'a expliqué qu'en fait, je devais forcer[1] le push avec l'option -f , et que dans les prochaines versions, le message sera plus explicite (pas seulement indiquer qu'il faut merger) ou n'apparaitra plus tout simplement (j'imagine, seulement dans les cas où il s'agit que de têtes de branches, et pas plusieurs têtes sur une même branche).

Bref, voilà mes doutes levés. Je peux continuer à travailler :-)

Notes

[1] ce qu'en fait j'hésitais à faire avant, parce que quand on force les choses, bien souvent ça apporte des ennuis