Git-仅接受来自命名存储库的推送

Git-仅接受来自命名存储库的推送,git,Git,是否有可能以只允许从一个或多个命名的其他存储库推送并拒绝从其他存储库推送的方式配置裸Git存储库 编辑:抱歉,我应该提到这一点,但目标存储库(被推送到的存储库)仅通过git:protocol提供服务,我无法更改这一点。因此,很遗憾,我不能使用ssh密钥…如果您愿意在机器上添加用户,可以使用ssh密钥。Gitorious或Github也可以工作,一个很棒的自定义SSHLocalCommand。但一般原则是,您创建一个密钥对,该密钥对在持有回购协议的账户上获得授权。仔细想想,存储库的名称用于从中获取

是否有可能以只允许从一个或多个命名的其他存储库推送并拒绝从其他存储库推送的方式配置裸Git存储库


编辑:抱歉,我应该提到这一点,但目标存储库(被推送到的存储库)仅通过git:protocol提供服务,我无法更改这一点。因此,很遗憾,我不能使用ssh密钥…

如果您愿意在机器上添加用户,可以使用ssh密钥。Gitorious或Github也可以工作,一个很棒的自定义SSH
LocalCommand
。但一般原则是,您创建一个密钥对,该密钥对在持有回购协议的账户上获得授权。仔细想想,存储库的名称用于从中获取和推送到它。如果你在一个推送的接收端,你没有相同的信息。

我谦卑地建议,如果Git://协议是推送的唯一选择,你可以考虑改变你的主机。它的真正意义是供公众阅读;它不会对写(推)访问进行任何类型的身份验证。正如git daemon manpage所说,“协议中没有身份验证(换句话说,任何人都可以将任何东西推送到存储库中,包括删除引用)。这只适用于封闭的LAN设置,每个人都很友好。”幸运的是,在其他具有更安全选项的地方克隆您的repo非常容易。在使用ssh或https进行推送访问时,仍然可以很容易地使用git协议进行读取访问。例如,gitolite+git守护进程将轻松为推送获取ssh访问控制,并通过git协议打开读取访问。这是一种“封闭式LAN设置,每个人都很友好”。我担心的不是太多的安全问题,而是人们不小心推错了地方,破坏了工作流程。很可能我们在git协议上做出了错误的选择,但这正是我试图建立的…“友好”意味着“没有人会把事情搞砸”——你的问题意味着有人会担心。你不必有积极的恶意意图让某人做不友好的事!设置gitolite这样的东西确实没有太多开销,而且它可以让你做一些奇特的事情,比如“这些用户可以推到这些分支,但不能推到这些分支”,这听起来正是你想要的。(每个人都会看到的唯一变化是变化
git://server/path/to/repo
gitolite@server:repo
)好吧,很公平,gitolite看起来很有趣。顺便说一句,gerrit也是。我猜我得到的一个答案也回答了原来的问题,所以我要标记这个答案。我想真正的答案是有很多选择要考虑,我需要做更多的家庭作业,以找到最适合我。