Служить репозиторию с помощью демона git с GitPython

Я пытаюсь инициализировать репозиторий git, а затем обслуживать его с помощью демона git. Все с GitPython.

Инициализация репо работает:

temp_dir = '/tmp/something'
repo = git.Repo.init(temp_dir)

Также запускаем демон:

gd = Git().daemon(temp_dir, enable='receive-pack', listen='127.0.0.1', port=GIT_DAEMON_PORT,as_process=True, export_all=True)
gd.proc.wait()

Но я не могу получить доступ к репо:

git clone git://127.0.0.1:9418/something 
Cloning into 'something'...
fatal: remote error: access denied or repository not exported: /something

Я не уверен, нужно ли мне инициализировать репо как голое или мне нужно указать base_path при запуске демона git... пробовал все это. У кого-нибудь есть указатели?

PS: я видел подобный подход здесь: https://github.com/gitpython-developers/GitPython/blob/master/git/test/lib/helper.py


person martialblog    schedule 04.06.2016    source источник
comment
Похоже, репозиторий должен быть экспортирован , это файл git-daemon-export -ok создается в git_dir. Взгляните на _set_daemon_export() функция   -  person user3159253    schedule 04.06.2016
comment
Итак, я думаю, repo.daemon_export = True решит вашу проблему   -  person user3159253    schedule 04.06.2016
comment
Спасибо! догадаться.   -  person martialblog    schedule 05.06.2016


Ответы (1)


Разобрался, спасибо пользователю 3159253.

import git
import tempfile

tmpdir = tempfile.TemporaryDirectory(suffix='.git')
repo = git.Repo.init(tmpdir.name, shared=True, bare=True)
repo.daemon_export = True

gd = git.Git().daemon(tmpdir.name,
                      enable='receive-pack',
                      listen='127.0.0.1',
                      port=9418,
                      as_process=True,
                      verbose=True
)
gd.proc.wait()

Теперь вы можете клонировать это репо, используя:

$git clone git://127.0.0.1:9418/tmp/<name-of-tmpdir>.git
person martialblog    schedule 05.06.2016