Fossil——颇有个性的代码管理系统
说起代码管理系统,自然无法避开git与svn。git是去中心化的、分布式的,svn是中心化的,二者总体上差异巨大, 细节上据说有不少的相互借鉴。由于github的存在,git得以风靡全球。颇为讽刺的是,github实际上就是中央仓库, 换句话说,分布式的git正是由于中央仓库的存在才得以流行。
这就是,嘴上喊着去中心化,手上干着中心化的事。svn的没落,大概就是不懂得搞攻心吧。
相比之下,fossil大概可以算是最接近真正的去中心化、最像分布式的样子的代码管理系统。它来自于sqlite的作者, 开发及应用时间已经有十几年了。最开始的时候,是用于sqlite及相关的源代码的管理,后来就开源并有了定期发布。
fossil很精简,精简到只有1个可执行文件,在windows下就是1个exe就包含了全部功能。它是免配置的, 下载之后随便放到哪里,然后通过cmd就可以直接跑起来。
更加神奇的是,fossil仅仅1个exe,就囊括了client+server+简易版github三样功能。你把它当做client使用, 它就是一个客户端。你把它当做server使用,它就是一个服务器。要是通过http访问,它就是一个简易版的github。 它的简易版的github功能,同样是免配置的,不需要额外安装、配置专门的数据库软件。另外, 它的web界面实际上也是客户端的gui。
fossil的个性化,除了单文件之外,它在web界面的功能取舍上也是十分有个性的。与github的丰富繁杂的功能相比, 它的web界面(接口?端?)功能完全聚焦于代码管理,不相关的、甚至不太相关的功能都没有做。
它提供了堪用的bug-track,提供了简易的bbs,提供了具有代码高亮的漂亮的diff,但是, 偏偏就没有提供源文件浏览界面的代码高亮。同样是代码高亮,diff可以做到,源文件浏览为啥不给做呢? 官方的解释似乎是出于安全考虑,因为代码高亮要用到javascript,这不太能够令人信服。
更加合理一点的解释,大概就是diff在web端属于代码管理的核心功能,浏览源文件则可以本地进行。 毕竟,仅仅用在线浏览的方式浏览源文件,是一种十分奇怪的做法,你不想编辑的话干嘛要看它呢? diff就不一样了,只看diff而不编辑源文件,这本身就是某些工作岗位的日常。
文章作者 Jack Hsu
上次更新 2023-12-20
许可协议 Copyright © Jack Hsu. All Rights Reserved.