git - .mailmap:您可以只匹配名称、不匹配电子邮件还是使用通配符电子邮件?
问题描述
第三方贡献者使用他们的工作电子邮件地址和个人电子邮件地址进行了提交。我们正在使用一个.mailmap
文件,它们被映射到他们的工作邮件。他们现在在工作邮件中收到垃圾邮件,因为垃圾邮件发送者正在.mailmap
GitHub 上收集文件。他们已要求从.mailmap
文件中删除。
旧.mailmap
文件仍会在 git 历史记录中,但至少不会再出现HEAD
了。这是我们能做的最好的事情,不会git-filter-branch
让git push --force
很多很多分叉不开心。
的通用格式.mailmap
为:
Name you want to keep <email you want to keep> Name you no longer want <email you no longer want>
这些也是有效的:
Name you want to keep <email you want to keep> <email you no longer want>
和
Name you want to keep <email you want to keep>
但这也是一种有效的格式吗?
Name you want to keep <email you want to keep> Name you no longer want
因为这样我们就可以将他们的名字映射到类似的东西<name@invalid>
,而不用在.mailmap
文件中包含他们的电子邮件。
我已经尝试过了,然后做了一个git log --use-mailmap
,我仍然得到了旧的电子邮件地址。
我也试过
Name you want to keep <email you want to keep> <>
和
Name you want to keep <email you want to keep> <*>
和
Name you want to keep <email you want to keep> <.*>
和
Name you want to keep <email you want to keep> <**>
这些都不起作用。唯一有效的情况是,当有一个与提交中的电子邮件地址完全匹配的真实电子邮件地址时,我不想在.mailmap
文件中使用真实的电子邮件地址。
解决方案
Git 的.mailmap
文件不支持通配符,并且无法将电子邮件地址映射为空,因为提交需要电子邮件地址。
您查询的语法是有效的,但是它将用户的名称从旧名称重写为新名称,而不是没有电子邮件的格式。
如果您的目标是将用户的工作地址映射到其他东西(或什么都没有)而不在文件中列出,那是不可能的,因为查找主要由提交对象本身中的电子邮件地址键入。您和用户都应该知道,如果您只是从.mailmap
文件中删除地址,这不会阻止垃圾邮件,因为垃圾邮件发送者也会从存储库中获取电子邮件地址(通过其他方式),因此他们可以找到位于原始提交。因此,除了总是使用一次性地址(如 GitHub 提供)或针对垃圾邮件发送者的积极诉讼之外,没有办法阻止至少一些地址的收集。
推荐阅读
- aws-lambda - 为什么我在本地运行笔记本时可以导入 LambdaStep,但在 Sagemaker Studio 中运行时却不能?
- linux - 当我使用 link() 系统调用时,在 UNIX 文件系统(更具体地说,文件描述符、打开文件表和 inode)中发生了什么?
- google-play - 谷歌播放付款问题
- html - 如何在页面中插入不可选择的引号(通常在开头)?
- spring-boot - 在 Webflux 中正常关闭时 LettuceReactiveSubscription 中的取消异常
- spring-webflux - 您必须阻止 webflux 才能运行。有没有不阻塞的操作方法?
- here-api - Here.com 的交通 API 是否适用于孟买市?
- vb.net - 水晶报表在客户端机器上从服务器打印文档时得到-传递给系统调用的数据区域太小错误
- go - 如何递归遍历文件和目录
- excel - 如果单元格范围已满,则复制