Подтвердить что ты не робот

Почему git -daemon не обслуживает мой репозиторий?

Я установил .git в каталог на моем локальном компьютере. Затем я запускаю:

mkdir a
cd a
git init
git daemon

Когда я пытаюсь клонировать репозиторий в a, я получаю следующую ошибку:

mkdir b
cd b
git clone git://127.0.0.1
Initialized empty Git repository in /b/127.0.0.1/.git/
fatal: The remote end hung up unexpectedly

Как я могу клонировать мой репозиторий по протоколу git?

4b9b3361

Ответ 1

Вы должны позволить git-daemon знать, что он может экспортировать ваш репозиторий:

$ git init --bare /tmp/my-repo.git
Initialized empty Git repository in /tmp/my-repo.git/

$ git daemon --verbose --base-path=/tmp --export-all /tmp/my-repo.git &

$ git clone git://`hostname`/my-repo.git
Initialized empty Git repository in /tmp/my-repo/.git/
warning: You appear to have cloned an empty repository.

Лучше всего запустить его из 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 будут доступны всем, кто спрашивает.

Ответ 2

Вам нужно либо поместить пустой файл с именем git-daemon-export-ok в репозиторий, либо запустить git daemon с помощью параметра --export-all.

Цитата из git -daemon справочная страница:

Он проверяет, что каталог имеет волшебный файл "git -daemon-export-ok" и он откажется экспортировать любые gitкаталог, который явно не был для экспорта таким образом (если только - параметр -export-all). Если вы пройдете несколько путей к каталогам git аргументы демона, вы можете ограничить предложения белым списком включая их.