Я следовал за шагами на хостинге сервера Git под Apache на Windows и получил все работает нормально. Затем я захотел добавить базовую аутентификацию для push-запросов и внес изменения, следуя решению данного вопроса, в мой файл httpd.conf и создал пользователя с паролем.

Но когда я пытаюсь перейти в свой репозиторий (на локальном хосте), я получаю ошибку 403. Почему это может быть?

Добавление в конце моего файла httpd.conf ниже.

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

Кроме того, я видел такие вопросы, как на SuperUser и StackOverflow. Если бы кто-то мог сказать мне, какой сайт больше подходит, это было бы здорово.

редактировать

Проверка журнала ошибок apache выявляет эту ошибку

AH01215: Service not enabled: 'receive-pack'

Решение с новой проблемой Добавление SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER позволяет мне перейти на репо, но у меня никогда не спрашивают пароль ...

2 ответа2

0

Наконец-то все заработало (хотя я не совсем уверен, как). Изменения в моем файле httpd.conf находятся в конце примерно так:

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

Похоже, что ключевой строкой было SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

0

У вас есть соответствие местоположения для git-receive-pack но не для git-upload-pack . Сделайте такой же блок LocationMatch для git-upload-pack .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .