统一邮箱之后,舒服多了
前段时间,我把自己:GitHub、Gitea、以及给其他开源项目提交 Patch、邮件列表等用的邮箱,基本都统一成了:
mxd#mxdyeah.com之前很多年,我一直习惯用:
mxd+github#mail.mxdyeah.top
mxd+gitea#mail.mxdyeah.top
mxd+patchwork#mail.mxdyeah.top这种形式。
主要是方便分类。
哪个平台发来的邮件,一眼就能看出来;哪个网站泄露邮箱了,也很好定位。以前折腾邮件服务器的时候,还挺喜欢这种玩法。
后来发现,这套东西放在 Git 生态里,其实不太舒服。
最开始只是偶尔发现:
“诶,这个 Commit 怎么没显示在 Contributions 里?”
后来又发现:
“为什么不同平台搜不到我以前的提交?”
再后来甚至变成:
“这几个作者怎么都是我自己?”
因为 Git 其实根本不认账号。
它只认:
用户名 + 邮箱也就是说:
mxd <mxd+github@xxx>和:
mxd <mxd+gitea@xxx>在 Git 看来,就是两个人。特别是跨平台协作
于是时间长了之后,各种历史开始裂开。
有时候看 git shortlog,甚至能看到自己出现好几个名字。给别人项目提 PR 的时候也是,有些平台能关联,有些关联不上,全看邮箱有没有对上。哎~
尤其是同时混:
- Github
- 自建 Gitea
- 邮件列表
- Patch workflow
这些东西的时候,会特别明显。
还有个坑,我之前真没想到。
我后来想着:
“反正邮箱统一了,那旧的 tag 邮箱删掉算了。”
结果删完之后,Github 上一部分 Commit 直接“不属于我了”。
当时我人都懵了。
后来才知道,Github 的 Commit 关联,本质上是:
“这个邮箱现在是不是你的已验证邮箱”。
如果你把历史 Commit 用过的邮箱删了,那些 Commit 当然还在,但平台不会再把它算到你头上。
所以现在我的做法基本变成:
- 旧邮箱保留绑定
- 不继续使用
- 新提交统一正式邮箱
这样历史不会炸。
其实现在回头看,问题倒也不是 +tag 不好。
我现在订阅邮件、注册网站,还是照样:
mxd+xxx@...真正的问题是:
Git 这套东西,本质上是“长期身份系统”。
尤其开源社区很多地方,其实只认邮箱。
有时候 Maintainer 记住的不是你的用户名,而是:
From: xxx@xxx包括很多邮件列表、Patch Archive、CI Attribution,本质上全在围着邮箱转。
所以 Commit 邮箱如果一直变化,时间长了体验确实会越来越怪。
现在统一之后,最大的感受其实不是“规范”了。
而是终于没那么乱了。
以前像:
- 一个平台一个身份
- 一个邮箱一套历史
- Contribution 对不上
- 搜索不到以前 Commit
- Co-author 到处乱飞
现在基本都没了。
包括以后如果别人:
git log
git shortlog至少能稳定看到是同一个人。
就像 Linus Torvalds 的 Linux kernel commit 长期使用的是:
[email protected]例如 kernel commit 里能直接看到:
Linus Torvalds <[email protected]>不过有一点我现在是真觉得挺重要:
如果你已经有历史 Commit 了,不要随便删旧邮箱。
哪怕不用了,也最好继续挂在账号上。
不然某天你打开 Github,看见自己几年的 Contribution 少了一大片,真的挺难受的。
AD: