Spring is hate...

Mercurial et SSH, le piège à éviter

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 :

#! 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...

#! 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 :

#! 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.

6 Jan. 2010 - 16:01, par http://providenz.fr

J'ai perdu qu'une heure, j'ai trouvé ton post avant d'entamer la suivante.
Merci

8 Avril 2010 - 08:20, par FooBar

Merci, j'ai mis exactement 5 minutes pour faire fonctionner mercurial par ssh grace à ton post (google mercurial+ssh).

29 Juin 2010 - 12:35, par luc

Merci. Post très utile qui m'a aussi permis de faire marcher Hg en ssh sans trop de difficultés. Quelqu'un a-t-il essayé d'utiliser HTTP et SSL plutôt?

7 Sept. 2010 - 10:13, par Jaoui

Salut, merci pour ce petit tuyaux, cependant je reste dans la même galère quand je met les fameux doubles slash!

Voici la commande que je rentre:

$ hg clone ssh://root@ipdemonserveur//home//projet/mondépot

Il me met la même erreur!

7 Sept. 2010 - 14:57, par No'

le double slash après home est inutile.

1 Fév. 2011 - 12:19, par Julien K

J'ai passé 2 heures a essayer de faire fonctionner ce plugin.... et 5 sec avec ton post.

Merci pour ton tuto.

Julien

14 Fév. 2011 - 16:32, par Martopioche

Bonjour,

Je suis tombé sur l'article avant de faire la manip' justement et double slash à la con au lieu du standard double point se justifie ;) Dans mon cas, il n'y avait pas d'utilisation du port standard, il est donc possible de faire :
hg clone ssh://@www.myurl.com:2222//home//myrepo

hg clone n'ayant pas, comme ssh, d'option -p ;)

14 Fév. 2011 - 16:34, par Martopioche

Oups, j'ai utilisé des termes comme dans l'article. Comprendre :

hg clone ssh://user@www.myurl.com:2222//home/user/myrepo

où 2222 est le port utilisé.

Désolé pour la bourde.

20 Fév. 2011 - 02:48, par Lisael

Juste pour info, ce n'est pas un "double slash". En effet, la syntaxe est ssh://[user@]my.domain.org[:port]/ ou est le chemin vers le dépot RELATIF au $HOME de user. Or tu attaque ici avec un chemin absolu qui commence donc par un slash. Chez moi j'ai donc fait :

lisael@server-distant:~$ mkdir projects
lisael@server-distant:~$ cd projects
lisael@server-distant:~/projects$ hg init test

et j'y accède par :

lisael@chez_moi:~$ hg clone ssh://lisael.org/projects/test

ou si je veux me compliuquer la vie par :
lisael@chez_moi:~$ hg clone ssh://lisael.org//home/lisael/projects/test

ce qui est quand meme moins classe ¬¬

Enjoy!

20 Fév. 2011 - 02:52, par Lisael

Oops le moteur de blog a avalé un bout de mon message... donc je reprends : il fallait lire :

"La syntaxe est ssh://[user@]my.domain.org[:port]/path ou path est le chemin vers le dépot RELATIF au $HOME de user.

désolé...

5 Sept. 2011 - 00:28, par Ronan

Merci !!


Toutes les balises HTML seront supprimées.
Tu peux ajouter des liens comme suit :
J'ajoute [a http://exemple.com "un joli lien"]
Tu peux aussi mettre *en gras* ou {en italique}.