fossil是一个类似git的版本控制工具,是由SQLite作者写的,代码的水平应该比较高,fossil还提供了web展示的功能,支持http接口,综合性比较强,对c语言程序员来说也可以初步了解一些前端和后端的知识,比较有学习价值。
1.源码下载
学习代码最好的方式当然是自己编译并调试,我是基于msys2开发环境。 首先到官网下载发布的版本,选择Source Tarball下载http://www.fossil-scm.org/home/uv/download.html
我目前下的版本是Version 2.10 (2019-10-04) http://www.fossil-scm.org/home/info/9d9ef82234f63758
2.源码编译
下载后解压,并进入源码目录,执行./configure,编译时总是有点不顺利,刚开始遇到的错误如下
看configure文件可以知道接下来会执行./autosetup/autosetup-find-tclsh脚本,如果电脑上安装了tcl则会调用tclsh autosetup执行环境检查,否则通过jimsh0 autosetup执行环境检查,前一种方式会失败,后一种方式没问题,而我的电脑刚好装了tcl8.6,所以会选择前一种,在autosetup-find-tclsh中把查找tcl的地方注释掉,这样就会选后一种方式
这样就没问题了
如果没有安装openssl会出现这样的错误
这需要安装openssl-devel,执行 pacman -S openssl-devel即可
./configure没问题后接下来执行make,还是出错
提示没有安装ssl的错误,我的确没有安装,因为我在./configure的时候并没有碰到缺少openssl的错误
我的电脑装了pkg-config,这里没有报错,但是这里的ssl检查是假的,还得安装一下openssl-devel,安装openssl-devel后再执行make就没出错了,可以看到在源码目录下生成了所需要的fossil.exe
编译完之后还要做个实验来证明自己能够修改源码了,打开main.c文件,添加如下代码
重新make编译一下,并运行./fossil.exe
3.基本使用
为了方便使用,对fossil.exe所在目录设置环境变量
export PATH=$PATH:/e/source/Fossil-9d9ef822
接下来fossil就可以作为一条命令来用了
具体使用参见官方文档,地址如下,这里只做一些简单的示例
Fossil Quick Start
先新建一个fossil_test的文件夹,在该文件夹下执行 fossil clone http://www.fossil-scm.org/ myclone.fossil
速度比较慢,要稍微等一下
克隆完后会生成一个myclone.fossil文件,接着执行fossil open来解压fossil open myclone.fossil
随便打开个文件,做一个修改,比我在add.c文件里加入一行
printf("fossil test!!!!!!!!");
然后执行fossil add .
再执行 fossil diff
可以看到这里列出了我的修改,然后再执行fossil commit
来提交修改,这时会弹出一个文本然你写提交日志
写完之后保存退出就可以了,接着执行下列命令打开fossil的web页面|fossil ui myclone.fossil
4.相关资料
基本所有关于fossil的资料(包括fossil的软件设计文档)都在
http://www.fossil-scm.org/index.html/doc/trunk/www/permutedindex.html
这里面还有一本介绍使用fossil的电子书
http://www.fossil-scm.org/schimpf-book/home
还有一位热心的朋友翻译这本书,放在了fossil的托管网站上
https://my.oschina.net/tours/blog/162062
现在就练习一下通过fossil把这本书下下来,执行
cd /e/source/fossilbook
fossil clone https://chiselapp.com/user/lomatus/repository/fossilbook-cn/home fossilbook
fossil open /e/source/fossilbook/fossilbook
解压后目录里的fossilbook.pdf就是这本书的中文翻译版