Я пытаюсь создать публичный репозиторий git для своей команды.
Я установил Git в Linux (RedHat 5.6).
В качестве первого шага я пытаюсь настроить Git для использования протокола git, настроив его для работы через xinetd.
Вот содержимое /etc/xinetd.d/git-daemon:
# default: off
# description: The git server offers access to git repositories
service git
{
disable = no
type = UNLISTED
port = 9418
socket_type = stream
wait = no
user = nobody
server = /usr/bin/git/git
log_type = FILE /var/log/git-daemon
server_args = daemon --verbose --inetd --export-all --base-path=/tmp
log_on_failure += USERID
}
Согласно / var / log / messages служба запускается правильно.
При попытке клонировать тестовый (голый) репозиторий возникает ошибка:
C:\Users\ltal>git clone git://10.161.202.45/lior-test.git c:\liorssf
Cloning into c:\liorssf...
fatal: protocol error: bad line length character: fata
Выполнение той же команды, которая настроена для xinetd из оболочки, кажется, работает нормально:
/usr/bin/git/git daemon --verbose --export-all --base-path=/tmp &
Теперь клонирование работает.
Что я здесь делаю не так? Кажется, не могу найти решения.
«фата» - начало «фатального», git clone
обрезает его, поэтому вы можете напрямую попробовать использовать nc 10.161.202.45 9418
чтобы получить полное сообщение, возвращаемое git daemon, то, если вам этого недостаточно, чтобы исправить это, вы можете временно заменить /usr/bin/git
по /usr/bin/strace
в поле сервера конфигурации xinetd и добавьте -f /usr/bin/git
к server_args
поле. Вероятно, это ошибка разрешений, возможно, у вас /.git/
владеть корнем, и git daemon
скорее всего, будет работать как менее привилегированный git
пользователь, давится при попытке прочитать /.git/config
…
Проблема была с пользователем, которого я использовал для настройки xinetd.
Я изменил его на root (на данный момент), и теперь я могу с радостью клонировать репозиторий из других клиентов.
Может быть /usr/bin/git
не входит в ПУТЬ.
Добавить env += GIT_TRACE=/tmp/git-xinetd.log
в /etc/xinetd.d/git-daemon
и попробуйте еще раз посмотреть, что написано в журнале?