blog

Tech|Gitに代わるFossilについて学ぼう

Fossil は、バージョン管理システム、バグトラッカー、Wiki、フォーラム、ドキュメンテーション・ソリューションがひとつになったものです。...

Oct 17, 2025 · 7 min. read
シェア

Fossilはバージョン管理システム、バグトラッカー、ウィキ、フォーラム、ドキュメントソリューションです。

開発者なら誰でも、コードの変更を記録しておくことが重要であることを知っています。好奇心や教育的な目的のために、プロジェクトの始まりと進化の歴史を示す必要があることもあるでしょう。他の開発者をプロジェクトに参加させたいので、異なるコードブランチをマージする信頼できる方法が必要なこともあるでしょう。もっと極端な例では、問題を解決するために変更したコードが、 既存の機能を動作させなくしてしまうこともあります。

ソースコード管理システムは、有名な データベースの作者によって開発された、オールインワンのバージョン管理システム、バグ追跡、ウィキ、フォーラム、文書化ソリューションです。

化石のインストール

FossilはスタンドアロンのCプログラムなので、ウェブサイトからダウンロードして環境変数 SQLite 任意の場所に置くことができます。例えば、/usr/local/binがすでに環境変数に入っているとします:

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

Fossilはパッケージ・マネージャーを通してリポジトリから見つけることもできますし、ソースから直接コンパイルすることもできます。

化石リポジトリの作成

すでにFossilで追跡したいコードプロジェクトがある場合、最初のステップはFossilリポジトリを作成することです:

  1. $ fossil init myproject.fossil
  2. project-id: ac6112fefb0bdd0684
  3. server-id:  e9dc938ba1caac27f44
  4. admin-user: klaatu (initial password is "")

Fossil リポジトリの作成プロセスでは、一意のプロジェクト ID、一意のサーバー ID、管理者 ID とパスワードの 3 行の情報が返されます。プロジェクト ID とサーバー ID はバージョン番号です。管理者認証情報はリポジトリの所有権を示し、他のユーザーがアクセスするサーバーとして Fossil を使用する際に管理者権限を使用できます。

化石倉庫ワークフロー

Fossil リポジトリを使用する前に、データの作業パスを作成する必要があります。このプロセスは、Pythonを使用する際の仮想環境の作成や、バックアップにのみ使用するZIPファイルの解凍に例えることができます。

作業ディレクトリを作成し、その中に入ります:

  1. $ mkdir myprojectdir
  2. $ cd myprojectdir

作成したディレクトリにFossilを開いてください:

  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: ac6112fefb0bdd0684
  7. checkout: 9e6cd96ddaad58cdd UTC
  8. tags: trunk
  9. comment: initial empty check-in (user: klaatu)
  10. check-ins: 1

お気づきかもしれませんが、Fossilはホームディレクトリに.fossilという隠しファイルを作成し、グローバルなFossilコンフィギュレーションを記録します。このコンフィギュレーションは1つのプロジェクトに固有のものではなく、このファイルはFossilの初回使用時にのみ生成されます。

ファイルの追加

リポジトリにファイルを追加するには、add サブコマンドと commit サブコマンドを使用します。たとえば、簡単な 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: acddedfc6aead01aa

ブランチの利用

Fossil リポジトリは trunk と呼ばれるデフォルトのマスターブランチで始まり、メインブランチに影響を与えずにコードに変更を加えたい場合は trunk ブランチから切り離すことができます。新しいブランチを作成するには、branch サブコマンドを使用します。branch サブコマンドは、新しいブランチの名前と、新しいブランチのベースブランチの名前の 2 つの引数を取ります。この場合、trunk というブランチしかないので、dev という新しいブランチを作成しようとします:

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

新しいブランチを作成しましたが、現在のブランチはトランクのままです:

  1. $ fossil branch current

新しいブランチdevに切り替えるには checkout コマンドを使います:

  1. $ fossil checkout dev

変更のマージ

新しいファイルをdevブランチに追加し、テストを終えて、それをtrunkにマージしたいとします。

まず、目的の枝まで切り戻します:

  1. $ fossil checkout trunk

このブランチには新しいファイルはなく、その内容はマージ処理に必要な情報です:

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

Fossil のタイムラインを見る

リポジトリの履歴を見るには、タイムラインオプションを使用します。このコマンドは、各変更を表すために使用されたハッシュ値、各コミットで記入された情報、コミッターなど、リポジトリのすべての活動に関する詳細な情報を一覧表示します:

  1. $ fossil timeline
  2. === ===
  3. [5efb] added exciting new file (user: klaatu tags: dev)
  4. [cbf2] Create new branch named "dev" (user: klaatu tags: dev)
  5. [a2bb] *CURRENT* some additions were made (user: klaatu tags: trunk)
  6. [acd] This is my first commit. (user: klaatu tags: trunk)
  7. [9e6cd96dd6] initial empty check-in (user: klaatu tags: trunk)
  8. +++ no more data (5) +++

オープン化石倉庫

Fossil にはウェブインターフェイスが組み込まれているので、GitLab や Gitea のようなホスティングサービスは必要ありません。Fossil リポジトリを公開する際には、ウェブユーザーインターフェイスでいくつかの情報を設定する必要があります:

ローカル・インスタンスを開始するには、ui サブコマンドを使用します:

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

「Users "と "Settings "はセキュリティ関連で、"Configuration "はプロジェクトのプロパティです。ウェブ・インターフェースは単なる便利な機能ではありません。 本番環境やFossilプロジェクトのホストとして使用することができます。また、ユーザー管理や同じサーバー上の他のFossilリポジトリとのシングルサインオンなど、他の高度なオプションもあります。

設定が完了したら、ウェブ・インターフェースを閉じ、Ctrl+C を押して UI エンジンを停止します。Web の変更をコードであるかのようにコミットします。

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

これでFossilサーバーを設定できます。

  1. Fossilリポジトリをサーバーにコピーしてください。
  2. Fossilがサーバーにインストールされていない場合は、サーバーにFossilをインストールしてください。サーバーへのインストール手順はローカルと同じです。
  3. cgi-binディレクトリに repo_myproject.cgi 名前のファイルを作成します:
  1. #!/usr/local/bin/fossil
  2. repository: /home/klaatu/public_html/myproject.fossil

実行可能パーミッションを追加します:

  1. $ chmod +x repo_myproject.cgi

必要なことはすべて終わっています。このプロジェクトはインターネット経由でアクセスできるようになりました。

https://./-/_.giCGIスクリプトでウェブUIにアクセスできます。

コマンドラインから対話することもできます:

  1. $ fossil clone https://@./-/_.gi

ローカルのクローンリポジトリで作業する場合、ローカルの変更をリモートリポジトリにプッシュするには push サブコマンドを使用し、リモートの変更をローカルリポジトリにプルするには pull サブコマンドを使用する必要があります:

  1. $ fossil push https://@./-/_.gi

Fossilをスタンドアロンホスティングとして使用

Fossilは、もはや頼る必要のないマネージド・サービスの手に多くの力を与えます。この記事は基本的なコンセプトの簡単な紹介に過ぎません。あなたのコード・プロジェクトで使える便利な Fossil の機能は他にもたくさんあります。Fossilを試してみてください。バージョン管理に対する理解が変わるだけでなく、他のバージョン管理システムについて考えなくなるでしょう。

via:

Read next