Git push dá erro 403

0

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 ...

    
por Kvothe 28.06.2015 / 20:14

2 respostas

0

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.

    
por 28.06.2015 / 20:29
0

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

    
por 29.06.2015 / 00:56