当前位置: 首页 > 科技观察

认识Fossil,一个Git替代方案

时间:2023-03-19 02:17:39 科技观察

Fossil是一个集版本控制系统、错误跟踪、wiki、论坛和文档解决方案于一体的解决方案。每个开发人员都知道跟踪代码更改是至关重要的。有时出于好奇或教育目的,您需要展示项目开始和演变的历史。有时你想让其他开发人员参与你的项目,因此你需要一种可靠的方法来合并不同的代码分支。更极端的是,有时您为解决问题而修改的代码会导致现有功能无法正常工作。Fossil源代码管理系统是由著名SQLite数据库的作者开发的版本控制系统、错误跟踪、wiki、论坛和文档解决方案。安装FossilFossil是一个独立的C程序,因此您可以从其网站下载它并将它放在环境变量PATH中的任何位置。例如,假设/usr/local/bin已经在您的环境变量中(默认情况下):$wgethttps://fossil-scm.org/home/uv/fossil-linux-x64-X.Y.tar。gz$sudotarxvffossil-linux-x64-X.Y.tar.gz--directory/usr/local/bin也可以通过包管理器从软件仓库中找到Fossil,或者直接从源码编译创建一个Fossil仓库如果你已经有一个代码项目,想用Fossil来追踪,那么第一步就是创建一个Fossil仓库:$fossilinitmyproject.fossilproject-id:010836ac6112fefb0b015702152d447c8c1d8604server-id:54d837e9dc938ba1caa56d31b99c35a4c9627f44admin-user:klaatu(initialpasswordis"14b605")创建Fossil存储库时会返回三行信息:唯一的项目ID、唯一的服务器ID以及管理员ID和密码。项目ID和服务器ID是版本号。管理员凭据表明您对该存储库的所有权,当您使用Fossil作为其他用户访问的服务器时,可以使用管理员权限。FossilRepository工作流程在您可以使用Fossil存储库之前,您需要为其数据创建一个工作路径。您可以将此过程比作使用Python创建虚拟环境或提取ZIP文件仅用于备份。创建一个工作目录并输入:$mkdirmyprojectdir$cdmyprojectdir打开你的Fossil进入你刚创建的目录:$fossilopen../myprojectproject-name:repository:/home/klaatu/myprojectdir/../myprojectlocal-root:/home/klaatu/myprojectdir/config-db:/home/klaatu/.fossilproject-code:010836ac6112fefb0b015702152d447c8c1d8604checkout:9e6cd96dd675544c58a246520ad58cdd460d15592020-11-0904:09:35UTCtags:trunkcomment:initialemptycheck-in(user:klaatu)签入:1您可能已经注意到,Fossil在您的主目录中创建了一个名为.fossil的隐藏文件,以跟踪您的全局Fossil配置。此配置并非特定于您的某个项目;该文件仅在您第一次使用Fossil时生成。添加文件使用add和commit子命令将文件添加到您的存储库。例如,创建一个简单的README文件,把它添加到库:$echo"MyfirstFossilproject">README$fossiladdREADMEADDEDREADME$fossilcommit-m'Myfirstcommit'New_Version:2472a43acd11c93d08314e852dedfc6a476403695e44f47061607e4e90ad01aa使用支持Fossil库开始时默认使用的master分支叫做trunk。当你想修改代码而不影响主代码时,可以从主干分支切掉。要创建新分支,请使用branch子命令,它需要两个参数:新分支的名称和新分支的基本分支名称。在这个例子中,只有一个分支,trunk,所以试着创建一个名为dev的新分支:createdeb0创建了一个新的分支,但是你当前所在的分支还是trunk:$fossilbranchcurrenttrunk使用checkout命令切换到你的新分支dev:$fossilcheckoutdevdev合并更改假设你在dev分支添加了一个新文件,做完测试,现在想合并到主干里。这个过程称为合并。首先,切换回目标分支(在这个例子中,目标分支是主干):$fossilcheckouttrunktrunk$lsREADME这个分支不包含你的新文件(或你对其他文件的修改),那些内容是需要的信息对于合并过程:$fossilmergedev“fossilundo”可用于撤消对工作结帐的更改。$lsmyfile.luaREADME查看Fossil时间线使用时间线选项查看存储库的历史记录。此命令列出了您存储库中所有活动的详细信息,包括用于表示每次修改的哈希值、为每次提交填写的信息以及提交者:$fossiltimeline===2020-11-09===06:24:16[5ef06e668b]添加了令人兴奋的新文件(用户:klaatu标签:dev)06:11:19[cb90e9c6f2]创建名为“dev”的新分支(用户:klaatu标签:dev)06:08:09[a2bb73e4a3]*CURRENT*添加了一些内容(用户:klaatu标签:trunk)06:00:47[2472a43acd]这是我的第一次提交。(用户:klaatu标签:trunk)04:09:35[9e6cd96dd6]初始空签入(用户:klaatu标签:trunk)+++没有更多数据(5)+++FossilUI公开了您的Fossil存储库,因为Fossil有作为一个内置的网络界面,Fossil不需要像GitLab和Gitea这样的托管服务。Fossil是它自己的托管服务,只要你把它放在一台机器上。在公开Fossil存储库之前,您需要通过Web用户界面(UI)配置一些信息:使用ui子命令启动本地实例:$pwd/home/klaatu/myprojectdir/$fossilui"Users"and"Settings"“与安全相关,“配置”与项目属性相关(包括合适的标头)。Web界面不仅仅是一个方便的功能。它旨在用于生产并作为Fossil项目的宿主。它还具有一些其他高级选项,例如用户管理(或自我管理)、与同一服务器上的其他Fossil存储库的单点登录(SSO)。配置完成后,关闭Web界面,按Ctrl+C停止UI引擎。像提交代码一样提交Web更改。$fossilcommit-m'webuiupdates'New_Version:11fe7f2855a3246c303df00ec725d0fca526fa0b83fa67c95db92283e8273c60现在你可以配置你的Fossil服务器了。将您的Fossil存储库(在本例中为myproject.fossil)复制到服务器,您只需要一个文件。如果您的服务器没有安装Fossil,请在您的服务器上安装Fossil。在服务器上安装的过程和本地是一样的。在您的cgi-bin目录(或其相应目录,取决于您的HTTP守护进程)中创建一个名为repo_myproject.cgi的文件:#!/usr/local/bin/fossilrepository:/home/klaatu/public_html/myproject.fossil添加可执行权限:$chmod+xrepo_myproject.cgi您需要做的就完成了。您的项目现在可以通过Internet访问。您可以通过CGI脚本访问WebUI,例如https://example.com/cgi-bin/repo_myproject.cgi。你也可以通过命令行进行交互:$fossilclonehttps://klaatu@example.com/cgi-bin/repo_myproject.cgi在本地克隆仓库中工作时,你需要使用push子命令将本地更改推送到远程仓库,使用pull子命令拉取远程修改到本地仓库:$fossilpushhttps://klaatu@example.com/cgi-bin/repo_myproject.cgi使用Fossil作为独立主机Fossil会很多power放在你的手中(以及你的合作者的手中),让你不再需要依赖托管服务。本文简单介绍基本概念。您的代码项目也将使用许多有用的Fossil功能。试试Fossil。它不仅会改变你对版本控制的理解;它会让你不再考虑其他版本控制系统。