Подтвердить что ты не робот

Не может клонировать git repos через http; info/refs не найден

Я пытаюсь сделать репозиторий git доступным для доступа только для чтения через http.

Я делаю это по-старому, потому что git-http-backend недоступен в моей хост-системе. То есть, я просто помещаю голый репозиторий в доступное место http.

Я создал голый репозиторий успешно на хосте, используя git clone --bare <some-remote-location>.

Теперь, когда я укажу git на новый клон, используя git clone http://my.host.name/location, сообщение сообщает repository not found.

Когда я фиксирую сетевой трафик, я вижу, что git пытается получить доступ к http://my.host.name/location/info/refs. Ожидалось, что это произойдет, потому что в репозитории нет пути info/refs. Скорее всего, есть директории info и refs, расположенные непосредственно под корнем репозитория.

Очевидно, клонированный голый репозиторий не структурирован так, как ожидалось клиентом. Кто-нибудь знает, почему это может быть?

4b9b3361

Ответ 1

Вам нужно будет запустить git update-server-info на сервере, чтобы сгенерировать файлы, необходимые для работы "немого протокола".

Ответ 2

Попробуйте описанные шаги здесь, на git -scm для протокола http/s.

В принципе, после выполнения git clone --bare <path-to-repository> вам нужно запустить mv hooks/post-update.sample hooks/post-update с помощью своего голого репозитория, а затем сделать git update-server-info один раз, а затем вы сможете клонировать репо.

Ответ 3

У меня возникла эта проблема, когда пульт работает в репозитории git 1.7.X и git клиент равен 1.8.X; Я доказал это, понизив мой клиент до 1.7.X - это исправило проблему. Поэтому убедитесь, что git - это ту же версию на сторонах "клиент" и "сервер". Команда, которую я запускал, была git clone.

Ответ 4

Помните также, чтобы активировать необходимые модули на apache. Это необходимые модули для git по HTTP:

  • mod_alias
  • mod_cgi
  • mod_env

Ответ 5

У меня была та же ошибка, пытающаяся клонировать проект gitlab, потому что я задал неправильный путь!
Я взял путь SSH вместо пути HTTP. (+ не забывайте .git)

git clone *HTTP_path.git*