我正在研究从 subversion 到 git 的迁移。对于初学者来说,将使用中央存储库方案,就像 svn 一样。
问题是我想确保每个提交都是由真人创建的。
在 Subversion 中,假设您不缓存您的 svn 密码,您可以确定提交作者是真正的作者。
根据我在网上无数次搜索后所读到的内容,我应该在每次推送中央存储库时创建一个签名标签。为了签署标签,我应该检查之前的每个提交,以确保在我离开计算机时没有人更改任何内容(例如引入恶意代码并稍后将其删除,使其成为可能)在整体差异中不可见,但仍在连续构建/测试服务器中执行)。
这意味着我必须仔细检查提交:首先当我创建每个提交时,然后当我决定使用签名标签推送时再次检查。但这既耗时又多余。如果签名标签是可行的方法,那么我想我应该为每个提交创建一个签名标签。这将用标签填充整个存储库。我认为这听起来不太正确。
我能想到的最干净的解决方案是签署每个提交(自 git 1.7.9 开始支持)。但由于某种原因我不明白,这样做是 totally stupid 。由 git 支持,但仍然被认为是愚蠢的。
我该怎么办?浪费时间仔细检查所有提交并进行每次推送标签签名;或对每个提交进行标签签名;或签署每一个提交?有我不知道的替代方案吗?
提前致谢。
最佳答案
我认为你对整个想法确实太过分了,但如果你真的坚持,这里有一个解决方案。
安装Gerrit Code Review作为你的中央 git 服务器。将其配置为禁止您不信任的人(可能是您的整个团队,也可能包括您自己)直接推送。
现在,每个人都将被迫首先提交代码审查。只有信任的人才能批准更改(同样,这可能只有您)。这些批准将由 Gerrit 服务器记录,只有 Gerrit 才能向前移动分支。
从现在开始,您唯一信任的 git 存储库是您的 Gerrit 服务器,或者任何其他对您关心的所有分支具有完全相同的 sha 的 git 存储库。
Q.E.D.
关于git - 如何验证git中每个提交的作者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14277428/