分散バージョン管理システム 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 も作成される。