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

Gitosis: доступ для чтения запрещен

Я пытаюсь заставить Gitosis работать на моем сервере Ubuntu (от клиента Win7). Он установлен, и я могу подключиться к нему через SSH, однако, если я попытаюсь запустить новый проект, я получу следующую ошибку:

ОШИБКА: gitosis.serve.main: доступ для чтения репозитория запрещен

С тех пор я попытался очистить папку / home / git / и начать заново, но теперь я получаю ту же ошибку, даже когда пытаюсь захватить проект gitosis-admin.

Есть идеи, что могло вызвать это?

[править] Добавление флага отладки в файл конфигурации дает мне следующее:

C:\sandbox>git push origin master
DEBUG:gitosis.serve.main:Got command "git-receive-pack '/home/git/repositories/sandbox'"
DEBUG:gitosis.access.haveAccess:Access check for 'Dan@DAN-PC' as 'writable' on 'home/git/repositories/sandbox'...
DEBUG:gitosis.group.getMembership:found 'Dan@DAN-PC' in 'gitosis-admin'
DEBUG:gitosis.access.haveAccess:Access check for 'Dan@DAN-PC' as 'writeable' on 'home/git/repositories/sandbox'...
DEBUG:gitosis.group.getMembership:found 'Dan@DAN-PC' in 'gitosis-admin'
DEBUG:gitosis.access.haveAccess:Access check for 'Dan@DAN-PC' as 'readonly' on 'home/git/repositories/sandbox'...
DEBUG:gitosis.group.getMembership:found 'Dan@DAN-PC' in 'gitosis-admin'
ERROR:gitosis.serve.main:Repository read access denied
fatal: The remote end hung up unexpectedly

[edit2]

Чтобы добавить к этому дополнительную информацию - я только что попробовал Gitolite и получил аналогичную ошибку:

Cloning into gitolite-admin...
R access for home/git/repositories/gitolite-admin DENIED to dan
(Or there may be no repository at the given path. Did you spell it correctly?)
fatal: The remote end hung up unexpectedly

При этом используется тот же пользователь "git" и ключи. Я попытался изменить права доступа к каталогу, но это не помогло.

Есть идеи, что могло вызвать это?

Обычно это означает либо (а) ошибку конфигурации в вашем gitosis.confили (б) отсутствующий открытый ключ в вашем Gitosis keydir. Для дальнейшей диагностики проблемы:

  • Проверьте репозиторий администратора. Поскольку вы можете войти на сервер, вы можете запустить:

    git checkout /path/to/gitosis/repos/gitosis-admin.git
    
  • Это даст вам каталог с именем gitosis-admin. Внутри этого каталога находится ваш gitosis.conf файл.

  • Добавьте в начало файла следующее:

    [gitosis]
    loglevel = DEBUG
    
  • Зафиксируйте свои изменения и вернитесь в исходный репозиторий:

    git commit -m 'enabled debug logging' -a
    git push origin master
    

Теперь, когда вы перейдете к установке gitosis, вы получите подробный журнал отладки, который должен помочь диагностировать проблему. Если это не указывает на проблему, опубликуйте здесь результаты отладки, и мы поможем вам разобраться.

Очень рекомендую бросить гитоз и перейти на гитолит. Gitosis устарел и, похоже, больше не поддерживается, в то время как gitolite очень активно поддерживается и поддерживается. Gitolite делает все, что может gitosis, но делает это лучше, включая подробные ошибки вместо расплывчатых ошибок, которые вы получаете от gitosis.

Оказалось, это потому, что я использовал то же имя пользователя, что и мой основной вход в SSH-оболочку (дан). Поэтому я изменил своего администратора git, чтобы использовать ту же пару ключей SSH, и теперь, похоже, он работает нормально. Также теперь используется Gitolite, как рекомендовано Arrowmaster.