GitとGitHubの機能をひとつのバイナリに詰め込んだ「Fossil」レビュー
ソフトウェアのバージョン管理といえば、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の比較表は以下となっています。
Git | Fossil | |
---|---|---|
機能 | ファイルバージョン管理のみ | バージョン管理やチケット、Wiki、フォーラム、ウェブ画面などあり |
アーキテクチャ | 多くの小さなプログラムの集合 | スタンドアローンなひとつのバイナリ |
データ保存 | キー・バリュー型のデータストア | SQLite |
動作システム | POSIXシステムでネイティブ動作 | POSIXとWindows両方でネイティブ動作 |
開発方式 | バザール方式の開発 | 伽藍(がらん)方式の開発 |
設計 | Linuxカーネル開発のための設計 | SQLite開発のための設計 |
コントリビューター | 多数 | 少数精鋭 |
方針 | それぞれのブランチに集中 | 更新ツリー全体に集中 |
チェックアウト | 1リポジトリにひとつ | 1リポジトリに複数 |
記録するもの | すべきことを記録 | やったことを記録 |
文化 | コミットファースト | テストファースト |
ハッシュ | SHA-1/SHA-2対応 | 同一リポジトリで SHA-1/SHA-3に対応 |
・関連記事
GitHubっぽくデータベースのバージョン管理やホスティングができる「DoltHub」 - GIGAZINE
無料&スクリプトひとつでウェブサイトに「視点の追跡機能」を実装できる「WebGazer.js」レビュー - GIGAZINE
JavaScriptでGPUを簡単に扱えるライブラリ「GPU.js」レビュー、並列処理で多次元の演算が爆速に - GIGAZINE
ブラウザ上で動画生成や変換ができるWebAssembly版FFmpeg「ffmpeg.wasm」レビュー - GIGAZINE
GitHubが2020年のユーザー数やリポジトリ数、人気の高いプログラミング言語やトピックなど使用状況を詳細にまとめたレポート「The State of the Octoverse 2020」を公開 - GIGAZINE
・関連コンテンツ