git - 如何验证git中每个提交的作者

标签 git signing git-commit git-tag

我正在研究从 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/

相关文章:

git - 具有两个不同父提交的两个提交之间的差异

node.js - 从 Node.js 应用程序管理 git 存储库

c# - 如何在 C# 中验证数字签名的 XML 文档?

git - 如何拆分包含重构的 Git 提交?

git - 为什么在TFS中看不到分支树?

git - 如何查看 Git 上的特定提交

git - 是否有将 git 提交发布到 Twitter 的脚本?

linux - 无法从 Jenkins 访问 git repo

c# - ITextSharp SetVisibleSignature 未按预期工作

windows - 使用控制台版本的 signtool.exe 使用 PKCS #7 SPC 文件签署可执行文件