Почему git-daemon не будет обслуживать мой репозиторий?
Я настроил .git
в каталоге на моей локальной машине. Затем я запускаю:
MKDIR A компакт-диск мерзавец мерзавец демон
Когда я пытаюсь клонировать хранилище в a
Я получаю следующую ошибку:
MKDIR B CD B git clone git://127.0.0.1 Инициализированный пустой репозиторий Git в /b/127.0.0.1/.git/ фатальный: удаленный конец неожиданно завис
Как я могу клонировать свой репозиторий по протоколу git?
2 ответа
Вы должны позволить git-daemon
знаю, что это может экспортировать ваш репозиторий:
$ git init --bare /tmp/my-repo.git Инициализированный пустой репозиторий Git в /tmp/my-repo.git/ $ git daemon --verbose --base-path=/tmp --export-all /tmp/my-repo.git & $ git clone git://`hostname`/my-repo.git Инициализированный пустой репозиторий Git в /tmp/my-repo/.git/ предупреждение: вы, кажется, клонировали пустой репозиторий.
Гораздо лучший способ запустить его из xinetd
, Создать и настроить /etc/xinetd.d/git
по линии
# 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/local/bin/git
server_args = daemon --inetd --export-all --base-path=/pub/scm
log_on_failure += USERID
}
Не забудь sudo killall -HUP xinetd
, Теперь все репозитории git ниже /pub/scm
будет доступен любому, кто попросит.
Вы должны либо положить пустой файл с именем git-daemon-export-ok
в хранилище или начать git daemon
с --export-all
вариант.
Цитата из справочной страницы git-daemon:
Он проверяет, что в каталоге есть магический файл "git-daemon-export-ok", и откажется экспортировать любой каталог git, который не был явно помечен для экспорта этим способом (если не указан параметр --export-all). Если вы передадите несколько путей к каталогам в качестве аргументов git daemon, вы можете дополнительно ограничить предложения белым списком, состоящим из них.