ユーザ用ツール

サイト用ツール


fossil

バージョン管理システム Fossil を使う

Fossil は SQLite の開発チームが設計した分散バージョン管理システム (DVCS) である。 単一の実行ファイルで動き、リポジトリ内にバグトラッキング、Wiki、フォーラム、ウェブ UI、チャット機能を内蔵する。

特長

  • 単一バイナリ。依存ライブラリなし。インストールはファイルを置くだけ。
  • リポジトリは1つの SQLite データベースファイル。バックアップは cp で済む。
  • 内蔵 Web インターフェースで履歴、diff、チケット、Wiki をブラウザから操作できる。
  • オートシンク(コミット時に自動 push/pull)で Git より単純なワークフロー。
  • 改ざん防止に SHA3-256 ハッシュを使用、マニフェストへの電子署名もサポート。
  • SQLiteTcl/Tk の本家開発で実運用されている。

インストール

macOS (Homebrew):

brew install fossil

Debian/Ubuntu:

sudo apt install fossil

Windows は 公式サイト から fossil.exe をダウンロードして PATH に置く。

基本的な使い方

リポジトリ作成とオープン

# リポジトリファイルを作成
fossil init ~/fossils/myproject.fossil
# 作業ディレクトリを開く(初回は空)
mkdir myproject && cd myproject
fossil open ~/fossils/myproject.fossil

ファイルの追加とコミット

# ファイルを作成したら
fossil add index.html
fossil commit -m "最初のコミット"

fossil addremove を使うと、新規ファイルの追加と削除ファイルの除去を自動で行う。

Web UI の起動

fossil ui

ブラウザで http://localhost:8080 が開き、履歴・diff・チケット・Wiki が利用できる。

ブランチとマージ

# ブランチ作成
fossil branch new feature-x trunk
# ブランチ切り替え
fossil update feature-x
# trunk へマージ
fossil update trunk
fossil merge feature-x
fossil commit -m "feature-x をマージ"

Git からの移行

# Git リポジトリを fossil に変換
git fast-export --all | fossil import --git newrepo.fossil

詳細は Git Users' Guide を参照。

主な設定

# ユーザー情報
fossil user default nishimotz
# autosync の切り替え
fossil setting autosync off   # 手動 push/pull
fossil setting autosync on    # コミット時自動同期

参考文献

余談

筆者はバージョン管理にまつわる縁が深い。 2001年に CVS の解説書を共著し、 その後 Subversion、Bazaar、Mercurial、Git を順に使ってきた。

CVS は中央集権型で、ブランチとマージが苦手だった。 Subversion は atomic commit とバイナリファイルの扱いを改善したが、 やはりサーバー必須でオフライン作業には弱い。 Mercurial は分散型への移行としてよくできていた。 リポジトリが手元にあり、ブランチも軽く、マージも自然だった。 結局 Git のエコシステムに押されて使われなくなったが、使い心地は悪くなかった。

Git は強力だが、index とワークツリーの二段構え、stash、rebase、複数 remote など、 道具としての筋が通っているとは言いがたいと感じるようになった。 GitHub の便利さの裏で、public と private の境界があまりに低く、 git push ひとつで意図しない公開が起こりうるのも気になり始めた。

Fossil は分散型でありながらオートシンクで通常は意識させず、 リポジトリは手元の1ファイル。 公開したい時だけ明示的に fossil push すればよく、 事故の余地が少ない。


文責: 西本卓也 (nishimotz) — 2026-05-15

fossil.txt · 最終更新: 2026/05/15 22:57 by Takuya Nishimoto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki