本文主要介绍了提交显示用户和云效账号名不一致的原因,以及如何杜绝伪造提交。
提交显示用户和云效账号名不一致原因
基于Git本身的机制,Git 提交者和作者信息来源是git config中自定义的user.email和user.name,由于支持自定义,所以可以设置为任意邮箱和名字,因此Git提交信息可以伪装成任何人。
Codeup提交列表页面显示提交人信息的原则如下:
提交用户识别原则
Codeup会使用当前登录的云效账号已绑定的主邮箱和Git提交信息中的user.email进行精准匹配(本地推送的情况下,提交信息中的邮箱由本地git config
配置),如果内容和大小写均匹配一致,该提交将归为当前用户的贡献,特别是在代码提交量统计场景下,建议成员将user.email设置为和云效账号绑定的主邮箱完全一致(注意大小写敏感),避免贡献计算误差。
Codeup 支持推送规则检查,如开启代码属主检查,则会启动邮箱检查,当提交信息中的邮箱和服务端云效账号主邮箱不一致时,支持拒绝提交。具体参见推送规则设置。
如果提交信息中的邮箱没有匹配当前使用的云效账号的主邮箱,则会直接显示提交信息中的 user.name 作为展示,所以可能会出现企业成员之外的提交人或作者名字,这并非是企业代码库被外部人员操作了。为了规范提交信息,建议开启代码属主检查,尽可能让提交信息和云效账号匹配一致。当然,如果要导入外部代码库,代码库提交历史中很可能有非企业成员的提交(例如开源代码库),这时候不可避免地提交信息中会有外部人员的提交记录,这是完全合理的。
如何杜绝提交伪造?
如果有人窃取了他人的账密信息,并配置了他人的邮箱,想恶意伪造提交,向代码仓库提交恶意代码,此时可以使用 GPG 在本地签署提交记录(commit)或者标签(tag)。Codeup将对这些签名做验证,来确保提交记录或者标签来自受信任的来源。具体介绍,请参见GPG 签名杜绝提交伪造。