Я создал тестовое репозиторий git на сервере Git:
/var/cache/git/username/myGitRepo.git
Это «голый» репозиторий git. Право собственности на файлы принадлежит этому пользователю с именем пользователя. Я могу клонировать вышеуказанный репозиторий Git на другом компьютере с Windows.
git clone git://myhost/var/cache/git/username/myGitRepo.git
Репо клонирует правильно. Затем я могу выполнить локальные коммиты и попытаться отправить изменения обратно на свой сервер Git:
git push origin master
Но это дает ошибку разрешения на сервере:
fatal: remote error: access denied or repository not exported: /git/username/myGitRepo.git
Я добавил волшебный файл 'git-daemon-export-ok
'в каталоге репо. Но я продолжаю получать указанную выше ошибку.
Я даже установил chmod
к 777
из /var/cache/git/username/myGitRepo.git
Получение такой же ошибки.
Git remote -v выдает следующий вывод.
$ git remote -v
origin git://myhost/git/username/myGitRepo.git (fetch)
origin git://myhost/git/username/myGitRepo.git (push)
Кто-нибудь может помочь мне решить эту ошибку?
Из коробки стандартный git-daemon
не позволяет вам push
в репозитории. На странице руководства говорится:
Это идеально подходит для обновлений только для чтения, т. Е. Извлечения из репозиториев git.
Если вы действительно хотите включить анонимный push
(и действительно, вы этого не сделаете; просто используйте ssh
), вам необходимо включить receive-pack
сервис, который по умолчанию отключен (потому что это плохая идея). Опять же, со страницы руководства ( СЕРВИСЫ раздел):
приемная упаковка
Это обслуживает клиентов git send-pack, разрешая анонимный push. По умолчанию он отключен, так как в протоколе нет аутентификации. (другими словами, любой может поместить в репозиторий что угодно, включая удаление ссылок).
В смелый это мое. Вы можете включить эту службу глобально, передав --enable=receive-pack
параметр командной строки или для каждого репозитория, задав daemon.receivepack
к true
в конфигурации git вашего репозитория.