使用 git 守护进程和 GitPython 服务存储库
Serve repository using git daemon with 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
我不确定我是否必须将存储库初始化为裸,或者我是否必须在启动 git 守护进程时指定 base_path... 全部都试过了。有人有一些指示吗?
PS:我在这里看到了类似的方法:
https://github.com/gitpython-developers/GitPython/blob/master/git/test/lib/helper.py
搞清楚了,感谢 user3159253。
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
我正在尝试初始化 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
我不确定我是否必须将存储库初始化为裸,或者我是否必须在启动 git 守护进程时指定 base_path... 全部都试过了。有人有一些指示吗?
PS:我在这里看到了类似的方法: https://github.com/gitpython-developers/GitPython/blob/master/git/test/lib/helper.py
搞清楚了,感谢 user3159253。
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