Configuração do mercurial sobre HTTP

4

Você pode fornecer alguns indicadores para configurar o Mercurial em HTTP / HTTPS? Eu estou configurando um servidor de desenvolvimento (Debian), onde eu quero criar um repositório mercurial e empurrar as mudanças para o servidor. Eu preciso autenticar para evitar qualquer acesso desnecessário.

Obrigado antecipadamente.

    
por 18bytes 04.08.2011 / 22:54

3 respostas

7

Eu acho que o Apache é uma ótima maneira de compartilhar repositórios hg. O script hgweb.wsgi não apenas oferece a possibilidade de executar vários repositórios, mas também permite que os desenvolvedores consultem de forma conveniente o código-fonte do projeto por caminho ou revisão de uma fonte definitiva.

O procedimento a seguir fornecerá uma maneira fácil de publicar um repositório e disponibilizá-lo por meio de uma conexão da Web https com usuários autenticados.

Primeiro de tudo, sugiro fazer um clone do seu repositório sem um diretório de arquivos local.

hg clone -U <myproject> <myproject_to_serve>

Em seguida (usando a configuração WSGI, que é fácil e fácil), faça o seguinte:

Mova seu repositório para um local conveniente para o qual ele será veiculado:

mv <myproject_to_serve> /var/www/hg/<myproject_to_serve>

Certifique-se de que o repositório é lido / gravável pelo usuário do servidor web:

chown -R www-data:www-data /var/www/hg/<myproject_to_serve>

Agora configure direitos de leitura / gravação para os usuários do projeto e forneça algumas informações para a listagem do projeto na home page do seu servidor:

vim /var/www/hg/myproject_to_serve>/.hg/hgrc
[web]
description = 'This is my new web-enabled project <myproject>'
contact = [email protected]
# consider limiting push usage to only a subset of users
allow_push = *

Agora configure o WSGI

vim /var/www/hg/hgweb.config
[paths]
/myproj = /var/www/hg/my_project_to_serve

Agora configure o apache

<VirtualHost *:443>

    ServerName hg.mydomain.net
    ServerAdmin [email protected]

    ErrorLog /var/www/mydomain/logs/hg_error_log
    CustomLog /var/www/mydomain/logs/hg_access_log common

    SSLEngine on
    SSLCertificateFile /etc/ssl/mydomain_net.crt
    SSLCertificateKeyFile /etc/ssl/mydomain_net.key

    DocumentRoot "/var/www/hg/"

    <Location "/hg">
        SetHandler None
    </Location>

    # path to provided hgweb.wsgi script
    WSGIScriptAlias / /var/www/hg/scripts/hgweb.wsgi 

    <Location / >
        AuthType Digest
        AuthName "MySoftware"
        AuthUserFile /home/software/software_web_permissions
        Require valid-user
    </Location>

</VirtualHost>

O texto acima requer que você tenha:

  1. O script hgweb.wsgi (que vem com uma instalação padrão do Mercurial, digamos, Debian) em algum lugar convenientemente disponível
  2. Um AuthUserFile no formato htdigest do apache para criar usuários autenticados.

Navegar para hg.mydomain.net mostrará uma lista bem formatada de projetos disponíveis. hg.mydomain.net/myproj mostrará, após a autenticação bem-sucedida, o status atual do seu projeto de acordo com o /var/www/hg/<myproject_to_serve> repo.

    
por 04.08.2011 / 23:41
1

Um bom resumo das opções, junto com vantagens / desvantagens, está disponível no wiki do mercurial .

    
por 04.08.2011 / 23:00
0

Minha recomendação, se você realmente não precisa de nenhum tipo de interface da web, é usar ssh como um protocolo de transporte. Ele nem precisa de configuração real, tudo que você precisa é de ssh e Mercurial instalado.

Um exemplo: Para clonar o repositório remoto denominado hgtest , localizado em ~username/hgtest no diretório atual, use o comando

hg clone ssh://[email protected]/hgtest
    
por 04.08.2011 / 23:06