Git + Smart Http(s): ошибка 403
Хотя я прочитал много постов, я не смог решить эту проблему.
Я хочу использовать Git + Smart Http, используя удаленный репозиторий на моем rasperry pi.
Я работаю на Arch Linux.
Во-первых, давайте рассмотрим конфигурацию Http (а не https) для простоты.
Apache и Git правильно установлены на моем Rasperry Pi, и порт для соединения Http - 8080.
На моем Raspberry Pi:
1. Я раскомментировал в /etc/httpd/conf/http.conf строки о mod_cgi, mod_alias и mod_env
2. Я добавил в /etc/httpd/conf/http.conf следующие строки:
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
<Directory "/usr/lib/git-core*">
Require all granted
</Directory>
Я создал каталог / srv / git
# mkdir -p /srv/git
Я создал и инициализировал репозиторий git:
# mkdir -p /srv/git/test.git
# git init --bare
Я сменил владельца и группу репо:
# chown -R http:http /srv/git/test.git
На моем клиенте:
Я клонировал репо внутри папки
$ git clone http://address:8080/git/test.git
Я создал и добавил новый файл, и я совершил
$ nano test.c
$ git add test.c
$ git commit -m 'first'
Я выдвинул новый проект на мой Rasperry Pi
$ git push origin master
Но у меня есть эта ошибка:
atal: unable to access 'address:8080/git/test.git/';: The requested URL returned error: 403
1 ответ
Если вы клонируете репо в тестовой папке (в которой вы инициализировали git репо), это означает, что у вас есть:
test/test
Если вы нажимаете из первой тестовой папки, у этого репо не будет никакого источника.
Попробуйте вместо этого удалить любую тестовую папку и начать заново с:
git clone http://address:8080/git/test.git
cd test
# work
git add .
git commit -m "work"
git push -u origin master
Что касается ошибки 403, я бы рекомендовал на стороне сервера Apache (2.4):
<Directory "/usr/lib/git-core*">
Options ExecCGI Indexes
Order allow,deny
Allow from all
Require all granted
</Directory>
А также:
<LocationMatch "^/.*/git-receive-pack$">
Options +ExecCGI
Require all granted
</LocationMatch>
<LocationMatch "^/.*/git-upload-pack$">
Options +ExecCGI
Require all granted
</LocationMatch>
Также на сервере в папке git bare repo:
cd /srv/git/test.git
git config --file config http.receivepack true