Mercurial - Definir uma raiz de repositório?

2

Estou configurando um layout de repositório do Mercurial e tenho um diretório com todos os repositórios nele.

/var/vcroot/link/[repository]

Como o SSH é a única maneira que conheço para acessar o Mercurial remotamente, eu sei como configurar a autenticação de chave pública e configurar as variáveis de ambiente apropriadas. O que eu quero saber é alguma maneira de definir a raiz do repositório para que os usuários possam digitar

ssh://connection-name/repository-name

Em oposição a ter que fazer isso:

ssh://connection-name/var/vcroot/link/repository-name

Eu quero algo como a opção -r do svn.

    
por Joshua Enfield 12.07.2010 / 17:32

4 respostas

1

Isso depende se os usuários estão fazendo login como eles próprios ou como um usuário Mercurial dedicado. Se você criar um usuário do Mercurial dedicado e autenticar por chave, poderá definir o diretório inicial do usuário do Mercurial como /var/vcroot/link , e a barra única após connection-name será relativa a isso.

Observe que seu segundo exemplo não será funcional devido a uma barra ausente pelo mesmo motivo (ou seja, deve ser ssh://connection-name//var/vcroot/link/repository-name ).

Se você tiver usuários fazendo login como eles mesmos, cada usuário terá que criar um link simbólico em $HOME para que isso funcione. Como alternativa, você pode tornar /hg um link simbólico para /var/vcroot/link e usar ssh://connection-name//hg/repository-name , que provavelmente é curto o suficiente para ser conveniente.

    
por 14.07.2010 / 18:03
1

Respondendo a esta parte da sua pergunta:

As SSH is the only way I know of to access Mercurial remotely

Você também pode acessar o mercurial remotamente por http / https.

    
por 25.08.2010 / 23:17
1

Eu resolvi isso criando um script de shell / usr / local / bin / hg:

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

Se você, em seguida, executar remotamente 'hg init ssh: // nome-da-conexão / nome-do-repositório', o repositório será criado em / var / vcroot / link / repository-name e clonado e executado conforme esperado. Eu não testei mais nada.

    
por 21.04.2011 / 15:05
0

Eu gosto da idéia de mudar o diretório home para /var/vcroot/link , mas se eles logarem com nomes de usuários diferentes, então isso não funcionará.

Você pode sugerir aos seus usuários que eles configurem um esquema especial para o seu servidor. A extensão padrão permite que você faça isso. Eles devem adicionar

[extensions]
schemes =

[schemes]
server = ssh://connection-name//var/vcroot/link/

para um arquivo de configuração e, em seguida, eles podem fazer

$ hg clone server://repository-name

em vez de

$ hg clone ssh://connection-name//var/vcroot/link/repository-name

Se você tiver controle sobre suas máquinas, poderá até ativar e configurar a extensão no arquivo /etc/mercurial/hgrc para torná-lo uma configuração de todo o sistema.

    
por 23.12.2011 / 17:21