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>
  1. Я создал каталог / srv / git

    # mkdir -p /srv/git

  2. Я создал и инициализировал репозиторий git:

    # mkdir -p /srv/git/test.git
    # git init --bare

  3. Я сменил владельца и группу репо:

    # chown -R http:http /srv/git/test.git

На моем клиенте:

  1. Я клонировал репо внутри папки

    $ git clone http://address:8080/git/test.git

  2. Я создал и добавил новый файл, и я совершил

    $ nano test.c
    $ git add test.c
    $ git commit -m 'first' 

  3. Я выдвинул новый проект на мой 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
Другие вопросы по тегам