Не удается нажать Git в удаленный репозиторий с помощью http/https

У меня есть репозиторий Git в каталоге, обслуживаемом apache на сервере. Я настроил WebDAV и, похоже, работает правильно. Litmus возвращает 100% успеха.

Я могу клонировать мой репозиторий с удаленного хоста, но при попытке нажать через http или https я получаю следующую ошибку:

Ошибка: не удается получить доступ к URL-адресу https://git.example.com/repo/, код возврата 22 фатальный: git -http-push failed

Любая идея?

Ответ 1

Настоятельно рекомендуется НЕ использовать WebDAV, если это возможно. Если вы должны использовать HTTP/HTTPS, то рекомендуется использовать git-http-backend CGI script через WebDAV.

Ответ 2

Отредактируйте следующий раздел вашего файла .git/config:

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = http://git.repository.url/repo.git

к

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = http://username:[email protected]/repo.git

Затем попробуйте git push origin master.

Отредактируйте данные аутентификации в конфигурационных файлах для других URL-адресов репозитория по мере необходимости и нажмите на требуемую ветку.

Ответ 3

Как в этом комментарий, что говорит ваш /Web/git/Logs/ErrorLog об этой ошибке?

После поиска в /Web/git/Logs/ErrorLog, я обнаружил, что проблема разрешена в файле блокировки. В моей httpd-dav.conf у меня есть строка...

DavLockDB "/usr/var/DavLock"

Затем я проверил каталог /usr/, каталог <var отсутствовал.

$ mkdir var
$ cd var
$ chown www .
$ chgrp www .

И затем повторение процесса кажется, что теперь я могу нажать!! =)


Как упоминалось Эдди в комментариях и Arrowmaster в ответе , smart http protocol теперь является частью недавнего дистрибутива Git.
git-http-backend CGI script может выполнять любые команды Git через http.

smart http

Более разумные протоколы (git и ssh) вместо этого будут иметь разговор с процессом загрузки Git на сервере, который будет определять точный набор объектов, которые нужны клиенту, и создавать собственный пакетный файл только с этими объектами и переверните его.

Ответ 4

вам может потребоваться добавить пользователя в качестве члена для репозитория и, возможно, разрешений на обновление.

мы должны были сделать это с каждым участником, который будет участвовать в наших репозиториях github наших организаций.

Ответ 5

У меня такая же проблема, и я нашел решения, может быть, это будет полезно для кого-то.
Здесь - мое решение с конфигурацией git -http-backend и ldap-аутентификацией.

Ответ 6

У меня была аналогичная проблема, в которой я смог клонировать и извлекать из репозитория с помощью протокола HTTP, но я не смог нажать. Я решил это, выполнив следующее.

Я изменил URL-адрес удаленного в файле проекта .git/config, чтобы он соответствовал URL-адресу GitHub SSH. Затем я выполнил все инструкции в разделе " https://help.github.com/articles/generating-ssh-keys#platform-linux" и устранил неисправность с помощью https://help.github.com/articles/error-permission-denied-publickey". Самое приятное то, что я не имел дело с Apache или изменял любые настройки HTTP на удаленном сервере.