Você tem uma correspondência de local para git-receive-pack
, mas não para git-upload-pack
. Faça o mesmo bloco LocationMatch
para git-upload-pack
também.
Eu tenho seguido os passos em Hospedar um servidor Git no Apache no Windows e fazer tudo funcionar bem. Então, eu queria adicionar uma autenticação básica para solicitações de envio e, assim, fazer alterações após a solução fornecida para essa questão para o meu arquivo httpd.conf
e criou um usuário com uma senha.
Mas quando tento enviar para o meu repositório (no host local), recebo um erro 403. Por que isso pode ser?
A adição no final do meu arquivo httpd.conf
está abaixo.
# Local git repository setup
# Git repository information
SetEnv GIT_PROJECT_ROOT C:/Repositories
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAliasMatch \
"(?x)^/(.*/(HEAD | info/refs | objects/(info/[^/]+ | [0-9a-f]{2}/[0-9a-f]{38} | pack/pack-[0-9a-f]{40}.(pack|idx)) | git-(upload|receive)-pack))$" \
"C:/Program Files/git/libexec/git-core/git-http-backend.exe/$1"
# Allow cloning of repository without authentication
<Directory />
Require all granted
</Directory>
# Authentication
<LocationMatch "^/.*/git-receive-pack$">
Options +ExecCGI
AuthType Basic
AuthName "Git Login"
AuthUserFile "C:/wamp/bin/apache/apache2.4.9/passwords/git_passwords"
Require user alec
</LocationMatch>
Além disso, tenho visto perguntas como esta no SuperUser e no StackOverflow. Se alguém pudesse me dizer qual site é adequado para mais, seria ótimo.
Editar
Verificar o log de erros do apache revela esse erro
AH01215: Service not enabled: 'receive-pack'
Solução com novo problema
Adicionar SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
me permite enviar para o repositório, mas nunca recebo uma senha ...
Você tem uma correspondência de local para git-receive-pack
, mas não para git-upload-pack
. Faça o mesmo bloco LocationMatch
para git-upload-pack
também.
Finalmente consegui que as coisas funcionassem (embora eu não tenha certeza de como). As alterações no meu arquivo httpd.conf
estão no final, assim:
# Local git repository setup
# Git repository information
SetEnv GIT_PROJECT_ROOT C:/Repositories
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAliasMatch \
"(?x)^/(.*/(HEAD | info/refs | objects/(info/[^/]+ | [0-9a-f]{2}/[0-9a-f]{38} | pack/pack-[0-9a-f]{40}.(pack|idx)) | git-(upload|receive)-pack))$" \
"C:/Program Files/git/libexec/git-core/git-http-backend.exe/$1"
# Allow cloning of repository without authentication
<Directory />
Require all granted
</Directory>
# Authentication
<LocationMatch "^/.*/git-receive-pack$">
Options +ExecCGI
AuthType Basic
AuthName "Git Login"
AuthUserFile "C:/wamp/bin/apache/apache2.4.9/passwords/git_passwords"
Require user alec
</LocationMatch>
<LocationMatch "^/.*/git-upload-pack$">
Options +ExecCGI
AuthType Basic
AuthName "Git Login"
AuthUserFile "C:/wamp/bin/apache/apache2.4.9/passwords/git_passwords"
Require user alec
</LocationMatch>
Parece que uma linha de chave foi SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
Tags git apache-http-server