ソフトウェアのバージョン管理といえば、GitとGitHubを用いるのが主流。しかし、バージョン管理システムにはCVSやSubversion、Mercurial、GitLab、Bitbucketなど、「GitとGitHub」以外の選択肢も存在します。そんな「GitとGitHub」とは別の選択肢のひとつが、データベースのSQLiteと同じくD. Richard Hipp氏によって開発された「Fossil」です。

Fossil: Home

https://www.fossil-scm.org/home/doc/trunk/www/index.wiki

FossilはLinuxやmacOS、Windowsに対応しており、ソースコードから自分でバイナリをビルドすることも可能。今回はUbuntu 20.04上でFossilを利用してみます。

まずは下記コマンドを実行して、Fossilのバイナリを実行可能なディレクトリに配置します。Fossilはバイナリ単体で動作するソフトウェアなので、他の依存パッケージなどのインストールは不要です。

wget -O - https://www.fossil-scm.org/home/uv/fossil-linux-x64-2.13.tar.gz | tar xzvf -
sudo mv fossil /usr/local/bin


続いて以下のコマンドで新しいプロジェクトを作成。

fossil init myrepo.fossil


プロジェクトを作成すると、プロジェクトIDやサーバーID、管理者のID、パスワード、カレントディレクトリ下に「myrepo.fossil」という名前のファイルが生成されます。



以下のコマンドを実行するとプロジェクトツリーが生成され、ファイルを管理することができるようになります。

fossil open -f myrepo.fossil


実行結果はこんな感じ。



さっそくプロジェクトにファイルを追加すべく、以下のようなプロジェクトを説明する「README.md」ファイルを作成。



以下のコマンドを実行すると、プロジェクトにファイルを追加することができます。

fossil add .


プロジェクトに変更をコミットするには、以下のコマンドを実行。このように、FossilはGitと同じようなコマンド体系でコードのバージョン管理を行えるソフトウェアです。

fossil commit -m "Initial Commit"


gitと同じように、リモートのリポジトリをクローンすることも可能です。

fossil clone https://www.sqlite.org/src sqlite.fossil


また、Fossilはウェブインターフェースを備えているので、以下のコマンドを実行すればウェブインターフェースからプロジェクトを確認することが可能。Fossilのウェブインターフェースは、Gitにおける「GitHub」や「GitLab」のような役割を果たします。

fossil ui myrepo.fossil


「http://localhost:8080/」にアクセスすると、Fossilのウェブ画面が表示されました。プロジェクトの設定を行う必要があるので、赤枠の「config/setup」をクリックします。



プロジェクト名やプロジェクトの説明、tarファイルの命名規則などを設定して「Apply Changes」をクリック。これでプロジェクトの設定は完了です。



「Timeline」では、プロジェクトのコミット履歴を確認できます。



「Files」では、プロジェクト内のファイルを確認可能。



また、「Forum」では、プロジェクトに関する質問などを投稿することができます。新規にスレッドを作成するには「New Thread」をクリック。



質問のタイトル、内容を記入できたら「Preview」をクリック。



上部にプレビューが表示されました。



プレビューを確認し、問題なければ「Submit」をクリックします。



こんな感じで、フォーラムに新しいスレッドを作成することができました。



「Tickets」の「New ticket」からは、バグや不具報告のためのチケットを発行することができます。



チケット名や問題の種類、問題の発生しているバージョン、問題の緊急度、問題の内容を記入したら「Preview」をクリック。



プレビューを確認できたら「Submit」をクリックします。



これでチケットを発行することができました。



「Tickets」の「All Tickets」をクリックすると……



チケット状態別にチケット一覧を確認することができます。ソフトウェア開発時にはこの画面を見ながら、不具合に対処していくことになります。



「Wiki」ではプロジェクトのWikiを残しておくことができます。「New」をクリックして新しいWikiを作成。



Wikiの名称を入力して「Create」をクリックします。



Wikiのエディタが表示されるので、内容を入力したら「Save&Close」をクリック。



これでWikiを作成することができました。



Fossilはローカルリポジトリの内容をリモートリポジトリに自動で反映する「autosync」モードを搭載しており、以下のコマンドを実行することでautosyncを有効にすることができます。

fossil setting autosync on


なお、FossilによるGitとFossilの比較表は以下となっています。

 GitFossil機能ファイルバージョン管理のみバージョン管理やチケット、Wiki、フォーラム、ウェブ画面などありアーキテクチャ多くの小さなプログラムの集合スタンドアローンなひとつのバイナリデータ保存キー・バリュー型のデータストアSQLite動作システムPOSIXシステムでネイティブ動作POSIXとWindows両方でネイティブ動作開発方式バザール方式の開発伽藍(がらん)方式の開発設計Linuxカーネル開発のための設計SQLite開発のための設計コントリビューター多数少数精鋭方針それぞれのブランチに集中更新ツリー全体に集中チェックアウト1リポジトリにひとつ1リポジトリに複数記録するものすべきことを記録やったことを記録文化コミットファーストテストファーストハッシュSHA-1/SHA-2対応同一リポジトリで SHA-1/SHA-3に対応