开始使用 Fossil,Git 的替代方案

Fossil 是一个一体化的版本控制系统、缺陷跟踪器、wiki、论坛和文档解决方案。
82 位读者喜欢这篇文章。
Dinosaurs on land at sunset

Opensource.com

正如任何程序员都知道的那样,跟踪代码更改至关重要,原因有很多。有时你只是想了解项目是如何开始和演变的,这出于好奇或教育目的。有时,你想让其他程序员为你的项目做出贡献,你需要一种可靠的方法来合并不同的部分。更关键的是,有时你为了解决一个问题而做的调整会破坏其他正常工作的东西。

Fossil 源代码管理系统是一个一体化的版本控制系统、缺陷跟踪器、wiki、论坛和文档解决方案,由著名的 SQLite 数据库的创建者开发。

安装 Fossil

Fossil 是一个独立的 C 程序,因此你可能只需从其网站 下载 Fossil 并将其放置在系统 PATH 中的任何位置。例如,假设 /usr/local/bin 在你的路径中,默认情况下通常是这样

$ wget https://fossil-scm.org/home/uv/fossil-linux-x64-X.Y.tar.gz
$ sudo tar xvf fossil-linux-x64-X.Y.tar.gz \
--directory /usr/local/bin

你也可能通过你的软件包管理器在你的软件仓库中找到 Fossil,或者你可以从源代码编译它。

创建一个 Fossil 仓库

如果你有一个想要用 Fossil 跟踪的编码项目,第一步是创建一个 Fossil 仓库

$ fossil init myproject.fossil
project-id: 010836ac6112fefb0b015702152d447c8c1d8604
server-id:  54d837e9dc938ba1caa56d31b99c35a4c9627f44
admin-user: klaatu (initial password is "14b605")

创建 Fossil 仓库会返回三个项目:一个唯一的项目 ID、一个唯一的服务器 ID 以及一个管理员 ID 和密码。项目和服务器 ID 是版本号。管理员凭据确立你对这个仓库的所有权,并且如果你决定运行 Fossil 作为服务器供其他用户访问,则可以使用。

在 Fossil 仓库中工作

要开始在 Fossil 仓库中工作,你必须为其数据创建一个工作位置。你可以将此过程视为在 Python 中创建虚拟环境或解压缩稍后打算重新压缩的 ZIP 文件。

创建一个工作目录并进入它

$ mkdir myprojectdir
$ cd myprojectdir

将你的 Fossil 仓库打开到你创建的目录中

$ fossil open ../myproject
project-name: <unnamed>
repository:   /home/klaatu/myprojectdir/../myproject
local-root:   /home/klaatu/myprojectdir/
config-db:    /home/klaatu/.fossil
project-code: 010836ac6112fefb0b015702152d447c8c1d8604
checkout:     9e6cd96dd675544c58a246520ad58cdd460d1559 2020-11-09 04:09:35 UTC
tags:         trunk
comment:      initial empty check-in (user: klaatu)
check-ins:    1

你可能会注意到 Fossil 在你的主目录中创建了一个名为 .fossil 的隐藏文件,以跟踪你的全局 Fossil 首选项。这并非特定于你的项目;它只是你第一次使用 Fossil 的产物。

添加文件

要将文件添加到你的仓库,请使用 addcommit 子命令。例如,创建一个简单的 README 文件并将其添加到仓库

$ echo "My first Fossil project" > README
$ fossil add README
ADDED  README
$ fossil commit -m 'My first commit'
New_Version: 2472a43acd11c93d08314e852dedfc6a476403695e44f47061607e4e90ad01aa

使用分支

默认情况下,一个 Fossile 仓库以一个名为 trunk 的主分支开始。当你想要处理代码而不影响你的主代码库时,你可以从 trunk 分支出来。创建一个新分支需要 branch 子命令,以及一个新的分支名称和你想用作新分支基础的分支。在这个例子中,唯一的分支是 trunk,所以尝试创建一个名为 dev 的新分支

$ fossil branch --help
Usage: fossil branch new BRANCH-NAME BASIS ?OPTIONS?
$ fossil branch new dev trunk
New branch: cb90e9c6f23a9c98e0c3656d7e18d320fa52e666700b12b5ebbc4674a0703695

你已经创建了一个新分支,但你当前的分支仍然是 trunk

$ fossil branch current
trunk

要使你的新 dev 分支激活,请使用 checkout 命令

$ fossil checkout dev
dev

合并更改

