分散バージョン管理システム fossil

分散バージョン管理システム fossil というものがあると知ったので、簡単に調べてみました。

Ubuntu では、次のようにしてインストールできます。

apt-get update && apt-get -y upgrade
apt-get -y install curl sqlite3
curl -sLJO https://www.fossil-scm.org/home/uv/fossil-linux-x64-2.23.tar.gz
if [ ! -e ${HOME}/.local/bin ]; then
  mkdir -p ${HOME}/.local/bin
fi
tar xf fossil-linux-x64-2.23.tar.gz -C ${HOME}/.local/bin/

apt コマンドを使うなら次のようになります。

apt-get update && apt-get -y upgrade && apt-get -y install fossil

リポジトリの新規作成。Git がわかる人なら、これはベアリポジトリの作成に相当します。

fossil new proj001.fossil

ワーキングディレクトリの用意。Git がわかる人なら、これはベアリポジトリから HEAD を checkout するのに近いです。

fossil open proj001.fossil --workdir proj001

これで、ワーキングディレクトリ proj001 が用意されます。このワーキングディレクトリでは、どのリポジトリから open したかの情報を保持しています。

ワーキングディレクトリ proj001 で開発作業をします。

cd proj001
npm init -y
npm exec -y --package=@angular/cli -- \
  ng new \
    --interactive false \
    --defaults true \
    --skip-git \
    --minimal true \
    app-sample-minimal

無視するファイルの登録

mkdir .fossil-settings/
touch .fossil-settings/ignore-glob
echo "node_modules" >> .fossil-settings/ignore-glob

リポジトリとワーキングディレクトリの状態を確認しつつ fossil add で追加。追加と削除の両方ができる fossil addremove というのもある。

add コマンドは、指定されたファイルまたはディレクトリを現在のリポジトリに追加。ファイルまたはディレクトリが既にリポジトリに存在する場合は、更新。

fossil add [ファイルまたはディレクトリ名]

addremove コマンドは、add コマンドの機能に加えて、追加されたファイルの削除も可能。

fossil addremove [ファイルまたはディレクトリ名]

add も addremove も以下のオプションがある。

-b:バイナリファイルを扱うときに指定
-m:メッセージの指定
-R:ディレクトリを再帰的に追加するときに指定

画像ファイルの sample.png を追加しつつ、メッセージ「add sammple.png」を指定する場合のコマンドは次のようになる。

fossil add -b -m "add sample.png" sample.png

他には fossil extras コマンドもよく使う。これは現在のチェックアウトに含まれていないすべてのファイルを一覧表示する。

fossil extras

このコマンドは、現在のチェックアウトのルートディレクトリから開始し、そのディレクトリとサブディレクトリのすべてのファイルを再帰的に検索。

extras コマンドには、以下のオプション。

-R:指定されたディレクトリを再帰的に検索
-i:指定されたパターンに一致するファイルを無視
-r:出力を相対パスで表示

fossil add、addremove、extras を使って proj001 のファイルをバージョン管理。

fossil extras
fossil extras --dotfiles
fossil add package.json
fossil addremove
fossil addremove --dotfiles

–dotfiles は . で始まるファイルを特別に扱うためのオプション。

状態を確認してコミット

fossil status
fossil commit -m "add"

Web サーバーの起動。http://localhost:8080/ へアクセスすると Issue 機能や Wiki 機能が使える Web インタフェースが用意される。

fossil ui proj001.fossil 

http://localhost:8080/ にあるリポジトリをクローン。
repo ディレクトリを用意して、そこで fossil clone コマンドを実行。

mkdir repo
cd repo
fossil clone http://localhost:8080/ --workdir proj001 proj001.fossil

これで、repo/proj001.fossil に proj001 のリポジトリがクローンされ、ワーキングディレクトリー repo/proj001 も作成される。

同じカテゴリの記事: Linux