2

我有一种情况,我必须限制一些用户在远程仓库上推送到 master 分支。我发现任何用户都可以更改他机器上的“git config user.name”以将其推送到远程仓库的主分支。如何验证用户登录帐户(ssh/http)和 git config user.name 是否相同?

4

3 回答 3

2

你有两个完全不同的问题:

1. 如何限制允许推送给定分支的用户?

首先,您需要一种方法来验证您的用户。最简单的方法是使用个性化的 ssh 密钥。然后你需要一层授权来确定允许谁推送哪个分支。这可以通过像gitolite这样的软件来完成。请阅读此链接以获取更多信息。

2. 我如何确保人们不会通过 使用虚假身份git config user.name

首先,您不能阻止人们在本地存储库中提交时使用任意名称。您只能在他们尝试将这些提交推送到您的中央存储库时进行检查。

一次推送能够传输多个提交。如果你想确保每个提交都包含正确的用户名和邮件地址,你首先必须确保你知道谁在推送。然后您需要检查所有推送的提交是否有正确的用户名和邮件地址。

你可以再次使用gitolite。gerrit能够进行这种检查

于 2013-05-21T10:47:27.550 回答
0

Git 本身无法强制执行这种限制。

对于您的情况,您需要一些身份验证层,例如gitolite

于 2013-05-20T08:42:02.677 回答
0

如果您正在考虑这种限制,也许是时候改变您的项目组织了。

您可以要求您的开发人员分叉项目并在他们自己的存储库上工作。

您将完全控制项目中合并的内容(在所有分支上)。每个开发人员都抓住一个分支并对其进行处理。工作完成后,您(来自主仓库)将合并其修改。

于 2013-05-20T09:09:29.103 回答