自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

了解一下Fossil,一個(gè)Git的替代品

系統(tǒng)
Fossil 是一個(gè)集版本控制系統(tǒng)、bug 追蹤、維基、論壇以及文檔解決方案于一體的系統(tǒng)。

[[355065]]

Fossil 是一個(gè)集版本控制系統(tǒng)、bug 追蹤、維基、論壇以及文檔解決方案于一體的系統(tǒng)。

每個(gè)開發(fā)者都知道,追蹤代碼的修改是至關(guān)重要的。有時(shí)候你會(huì)處于好奇或者教育的目的需要展示你的項(xiàng)目開始和進(jìn)化的歷史。有時(shí)候你想讓其他的開發(fā)者參與到你的項(xiàng)目中,因此你需要一種值得信賴的能合并不同代碼分支的方法。更極端一點(diǎn),有時(shí)候你為了解決一個(gè)問題而修改的代碼導(dǎo)致已有的功能不能正常使用。

Fossil 源碼管理系統(tǒng)是由著名的 SQLite 數(shù)據(jù)庫的作者開發(fā)的一個(gè)集版本控制系統(tǒng)、bug 追蹤、維基、論壇以及文檔解決方案于一體的系統(tǒng)。

安裝 Fossil

Fossil 是一個(gè)獨(dú)立的 C 程序,因此你可以從它的網(wǎng)站上下載后放在環(huán)境變量 PATH 中的任意位置。例如,假定 /usr/local/bin 已經(jīng)在你的環(huán)境變量中(默認(rèn)情況下是在的):

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

你也可以通過包管理器從軟件倉庫中找到 Fossil,或者直接從源碼編譯。

創(chuàng)建一個(gè) Fossil 倉庫

如果你已經(jīng)有一個(gè)代碼項(xiàng)目,想用 Fossil 來追蹤,那么第一步就是創(chuàng)建一個(gè) Fossil 倉庫:

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

創(chuàng)建 Fossil 倉庫的過程中會(huì)返回三行信息:一個(gè)唯一的項(xiàng)目 ID、一個(gè)唯一的服務(wù)器 ID 以及管理員 ID 和密碼。項(xiàng)目 ID 和服務(wù)器 ID 是版本數(shù)字。管理員憑證表明你對(duì)這個(gè)倉庫的所有權(quán),當(dāng)你把 Fossil 作為服務(wù)器讓其他用戶來訪問時(shí)可以使用管理員權(quán)限。

Fossil 倉庫工作流

在你使用 Fossil 倉庫之前,你需要先為它的數(shù)據(jù)創(chuàng)建一個(gè)工作路徑。你可以把這個(gè)過程類比為使用 Python 時(shí)創(chuàng)建一個(gè)虛擬環(huán)境或者解壓一個(gè)只用來備份的 ZIP 文件。

創(chuàng)建一個(gè)工作目錄并進(jìn)入:

  1. $ mkdir myprojectdir
  2. $ cd myprojectdir

把你的 Fossil 打開到剛剛創(chuàng)建的目錄:

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

你可能注意到了,F(xiàn)ossil 在你的家目錄下創(chuàng)建了一個(gè)名為 .fossil 的隱藏文件,用來追蹤你的全局 Fossil 配置。這個(gè)配置不是只適用于你的一個(gè)項(xiàng)目的;這個(gè)文件只會(huì)在你第一次使用 Fossil 時(shí)生成。

添加文件

使用 add 和 commit 子命令來向你的倉庫添加文件。例如,創(chuàng)建一個(gè)簡單的 README 文件,把它添加到倉庫:

  1. $ echo "My first Fossil project" > README
  2. $ fossil add README
  3. ADDED  README
  4. $ fossil commit -m 'My first commit'
  5. New_Version: 2472a43acd11c93d08314e852dedfc6a476403695e44f47061607e4e90ad01aa

使用分支

Fossil 倉庫開始時(shí)默認(rèn)使用的主分支名為 trunk。當(dāng)你想修改代碼而又不影響主干代碼時(shí),你可以從 trunk 分支切走。創(chuàng)建新分支需要使用 branch 子命令,這個(gè)命令需要兩個(gè)參數(shù):一個(gè)新分支的名字,一個(gè)新分支的基分支名字。在本例中,只有一個(gè)分支 trunk,因此嘗試創(chuàng)建一個(gè)名為 dev 的新分支:

  1. $ fossil branch --help
  2. Usage: fossil branch new BRANCH-NAME BASIS ?OPTIONS?
  3. $ fossil branch new dev trunk
  4. New branch: cb90e9c6f23a9c98e0c3656d7e18d320fa52e666700b12b5ebbc4674a0703695

你已經(jīng)創(chuàng)建了一個(gè)新分支,但是你當(dāng)前所在的分支仍然是 trunk

  1. $ fossil branch current
  2. trunk

使用 checkout 命令切換到你的新分支 dev

  1. $ fossil checkout dev
  2. dev

合并修改

假設(shè)你在 dev 分支中添加了一個(gè)新文件,完成了測試,現(xiàn)在想把它合并到 trunk。這個(gè)過程叫做合并。