假设你向你的 dev 分支添加了一个令人兴奋的新文件,并且在测试后,你确信它已准备好在 trunk 中占据一席之地。这被称为合并

首先,将你的分支改回到你的目标分支(在这个例子中,是 trunk):

$ fossil checkout trunk
trunk
$ ls
README

你的新文件(或者你对现有文件所做的任何更改)还不存在,但执行合并会处理它

$ fossil merge dev
 "fossil undo" is available to undo changes to the working checkout.
$ ls
myfile.lua  README

查看 Fossil 时间线

要查看你的仓库的历史,请使用 timeline 选项。这会显示你的仓库中所有活动的详细列表,包括表示更改的哈希值、你在提交代码时提供的提交消息以及谁进行了更改

$ fossil timeline
=== 2020-11-09 ===
06:24:16 [5ef06e668b] added exciting new file (user: klaatu tags: dev)
06:11:19 [cb90e9c6f2] Create new branch named "dev" (user: klaatu tags: dev)
06:08:09 [a2bb73e4a3] *CURRENT* some additions were made (user: klaatu tags: trunk)
06:00:47 [2472a43acd] This is my first commit. (user: klaatu tags: trunk)
04:09:35 [9e6cd96dd6] initial empty check-in (user: klaatu tags: trunk)
+++ no more data (5) +++

公开你的 Fossil 仓库

因为 Fossil 具有内置的 Web 界面,所以 Fossil 不需要像 GitLab 或 Gitea 这样的托管服务。Fossil 是它自己的托管服务,只要你有一个服务器可以放置它。但是,在公开你的 Fossil 项目之前,你必须通过 Web 用户界面 (UI) 配置一些属性。

使用 ui 子命令启动一个本地实例

$ pwd
/home/klaatu/myprojectdir/
$ fossil ui

具体来说,查看 用户设置 以进行安全设置,以及 配置 以进行项目属性设置(包括正确的标题)。Web 界面不仅仅是一个方便功能。它旨在实际使用,并且确实被用作 Fossil 项目的宿主。有几个令人惊讶的高级选项,从用户管理(或自我管理,如果你愿意)到与其他同一服务器上的 Fossil 仓库的单点登录 (SSO)。

一旦你对你的更改感到满意,关闭 Web 界面并按 Ctrl+C 以停止 UI 引擎运行。像你进行任何其他更新一样提交你的 Web 更改

$ fossil commit -m 'web ui updates'
New_Version: 11fe7f2855a3246c303df00ec725d0fca526fa0b83fa67c95db92283e8273c60

现在你准备好设置你的 Fossil 服务器了。

  1. 将你的 Fossil 仓库(在这个例子中,是 myproject.fossil)复制到你的服务器。你只需要一个文件。
  2. 如果你的服务器上尚未安装 Fossil,请在你的服务器上安装 Fossil。在你的服务器上安装 Fossil 的过程与在你的本地计算机上安装的过程相同。
  3. 在你的 cgi-bin 目录(或等效目录,具体取决于你正在运行的 HTTP 守护进程)中,创建一个名为 repo_myproject.cgi 的文件
#!/usr/local/bin/fossil
repository: /home/klaatu/public_html/myproject.fossil

使该脚本可执行

$ chmod +x repo_myproject.cgi

这就是全部。你的项目现在已经在互联网上上线了。

你可以通过导航到你的 CGI 脚本(例如 https://example.com/cgi-bin/repo_myproject.cgi)来访问 Web UI。

或者你可以通过相同的 URL 从终端与你的仓库进行交互

$ fossil clone https://klaatu@example.com/cgi-bin/repo_myproject.cgi

使用本地克隆需要你使用 push 子命令将本地更改发送回你的远程仓库,并使用 pull 子命令将远程更改获取到你的本地副本中

$ fossil push https://klaatu@example.com/cgi-bin/repo_myproject.cgi

使用 Fossil 进行独立托管

Fossil 将大量的能力交到你的手中(以及你的协作者的手中),并使你独立于托管服务。本文仅暗示了基本知识。Fossil 还有更多可以帮助你和你的团队完成代码项目的内容。试一试 Fossil。它不仅会改变你对版本控制的看法,还会帮助你完全停止考虑版本控制。

接下来阅读什么
标签
User profile image.
Klaatu 是 Hacker Public Radio 和 GNU World Order 的 Unix 极客和播客。

评论已关闭。

Creative Commons License本作品采用知识共享署名 - 相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.