众所周知,有很多原因对保持代码更改至关重要。有时候,出于好奇或接受教育的需要,您只想了解项目的开始和发展历史。在其他时候,您希望使其他编码人员能够为您的项目做出贡献,并且需要一种可靠的方式来合并不同的部分。更重要的是,有时您为解决一个问题而进行的调整会破坏其他可行的方法。
Fossil源代码管理系统是由著名SQLite数据库的创建者提供的多合一版本控制系统,错误跟踪器,Wiki,论坛和文档解决方案。
Fossil是一个独立的C程序,因此您可以只从其网站下载Fossil并将其放置在系统PATH中的任何位置。例如,假设/ usr / local / bin在您的路径中,这通常是默认情况下的路径:
您还可以通过软件包管理器在软件存储库中找到Fossil,或者可以从源代码进行编译。
如果您有要使用Fossil跟踪的编码项目,则第一步是创建Fossil存储库:
创建Fossil存储库将返回三个项目:唯一的项目ID,唯一的服务器ID以及管理员ID和密码。项目和服务器ID是版本号。管理员凭据可建立您对该存储库的所有权,如果您决定将Fossil用作服务器供其他用户访问,则可以使用该管理员凭据。
要开始在Fossil存储库中工作,必须为其数据创建一个工作位置。您可能会认为此过程是用Python创建虚拟环境或解压缩打算稍后再次备份的ZIP文件。
$化石开放../myproject项目名称:存储库:/ home / klaatu / myprojectdir / .. / myproject本地根目录:/ home / klaatu / myprojectdir / config-db:/ home / klaatu /.fossil项目-code:010836ac6112fefb0b015702152d447c8c1d8604签出:9e6cd96dd675544c58a246520ad58cdd460d1559 2020- 11-09 04:09:35 UTC标签:Trunk注释:初始空签入(用户ln)
您可能会注意到Fossil在您的主目录中创建了一个名为.fossil的隐藏文件来跟踪您的全局Fossil首选项。这不是特定于您的项目的;这只是您第一次使用Fossil的产物。
要将文件添加到存储库,请使用add和commit子命令。例如,创建一个简单的README文件并将其添加到存储库中:
$ echo“我的第一个化石项目”>自述文件$化石添加自述文件$自述$化石提交-m'我的第一次提交'New_Version:2472a43acd11c93d08314e852dedfc6a476403695e44f47061607e4e90ad01aa
默认情况下,Fossile存储库以一个名为“ trunk”的主分支开始。您可以在不影响主代码库的情况下分支处理主代码。创建一个新的分支需要branch子命令,以及一个新的分支名称和您要用作新分支的基础的分支。在此示例中,唯一的分支是主干,因此请尝试创建一个名为dev的新分支:
$化石分支--help用法:化石分支new分支名称基础?选项? $化石分支新开发人员主干新分支:cb90e9c6f23a9c98e0c3656d7e18d320fa52e666700b12b5ebbc4674a0703695
假设您将一个激动人心的新文件添加到您的dev分支,并对其进行了测试,您满意它已准备好在主干中取代它。这称为合并。
您的新文件(或对现有文件所做的任何更改)在那里尚不存在,但这就是执行合并所要注意的事项:
$ fossil merge dev $“ fossil undo”可用于撤消对工作结帐的更改。 $ ls myfile.lua自述文件
要查看存储库的历史记录,请使用时间轴选项。这显示了存储库中所有活动的详细列表,包括代表更改的哈希,在提交代码时提供的提交消息以及进行更改的人:
$化石时间轴=== 2020- 11-09 === 06:24:16 [5ef06e668b]添加了令人兴奋的新文件(用户:klaatu标签:dev)06:11:19 [cb90e9c6f2]创建名为“ dev”的新分支用户:klaatu标签:dev)06:08:09 [a2bb73e4a3] *当前*进行了一些补充(用户:klaatu标签:trunk)06:00:47 [2472a43acd]这是我的第一次提交。 (用户:klaatu标签:trunk)04:09:35 [9e6cd96dd6]初始空值机签入(用户:klaatu标签:trunk)+++没有更多数据(5)+++
由于Fossil具有内置的Web界面,因此Fossil不需要像GitLab或Gitea这样的托管服务。 Fossil是它自己的托管服务,只要您要安装服务器即可。但是,在将Fossil项目公开之前,您必须通过Web用户界面(UI)配置一些属性。
具体来说,请查看“用户和设置”以获取安全性,并查看“配置”以获取项目属性(包括专有名称)。 Web界面不仅是便利功能。它是供实际使用的,确实是Fossil项目的主机。从用户管理(或自我管理,如果需要)到与同一服务器上其他Fossil信息库的单点登录(SSO),有几种令人惊讶的高级选项。
对更改满意后,请关闭Web界面,然后按Ctrl + C停止UI引擎的运行。与其他任何更新一样,提交网络更改:
将您的Fossil信息库(在此示例中为myproject.fossil)复制到您的服务器。您只需要一个文件。
如果尚未安装Fossil,请在您的服务器上安装它。将Fossil安装到服务器上的过程与本地计算机上的过程相同。
在您的cgi-bin目录(或该目录的等效目录,取决于您正在运行的HTTP守护程序)中,创建一个名为repo_myproject.cgi的文件:
您可以通过导航到CGI脚本(例如https://example.com/cgi-bin/repo_myproject.cgi)来访问Web UI。
使用本地克隆需要您使用push子命令将本地更改发送回远程存储库,并使用pull子命令将更改远程进行到本地副本中:
Fossil为您(以及合作者的双手)赋予了巨大的力量,并使您独立于托管服务。本文仅暗示基础知识。 Fossil还有很多可以帮助您和您的团队进行代码项目的工作。尝试化石。它不仅会改变您对版本控制的看法;它会帮助您完全停止考虑版本控制。