Git 日志历史记录

2024-05-26

对于版本控制来说,重要的一件事是知道谁做了什么更改。如果某些内容发生了变化,而我不知道为什么要进行更改,我会查看历史并询问进行更改的人。当我探索 git 时,让我对这个功能有点紧张的一件事是它似乎很容易伪造。是什么阻止我将同事姓名/电子邮件放入 user.name 和 user.email 的 git 全局配置中?当使用像 gitosis/gitolite (它定义了用户)或 github (我假设使用像 gitosis/gitolite 这样的东西)之类的东西时,有什么办法可以看到谁真正做出了提交?


Gitolite原木(在.gitolite/logs/gitolite-*) 每次推送的 Gitolite 用户。确定引入特定提交的推送还需要做一些工作,但它应该是直接的(一种方法:在每次推送的尖端放置轻量级标签,然后使用git name-rev查找提交后的第一个标签)。

大多数 Gitolite 用户可能只有一个与其关联的 SSH 密钥(keydir/user.pub),但单个用户可以拥有多个 SSH 密钥(keydir/user@*.pub).

因此,对于基于 SSH 的 Gitolite,您可以将每个提交映射到一个(或多个)SSH 密钥。

您是否信任 SSH 密钥来准确识别特定人员是另一个问题(即您是否信任用户会保证其私有 SSH 密钥的安全?)。

Gitolite 还可以通过“智能 HTTP”管理 Git 访问。在这种情况下,Web 服务器会在 REMOTE_USER 环境变量中提供 Gitolite 用户名(即,而不是使用.ssh/authorized_keys文件以根据 SSH 密钥识别用户)。识别和身份验证完全取决于 Web 服务器本身(通常只是用户名和密码,但每用户 SSL 证书可用于执行类似于基于 SSH 的访问的操作)。

因此,对于基于 HTTP 的 Gitolite,您可以将每次提交映射到由 Web 服务器完成的身份验证。


GitHub上有一些类似的信息,可以通过Events http://developer.github.com/v3/events/的一部分GitHub API http://developer.github.com/(以前它似乎只作为您观看的存储库的“新闻源”条目的一部分提供)。每个推送事件 http://developer.github.com/v3/events/types/#pushevent标识执行推送的 GitHub 用户、更新的引用(分支)的名称、新引用“head”(更新分支的新提示)的名称(SHA1 哈希)以及提交列表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git 日志历史记录 的相关文章

随机推荐