这篇文章主要简单的介绍下fossil的简单用法
什么是fossil
-
fossil是另一种分布式版本控制系统。和Git一样,它维护了一份变更记录,不管开发者是否能够访问主仓库。 -
和
Git不同的是,fossil支持自动同步(auto-sync)模式,在远程仓库可用的时候能够自动推送提交。如果在提交的时候无法访问远程仓库,fossil会保存变更,直到下次能够访问。 -
fossil仓库是以单个SQLite数据库的形式实现的,而不像Git那样采用的是一组目录。fossil应用本身包含了如Web界面、故障报告表系统以及wiki,而Git是采用附加程序的形式来实现这些服务的。
简单用法
安装
sudo apt-get install fossil

新建仓库数据库文件
这里的仓库数据库就类似于我们git init一个空的需要跟踪的仓库的时候生成的.git文件或者是svn的.svn文件。新建一个仓库数据库文件的命令:
fossil new xxx.fossil
fossil init xxx.fossil
fossil new 和 fossil init 命令功能相同,使用的时候任选其一即可,两者都会使用指定名称创建一个空的仓库数据库。 .fossil 后缀并非强制性的,不过这算是一个惯例。
以我自己的电脑为例,在~主目录下创建了一个fossil_test.fossil仓库数据库文件

打开要被跟踪的工作目录
数据库文件有了,这时候就需要有一个被跟踪的工作目录,比如我新建一个fossil_test文件夹,准备用来做测试。
mkdir fossil_test

现在理清楚一下,我们的数据库跟工作目录的路径关系

~
├── fossil_test.fossil
├── fossil_test
├── xxx
ok,是兄弟关系,这时候进入工作目录,并在工作目录下打开数据库文件,这个过程结束后,数据库文件fossil_test.fossil就会开始跟踪fossil_test这个工作目录了。
cd fossil_test
fossil open ../fossil_test.fossil

跟踪 提交 UI界面
首先我们在fossil_test中创建一个空文件夹test(后面做测试会用到),以及一个文本文件example.txt
mkdir test
echo 'example' > example.txt

然后跟踪这个example.txt并且提交,这里的命令就类似于我们的git add跟git commit了。

还可以在图中看到example.txt显示已经被跟踪
这个时候fossil status一下,也类似于git status的作用

然后最最神奇的地方是fossil可以提供一个Web界面(包括配置、故障报告表管理、wiki、图像化提交历史等)。
输入命令
fossil ui
fossil ui 命令会启动一个http服务器并将本地浏览器连接到该服务器上,默认监听端口为tcp 8080。这个过程并不需要联网,完全就是本地上的一个操作。

如果想要修改监听的端口,可以采用如下的命令(改为了80)
fossil ui -P 80
其他
fossil status
这个命令跟git status稍微不一样的地方在于,如果我们没有去指定跟踪某个文件,这时候git status会探测出哪些文件没有被跟踪,比如这样


而对于fossil,现在我们新建立了一个还未跟踪的文件,用fossil status命令并没有像上面那样显示出来

fossil add 之后就有新文件的状态了

fossil add *
一般我们在工作目录下的文件(除了二进制文件等,后续再提)都是需要被跟踪的,git有git add --all,而
fossil可以fossil add *
比如我现在新建了两个文件test1.txt跟test2.txt

然后再fossil add *

第二次提交

注意:fossil跟git一样,也是不跟踪空的文件夹,但是如果当前目录下的文件夹非空,fossil add *就会跟踪非空的文件夹




.fossil数据库文件
比如我们只拿到一个.git文件,没有其他文件,那么我们可以通过git log得到某次commit id,通过git reset --hard commit_id就可以恢复原来的文件内容。跟git一样,fossil也是一种分布式版本控制系统。所以如果拿到我们的数据库文件也可以恢复整个文件的内容。
注意:.svn文件不行,因为svn是集中式版本控制系统,需要能跟svn服务器建立起通信才能恢复。
## 后续
这次先简单的介绍下fossil的简单用法,后续在探究其他命令,比如浏览器的配置,将仓库公开,在嵌入式设备上搭建fossil环境等。
参考
- 《Linux+Shell脚本攻略-中文-目录-文字版-第3版 》
- 链接