为什么 git-daemon 不为我的存储库提供服务?

发布于 2024-08-27 03:20:21 字数 315 浏览 11 评论 0原文

我在本地计算机上的目录中设置了 .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 协议克隆我的存储库?

I set up .git in a directory on my local machine. I then run:

mkdir a
cd a
git init
git daemon

When I attempt to clone the repository in a, I get the following error:

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

How can I clone my repository over the git protocol?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧人哭 2024-09-03 03:20:21

您需要让 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 运行它。按照

# 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 的方式创建和调整/etc/xinetd.d/git。现在,任何人都可以使用 /pub/scm 下的所有 git 存储库。

You need to let git-daemon know it may export your repository:

$ 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.

A far better way is to run it from xinetd. Create and tweak /etc/xinetd.d/git along the lines of

# 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
}

Don't forget to sudo killall -HUP xinetd. Now, all git repositories beneath /pub/scm will be available to anyone who asks.

澜川若宁 2024-09-03 03:20:21

您必须将一个名为 git-daemon-export-ok 的空文件放入存储库中,或者使用 --export-all 启动 git daemon > 选项。

引用自 git-daemon 手册页

它验证该目录是否具有
魔术文件“git-daemon-export-ok”,以及
它会拒绝导出任何 git
未明确指定的目录
以这种方式标记为导出(除非
--export-all 参数已指定)。如果您将一些目录路径传递为
git 守护进程参数,你可以进一步
将优惠限制在白名单中
包括那些。

You either have to put an empty file called git-daemon-export-ok into the repository or start git daemon with the --export-all option.

Quote from the git-daemon man page:

It verifies that the directory has the
magic file "git-daemon-export-ok", and
it will refuse to export any git
directory that hasn't explicitly been
marked for export this way (unless the
--export-all parameter is specified). If you pass some directory paths as
git daemon arguments, you can further
restrict the offers to a whitelist
comprising of those.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文