Git push da error 403

0

He estado siguiendo los pasos para Hospedar un servidor Git en Apache en Windows y conseguí que todo funcionara bien. Luego quise agregar una autenticación básica para las solicitudes push y, por lo tanto, hice cambios después de la solución dada a esta pregunta a mi httpd.confarchivo y creé un usuario con una contraseña.

Pero cuando intento ingresar a mi repositorio (en localhost) obtengo un error 403. ¿Por qué podría ser esto?

La adición al final de mi httpd.confarchivo está abajo.

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

Además, he visto preguntas como esta en SuperUser y StackOverflow. Si alguien pudiera decirme en qué sitio es más adecuado, sería genial.

Editar

Comprobar el registro de errores de Apache revela este error

AH01215: Service not enabled: 'receive-pack'

Solución con un nuevo problema Agregar SetEnv REMOTE_USER=$REDIRECT_REMOTE_USERme permite pasar al repositorio pero nunca me piden una contraseña ...

Kvothe
fuente

Respuestas:

0

Tienes una coincidencia de ubicación git-receive-packpero no para git-upload-pack. Haz el mismo LocationMatchbloque git-upload-packtambién.

oldmud0
fuente
Solo intenté agregar el mismo bloque inmediatamente después con en git-upload-packlugar de, git-receive-packpero aún recibo el mismo error. He agregado el registro de errores de apache, ¿eso lo explica?
Kvothe
@Kvothe hmm ... Investigaré más a fondo, en ese caso.
oldmud0
0

Finalmente las cosas funcionaron (aunque no estoy completamente seguro de cómo). Los cambios en mi httpd.confarchivo están al final así:

# 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 una línea clave fue SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

Kvothe
fuente