【问题标题】:Git-daemon - how does one update cloned repo>?Git-daemon - 如何更新克隆的 repo>?
【发布时间】:2026-01-19 01:35:01
【问题描述】:

我需要允许匿名访问一些存储库。我阅读了一些关于 git-daemon 的操作指南和文档,它们使用 git clone clone --bare 方法并使用 git-daemon 提供克隆的 repo。 这工作正常,通过 aptitude 安装它,它作为 /etc/srv/git-daemon 中的服务运行愉快。

我的问题是,一旦 devel 有更多提交,您如何更新和同步用作公共存储库的克隆实例?

此外,这个 repo 似乎也是可写的(很明显,但肯定并不总是想要),是否可以让 git-daemon 以只读方式服务?

【问题讨论】:

    标签: git git-daemon


    【解决方案1】:

    要使存储库对所有人只读,仅对某些用户可写,最简单的方法是添加authorization layer,例如gitolite

    您可以将其插入 gitweb,或者只是插入 http(s) 访问,就像我在 Apache configuration 中所做的那样,可以设置为需要身份验证。

    因此,您可以保留当前的 ​​git-daemon 以进行只读访问,但您可以添加(经过身份验证的)https 访问以用于写入目的,从而允许您精确控制谁可以对哪些存储库执行什么操作(通过 gitolite)。

    您还可以将post-receive 钩子添加到您的可写上游存储库中,以便该钩子将cd 链接到另一个只读存储库,并执行git fetch

    #!/bin/bash
    export GIT_DIR=/path/to/bare/read-only-repo.git/
    cd $GIT_DIR
    git fetch --all
    

    【讨论】: