我们重写了历史

TL;DR 赶时间的同学可以直接滑到底部看重点。

历史是不能重演的,然而,我们重写了历史。

在 FreeSWITCH 代码仓库里,有两个有问题的提交,它们都有两位作者。不知道当时合并代码时出了什么差错,反正,在最新的 Git 版本里,这两个检查会报错,而且,不管是 Github 还是 Gitlab,都不允许这样的提交。

这也是为什么 FreeSWITCH 一直使用自己的 Git 仓库,直到 2023 年才迁移到 Github 上。据说当时是联系了 Github 临时关闭了这个检查。

这个检查只有首次向仓库提交代码时才会进行,因而,直接在 Github 上 Fork FreeSWITCH 代码是没有问题的。但直接 Fork FreeSWITCH 代码,无法将公开的仓库转为私有仓库,另外,转推到其他托管平台如 Gitlab 等也会遇到同样的问题。

这两个有问题的提交是:

$ freeswitch git:(master) ✗ git fsck
Checking object directories: 100% (256/256), done.
error in commit 487128950df6ee433c131b5feaafe81ee86629f4: multipleAuthors: invalid format - multiple 'author' lines
error in commit 8574988c3a378b4d5861ecaeb0e958657635703b: multipleAuthors: invalid format - multiple 'author' lines
Checking objects: 100% (422458/422458), done.

有很多人遇到这个问题,如:

官方的解决方案是——直接在 Github 上点 Fork 按钮就 OK 了。其实官方也不是不想解决这一问题,但是,如果解决就涉及到重写 Git 历史,而他们又不想重写历史,所以,这个问题就一直存在。

在做 RTS 时,我们决定重写历史。

当然,重写历史不是那么简单。通过 rebase,我们很容易就修复了那两个作者问题,在 rebase 的过程中,在对应的提交处停下,执行如下命令修改成一个作者就 OK 了。

git commit --amend --author "Travis Cross <tc@traviscross.com>"

但是,rebase 过程中,有一些 merge 的提交也会被“捊直”,因此,还是会遇到一些冲突。我差不多花了一晚上的时间才解决完。

现在,历史已经被重写了,时间线非常清爽。

而重写之前的历史简直不忍直视:


好了,言归正传:我们重写历史是为了做 RTS

RTS 是一个 FreeSWITCH 的衍生品,我们会以 RTS 为蓝本,做一些新的开发。

RTS 会尽量跟 FreeSWITCH 保持兼容,只是会更好。

RTS 是开源的,这意味着,你也可以用

更多信息参见:

新起点,新征程。2024,未来可期。我们都在 Github 上见。