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.