Git 是专为 Linux 内核源代码管理而开发的分布式版本控制系统,GitHub 上托管 Git 仓库的用户数量超过 1 亿。 另一方面,在轻量级数据库SQLite的开发中,使用的不是Git而是Fossil的版本管理系统,SQLite开发团队在官网上解释了“不使用Git”的原因。
Why SQLite Does Not Use Git
https://sqlite.org/whynotgit.html
您可以在下面的网站了解 Fossil 是一个什么样的版本控制系统。
Fossil: Home
https://www.fossil-scm.org/home/doc/trunk/www/index.wiki
1:Git 没有提供适当的状态识别
如果您想查看对SQLite 进行了哪些更改,Fossil可以在Timeline查看所有分支更改的概述,并且可以根据需要打开任意数量的详细信息。外出时 您也可以在通过智能手机进行检查。
另一方面,GitHub和GitLab没有同等的功能。 最接近的功能是Network graph,但它的缺点是渲染速度慢,缺乏细节。 虽然Commits中提供了更详细的信息,但查看所有最近的更改可能很乏味,因为您一次只能看到一个分支。
一些 Git 用户已经安装了第三方图形查看器来查看最近的更改,但由于它是第三方产品,因此需要单独安装和管理,并且需要同步本地存储库,因此您无法在智能手机上轻松查看项目状态。
2:Git 使得很难找到继任者(successors )的check-in
如果您使用的是 Git,则很容易回到过去查看特定提交之前发生的事情,但相反要查看您的代码如何从特定提交中更改就很棘手了。 Fossil 能够查看源自特定主要版本的所有check-in,从而轻松检查 Web 上分支的状态。
此外,Fossil 的签到信息页面有一个名为“上下文(Context)”的项目,可以按时间顺序显示前后的check-in信息,方便用户识别情况。
3:Git 太复杂了
使用Git 进行开发时,需要注意以下所有事项。
而 Fossil 则只需要在工作时考虑工作目录和check-in,让开发者的脑力资源更多地用于软件开发工作。
4:Git 不跟踪过去的分支名称
Git保留提交历史记录的完整有向非循环图表(DAG),但分支标记是本地信息,在分支关闭后将不再同步。因此,过去的分支审核可能会很麻烦。
例如,假设客户问过去“
prefer-coroutine-sort-subquery”分支发生了什么,您通过查看版本控制系统的历史记录来回答。
在 Git 里,您可以看到最后一次提交是在 2017 年 9 月 30 日,但它没有显示之后发生了什么,这对理解发生了什么几乎没有帮助。
在 Fossil 中,在 2017 年 9 月 30 日提交后,很明显它已经合并到 “trunk” 分支中,这是 Git 中的主要(main)分支。
虽然Git可以使用第三方工具显示此类信息,但必须使用第三方工具来获取必要的信息这一事实对于核心系统来说并不是很好。
5:Git管理起来很麻烦
Git 是一个复杂的软件,在将Git部署到工作站或升级到新版本时需要安装程序。另外,由于Git服务器的启动并不简单,所以很多开发者利用GitHub和GitLab等第三方服务,而为其项目添加额外的依赖项。
另一方面,Fossil 运行在单个独立的二进制文件上,因此安装只需通过$ PATH 即可。 一个二进制文件包含所有 核心 Git 以及 GitHub 和/或 GitLab 的功能。您可以使用 wiki、bug 跟踪、论坛等。 您可以在几分钟内启动并运行 Fossil 社区服务器,它可以在比 GitLab 等服务器更低的规格环境中运行。
通过减少管理工作,开发人员可以将更多时间用于开发软件。
6:Git 的用户体验很差
Git 具有如此多的功能,它可以处理各种各样的情况,但只有少数开发人员能够使用它们。 很多开发者觉得很难用,甚至出现了“Git的使用方法只是背几个命令来打。如果出现错误的话,把工作内容保存在别的地方,重置项目”这样夸张的讽刺漫画。
开发软件很困难,需要大量的注意力。 一个好的版本系统应该为开发人员提供支持,而不是挫败感。 Git 自出现以来已经得到了改进,但还有很长的路要走。
Fossil 和 Git 之间的详细比较可以在以下页面上找到。
https://fossil-scm.org/home/doc/trunk/www/fossil-v-git.wiki