2 votes

Mercurial - Définir une Racine de Référentiel?

Je suis en train de mettre en place une disposition de dépôt Mercurial, et j'ai un répertoire avec tous les dépôts dedans.

/var/vcroot/link/[dépôt]

Comme SSH est le seul moyen que je connaisse pour accéder à Mercurial à distance, je sais comment configurer l'authentification par clé publique et configurer les variables d'environnement appropriées. Ce que je veux savoir, c'est s'il y a un moyen de définir la racine du dépôt afin que les utilisateurs puissent simplement taper

ssh://nom-de-la-connexion/nom-du-dépôt

Au lieu de devoir faire ceci:

ssh://nom-de-la-connexion/var/vcroot/link/nom-du-dépôt

Je veux quelque chose comme l'option -r de svn.

1voto

martjno Points 1024

Cela dépend de savoir si les utilisateurs se connectent en tant qu'eux-mêmes ou en tant qu'utilisateur Mercurial dédié. Si vous créez un utilisateur Mercurial dédié et que vous vous authentifiez par clé, vous pouvez définir le répertoire personnel de l'utilisateur Mercurial sur /var/vcroot/link, et le simple slash après connection-name sera relatif à cela.

Remarquez que votre deuxième exemple ne fonctionnera pas en raison d'un slash manquant pour la même raison (c'est-à-dire qu'il devrait être ssh://connection-name//var/vcroot/link/repository-name).

Si vous avez des utilisateurs se connectant en tant qu'eux-mêmes, alors chaque utilisateur devra créer un lien symbolique dans $HOME pour que cela fonctionne. En alternance, vous pouvez faire de /hg un lien symbolique vers /var/vcroot/link, et utiliser ssh://connection-name//hg/repository-name, ce qui est probablement assez court pour être pratique.

1voto

derekandkong Points 16

En réponse à cette partie de votre question :

Comme SSH est la seule façon que je connaisse d'accéder à Mercurial à distance

Vous pouvez également accéder à Mercurial à distance via http/https.

1voto

Sevyls Points 101

J'ai résolu cela en créant un script shell /usr/local/bin/hg :

#!/bin/sh
cd /var/vcroot/link
/usr/bin/hg $*

Si vous exécutez ensuite 'hg init ssh://connection-name/repository-name' à distance, le dépôt est créé dans /var/vcroot/link/repository-name, et le clonage et le push fonctionnent comme prévu. Je n'ai cependant rien d'autre testé.

0voto

Jared Burrows Points 271

J'aime l'idée de changer le répertoire racine en /var/vcroot/link, mais si les utilisateurs se connectent avec des noms d'utilisateurs différents, cela ne fonctionnera pas.

À la place, vous pouvez suggérer à vos utilisateurs de mettre en place un schéma spécial pour votre serveur. L'extension standard schemes vous permet de le faire. Ils devraient ajouter

[extensions]
schemes =

[schemes]
server = ssh://nom-connexion//var/vcroot/link/

à un fichier de configuration et ensuite ils pourront faire

$ hg clone server://nom-dépôt

au lieu de

$ hg clone ssh://nom-connexion//var/vcroot/link/nom-dépôt

Si vous avez le contrôle sur leurs machines, vous pouvez même activer et configurer l'extension dans le fichier /etc/mercurial/hgrc pour en faire un réglage à l'échelle du système.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X