Quais são os passos para configurar o git-http-backend com o Apache no Windows?

6

Eu gostaria de configurar um servidor Git usando a abordagem "Smart-HTTP" . No entanto, estou com dificuldades para fazê-lo funcionar no Windows e sou novo no Apache. Meu httpd.conf, em parte:

SetEnv GIT_PROJECT_ROOT "d:/repositories"
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ "C:/Program Files/Git/libexec/git-core/git-http-backend.exe"

<VirtualHost 172.16.0.5:80>
    <LocationMatch "^/git/.*/git-receive-pack$">
            AuthType Basic
            AuthName "Git Access"
            Require group committers
    </LocationMatch>
</VirtualHost>

Alguém poderia fornecer as etapas para configurar um servidor Git usando o git-http-backend no Windows?

    
por Jordan 14.03.2010 / 04:26

2 respostas

7

Há alguns pequenos detalhes para que isso funcione no Windows, mas consegui fazer isso com a seguinte configuração:

SetEnv GIT_PROJECT_ROOT d:/Export/GIT/
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ "C:/Progra~1/Git/libexec/git-core/git-http-backend.exe/"

<Directory "C:/Program Files/Git/libexec/git-core/">
  Options +ExecCGI
  Allow From All
</Directory>

É altamente recomendável ver os registros do apache e o visualizador de eventos para ver o que está errado.

Por exemplo,

  • libiconv.dll não pode ser encontrado. No Windows, os arquivos DLL precisam existir na $PATH ou na mesma pasta que o arquivo .exe . Correção mais fácil, é copiar o arquivo.
  • No Apache, as permissões precisam ser definidas para executar o executável ( ExecCGI option).

Agora, para continuar a depuração, aqui estão alguns apontadores.

A maneira mais fácil de monitorar os logs do apache é abrindo o shell "Git bash" e executando o seguinte comando:

tail -f /c/Program\ Files/Apache\ Software\ Foundation/Apache2.2/logs/{access,error}.log &

Você pode inserir este comando e caminho usando a conclusão da tabulação e pressione 2x TAB para obter uma lista de sugestões. O & no final o transforma em um processo em segundo plano. Cada vez que você faz uma solicitação ou reinicia o apache, as novas linhas de registro rolam pela tela.

O processo tail pode ser interrompido usando:

jobs         # See the background jobs
kill %1      # Kill the specific process

ou:

fg           # Bring the first job in the foreground
Ctrl+C       # Kill the foreground process

Não tente abrir o URL do git no seu navegador, isso não funcionará. Em vez disso, no mesmo shell GIT Bash, execute o comando git clone . por exemplo:

git clone http://localhost/git/somefolder.git

... e você verá os registros rolando indicando onde as coisas deram errado.

Como o git-http-backend não fornece nenhum frontend de HTML, posso recomendar com entusiasmo o gitphp para isso ( note que existem vários projetos chamados quase os mesmos). É fácil de configurar e construído com o suporte msysGit também. Isso deve fornecer uma boa interface web para procurar todos os repositórios disponíveis.

Eu recebo problemas com espaços na pasta git, é melhor evitar isso.

Clonar a url HTTP requer pelo menos o msysGit 1.7.1 se você quiser lembrar senhas. As senhas podem ser armazenadas em um arquivo _netrc , na sua pasta de perfil ( %USERPROFILE% ) com o seguinte layout:

machine git.mydomain.com login MyAccount password MyPassword

Como alternativa, você pode especificar as credenciais na URL clone, mas isso interromperá os submódulos.

Nota de rodapé: Quando o seu servidor também suporta o IIS 7 e o .NET 4, você também pode querer consultar ou link Estes projetos Fornecer um backend HTTP para o Git, baseado em .NET. Não consegui usar essas ferramentas, porque o servidor ainda executa o Windows 2003.

    
por 22.07.2010 / 15:59
-1

<comment_to_the_question>

I'm having difficulties getting it to work in Windows

  1. Quais dificuldades?
  2. "no Windows" significa do GNU / Linux funciona bem?

Você também deve anexar logs de apache e git , a versão de git para facilitar o rastreamento do problema.

</comment_to_the_question>

O arquivo de configuração parece bem para mim à primeira vista. Tente remover o requisito de autenticação e teste sem primeiro.

    
por 20.03.2010 / 01:55