首先,切回目標(biāo)分支(本例中目標(biāo)分支為 trunk):

  1. $ fossil checkout trunk
  2. trunk
  3. $ ls
  4. README

這個(gè)分支中沒有你的新文件(或者你對(duì)其他文件的修改),而那些內(nèi)容是合并的過程需要的信息:

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

查看 Fossil 時(shí)間線

使用 timeline 選項(xiàng)來查看倉庫的歷史。這個(gè)命令列出了你的倉庫的所有活動(dòng)的詳細(xì)信息,包括用來表示每次修改的哈希值、每次提交時(shí)填寫的信息以及提交者:

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

 

Fossil UI

公開你的 Fossil 倉庫

因?yàn)?Fossil 有個(gè)內(nèi)置的 web 界面,所以 Fossil 不像 GitLab 和 Gitea 那樣需要主機(jī)服務(wù)。Fossil 就是它自己的主機(jī)服務(wù),只要你把它放在一臺(tái)機(jī)器上就行了。在你公開你的 Fossil 倉庫之前,你還需要通過 web 用戶界面(UI)來配置一些信息:

使用 ui 子命令啟動(dòng)一個(gè)本地的實(shí)例:

  1. $ pwd
  2. /home/klaatu/myprojectdir/
  3. $ fossil ui

“Users” 和 “Settings” 是安全相關(guān)的,“Configuration” 是項(xiàng)目屬性相關(guān)的(包括一個(gè)合適的標(biāo)題)。web 界面不僅僅是一個(gè)方便的功能。 它是能在生產(chǎn)環(huán)境中使用并作為 Fossil 項(xiàng)目的宿主機(jī)來使用的。它還有一些其他的高級(jí)選項(xiàng),比如用戶管理(或者叫自我管理)、在同一個(gè)服務(wù)器上與其他的 Fossil 倉庫進(jìn)行單點(diǎn)登錄(SSO)。

當(dāng)配置完成后,關(guān)掉 web 界面并按下 Ctrl+C 來停止 UI 引擎。像提交代碼一樣提交你的 web 修改。

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

現(xiàn)在你可以配置你的 Fossil 服務(wù)器了。

  1. 把你的 Fossil 倉庫(本例中是 myproject.fossil)復(fù)制到服務(wù)器,你只需要這一個(gè)文件。
  2. 如果你的服務(wù)器沒有安裝 Fossil,就在你的服務(wù)器上安裝 Fossil。在服務(wù)器上安裝的過程跟在本地一樣。
  3. 在你的 cgi-bin 目錄下(或它對(duì)應(yīng)的目錄,這取決于你的 HTTP 守護(hù)進(jìn)程)創(chuàng)建一個(gè)名為 repo_myproject.cgi 的文件:
  1. #!/usr/local/bin/fossil
  2. repository: /home/klaatu/public_html/myproject.fossil

添加可執(zhí)行權(quán)限:

  1. $ chmod +x repo_myproject.cgi

你需要做的都已經(jīng)做完了。現(xiàn)在可以通過互聯(lián)網(wǎng)訪問你的項(xiàng)目了。

你可以通過 CGI 腳本來訪問 web UI,例如 https://example.com/cgi-bin/repo_myproject.cgi。

你也可以通過命令行來進(jìn)行交互:

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

在本地的克隆倉庫中工作時(shí),你需要使用 push 子命令把本地的修改推送到遠(yuǎn)程的倉庫,使用 pull 子命令把遠(yuǎn)程的修改拉取到本地倉庫:

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

使用 Fossil 作為獨(dú)立的托管

Fossil 將大量的權(quán)力交到了你的手中(以及你的合作者的手中),讓你不再依賴托管服務(wù)。本文只是簡單的介紹了基本概念。你的代碼項(xiàng)目還會(huì)用到很多有用的 Fossil 功能。嘗試一下 Fossil。它不僅會(huì)改變你對(duì)版本控制的理解;它會(huì)讓你不再考慮其他的版本控制系統(tǒng)。 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2024-04-02 09:42:39

2022-06-29 15:40:28

MinecraftMinetest開源

2021-09-04 15:21:39

ZulipSlack開源

2021-11-10 18:40:24

exa命令 ls命令Linux

2021-12-29 18:18:59

開源MedusaShopify

2020-11-25 13:48:04

LazPaintPaint.NET開源

2021-01-05 08:35:24

GNU nanoVim編輯器

2023-02-06 06:21:53

BookStack開源

2023-03-29 13:13:34

2022-12-03 15:53:46

開源Linux

2021-10-19 09:00:00

KubeMQKubernetes工具

2022-04-13 09:26:47

PeergosGoogle開源

2022-03-24 10:54:33

Piwigo開源

2010-02-25 09:14:07

2020-07-07 09:10:29

VS CodeLinux開源

2022-12-26 07:40:00

Heroku替代品dynos

2024-05-20 02:00:00

LangChain人工智能

2011-04-12 09:13:51

OpenIndianaSolaris替代品

2015-07-22 17:33:52

UbuntuCCleaner系統(tǒng)清理工具

2022-08-02 10:45:29

AppFlowyNotion開源
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)