我有一种情况,我必须限制一些用户推送到远程仓库的主分支。我发现任何用户都可以在他的机器上更改“git config user.name”,将其推送到远程仓库的主分支。如何验证用户登录帐户(ssh / http)和git config user.name是否相同?
答案 0 :(得分:2)
你有两个完全不同的问题:
首先,您需要一种方法来验证您的用户。最简单的方法是使用个性化的ssh密钥。然后,您需要一层授权来确定允许谁推送哪个分支。这可以通过像gitolite这样的软件来完成。请阅读此链接以获取更多信息。
git config user.name
使用假身份?首先,您无法阻止人们在本地存储库中提交时使用任意名称。您只能在尝试将这些提交推送到中央存储库时进行检查。
单次推送能够传输多个提交。如果要确保每个提交包含正确的用户名和邮件地址,首先必须确保知道当前正在推送的人。然后,您需要检查所有推送的提交以获取正确的用户名和邮件地址。
您可以再次使用gitolite。 gerrit也可以this kind of checks。
答案 1 :(得分:0)
Git本身无法强制执行这种限制。
您需要一些像gitolite这样的身份验证层。
答案 2 :(得分:0)
如果你正在考虑这种限制,也许是时候改变你的项目组织了。
您可以要求开发人员分叉项目并在自己的存储库中工作。
您将完全控制项目中合并的内容(在所有分支上)。每个开发人员都会抓住一个分支并开展工作。工作完成后,您(来自主仓库)将合并其修改。
答案 3 :(得分:0)
请参阅我提到的答案,作为类似问题的答案https://stackoverflow.com/a/40759794/950944