Назад | Перейти на главную страницу

репозиторий git с apache на сервере ubuntu только пути .git

У меня есть сервер ubuntu, на котором запущен apache2. Я пытаюсь настроить его для обслуживания репозитория git через http.

Прочитав десятки примеров, я закончил работу с очень упрощенным файлом конфигурации, удалив для простоты всю аутентификацию.

Мой файл git_conf в conf.d выглядит так:

SetEnv GIT_PROJECT_ROOT /srv/repos/git/
SetEnv GIT_HTTP_EXPORT_ALL

ScriptAlias /git/ /usr/lib/git-core/git-http-backend/

<Location /git>
</Location>

Я создал пустой репозиторий git вот так:

# git --bare init myrepo
# cd myrepo
# git --bare update-server-info
# cd ..
# chown -R www-data:www-data myrepo

Теперь начинается самое интересное. Мне удалось клонировать репо на локальном компьютере:

# cd ~/tmp
# git clone /my/repo/path/myrepo test1

Но всякий раз, когда я пытаюсь клонировать с удаленной машины, вот так:

$ git clone http: // мойсервер / git / myrepo test1

Я получаю:

fatal: http://cfs-int-redmine/git/iosdemo/info/refs not found: did you run git update-server-info on the server?

Если на сервере я создаю символическую ссылку на репо, например:

# ln -s myrepo myrepo.git

А потом пытаюсь клонировать http: //myserver/git/myrepo.git, оно работает.

Так что же происходит? Должен ли я всегда использовать ".git", чтобы иметь возможность использовать репозиторий? Как мне заставить его работать без .git?

Еще одно решение этой проблемы - убедиться на 100%, что ваш ScriptAlias указывает на правильный git-http-backend расположение.

SetEnv GIT_PROJECT_ROOT /data/git/
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/

Обычно любой хостинг будет использовать .git суффикс. С технической точки зрения я бы не ожидал, что это потребуется, но на данный момент это довольно прочный стандарт, и ваше собственное тестирование, похоже, подтверждает, что git обеспечивает соблюдение этого. В .git суффикс в имени каталога отмечает каталог как пустой репозиторий git, аналогично тому, как .git Папка используется для хранения информации о репозитории git в репозитории без оболочки.