Mercurial et SSH, le piège à éviter

Dim 10 mai 2009

Ce qui suit résulte d'une tentative d'utiliser mercurial via SSH. Pour mes dépôts publics en mercurial, je suis très heureux de pouvoir les déposer sur mon compte bitbucket, même si pour le moment, il ne reflète pas encore les projets que j'ai en tête et pour lesquels je manque un peu de temps.

Bref, hier soir, entre le premier but Rennais et l'égalisation Guingampaise, je me suis demandé s'il était toujours aussi simple d'utiliser mercurial pour avoir un dépôt privé sur mon hébergement chez alwaysdata. L'idée étant de pouvoir cloner, faire des commits sur un poste, pousser ces commits du local vers le dépôt distant, et récupérer ces commits sur un autre poste. Ce que tout gestionnaire de version peut te permettre, quoi. Il y a quelques mois, j'avais essayé avec bzr et sftp et ça allait très bien. Dans le même temps, j'essayais avec Mercurial et le protocole ssh et tout allait très bien aussi. Et hier soir, patatras.

En distant :

1
2
3
4
5
6
7
#! bash
$ ssh <username>@ssh.alwaysdata.com
Password:
$ hg init depot-de-test
$ cd depot-de-test
$ pwd
/home/<username>/depot-de-test

Je viens donc de créer un dépôt Mercurial, dont le chemin était /home/<username>/depot-de-test. Tout naturellement, on pourrait d'ores et déjà le cloner en local, pour en faire une copie de travail...

1
2
3
4
5
#! bash
$ hg clone ssh://<username>@ssh.alwaysdata.com/home/<username>/depot-de-test
Password: 
remote: abort: There is no Mercurial repository here (.hg not found)!
abort: no suitable response from remote hg!

Ah ben ça alors. Je dis "ça alors", parce qe j'ai suivi la doc. J'ai demandé un peu d'aide, notamment à l'excellent support technique d'alwaysdata (on s'est d'abord demandé si ce n'était pas un problème de version) et puis non. J'ai cherché un moment avant de tomber sur cet article.

Ce qui marche effectivement, quand on veut faire référence à un chemin absolu :

1
2
#! bash
$ hg clone ssh://<username>@ssh.alwaysdata.com//home/<username>/depot-de-test

Oui... Il ne manquait qu'un DOUBLE SLASH À LA CON (au lieu d'utiliser le standard ":").

C'est débile et ça m'a fait perdre deux heures que je ne reverrai plus. Bon, maintenant, ça va, je sais comment utiliser les dépôts Mercurial en SSH, mais j'aurais bien aimé que la doc soit plus explicite là-dessus.