🐳

VS Code 開発コンテナーを使って Fossil 分散バージョン管理システムを試す - Linux 使いになりたい人向け

2024/01/14に公開

はじめに

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

Fossil にはコマンドに Web システム実行用の機能が含まれているため、GitHub のようなものを手軽にプライベート環境で実行できます。

/images/20240114_dev_fossil/fossil_01.png
Fossil の画面(チケット一覧)

Git がこれだけ普及してエコシステムもできあがっているため、Fossil を使うメリットはあまりないかもしれないのですが、手軽にプライベート環境で GitHub のようなバージョン管理をしたいというときの選択肢として知っておいた方が良さそうだと考えて調べてみました。

この記事は VS Code と Docker が使える人で Linux 使いになりたい人向けの内容で書いてあり、対象者は次の人です。

  • 分散バージョン管理システム Fossil に興味がある
  • VS Code 開発コンテナーに興味がある
  • Linux が使えるようになりたい

筆者は Linux 使いで、基本的に Linux 環境で動作確認をしています。ここで紹介しているようなちょっとしたことを少しずつ知ることを毎日続けることで Linux の機能を少しずつ理解することができるようになりました。Linux が使えるようになりたいと思っている人向けに、記事を公開していく予定です。

開発コンテナー dev-fossil

今回の Fossil のように、初めて使ってみるものについては、最近は基本的に開発コンテナーを使うようにしています。そのために用意したものを下記で公開しています。

ここでは、この dev-fossil 開発コンテナーを使う前提で説明します。今回は調査用の開発コンテナーで、調べる内容もインストール方法や簡単な使い方までなので、簡単に用意できるものにしてあります。ただし、root 権限で実行されるのでトラブルが起きやすい Docker ボリュームのバインドマウントは使わないようにしています。

動作に必要な環境 については次の通りです。

  • Docker Engine
    • Docker Compose Plugin
  • VS Code
    • Docker 拡張機能
    • Dev Containers 拡張機能

次のように ZIP ファイルをダウンロードして展開し、カレントディレクトリーを ZIP ファイルを展開したディレクトリー内にある dev-fossil ディレクトリーとします。

curl -o dcfwd.zip -L https://codeload.github.com/hiro345g/dcfwd/zip/refs/heads/main
unzip dcfwd.zip
cd dcfwd-main/dev-fossil

ここでは、以降、dev-fossil ディレクトリー(フォルダ)を ${REPO_DIR} と表記します。

VS Code の起動

最初に dev-fossil フォルダを開いた VS Code を起動します。ターミナルから起動する場合は、カレントを ${REPO_DIR} にして次のようにコマンドを実行します。

code .

VS Code を起動してから、「ファイル」-「フォルダを開く」から dev-fossil フォルダを開いても良いです。

dev-fossil 開発コンテナーの起動

dev-fossil 開発コンテナーを起動する手順は次の通りです。

  1. VS Code のエクスプローラーで ${REPO_DIR}/docker-compose.yml を右クリック
  2. メニューの Compose Up をクリック
  3. VS Code の Docker で CONTAINERS にある dev-fossil - ubuntu:22.04 を右クリック
  4. メニューの Visual Studio Code をアタッチ をクリック
  5. 開発コンテナーをアタッチした VS Code(左下に コンテナー ubuntu:22.04(ubuntu2204) と表示されているもの)で /root/ フォルダーを開く

これ以降、開発コンテナーの VS Code は dev-fossil の VS Code と表記します。

Fossil のインストール確認と利用のための準備

それでは、Fossil のインストール確認と利用のための準備をします。次の順番で説明します。

  1. root ユーザーで fossil コマンドのインストールができるか確認
  2. Fossil を試用するときに使う Node.js 環境の用意
  3. Fossil を試用するときに使う node ユーザーの用意
  4. apt コマンドを使った fossil コマンドのインストール

fossil コマンドのインストール

dev-fossil 開発コンテナーは Ubuntu 22.04 ベースなので、Ubuntu でインストールする手順に従います。ここでは次のようなインストール用スクリプトを用意しました。

install-fossil.sh
if [ ! -e ${HOME}/.local/bin/fossil ]; then
    if [ "x${USER}" = "x" ]; then
        apt-get update && apt-get -y upgrade
        apt-get -y install curl sqlite3
    fi
    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/
fi

PATH=${HOME}/.local/bin:${PATH}

${HOME}/.local/bin/fossil ファイルが Fossil の実行用コマンド fossil になります。これが存在しない場合にインストールスクリプトで用意するという処理になっています。

また、root ユーザー以外でも使用する予定なので、if [ "x${USER}" = "x" ]; then (略)fi の処理で apt-get コマンドは root ユーザーがスクリプトを使うときだけ実行するようにしてあります。

最後の PATH=${HOME}/.local/bin:${PATH} はインストール後に dev-fossil コンテナーで使うためのもので、通常のインストール時には必要がありません。別スクリプトで用意するまでもないので、ここに入れてあります。

次の手順で dev-fossil コンテナーを使って install-fossil.sh を dev-fossil コンテナー内に用意し、それから dev-fossil コンテナーのターミナルを開きます。

  1. Docker ホストの VS Code で ${REPO_DIR}/devcontainer-script/install-fossil.sh を右クリック
  2. dev-fossil の VS Code のエクスプローラーで右クリック
  3. メニューにある 貼り付け をクリックして install-fossil.sh を dev-fossil 開発コンテナーへコピー
  4. dev-fossil の VS Code のエクスプローラーに貼り付けられた install-fossil.sh を右クリック
  5. メニューにある 統合ターミナル をクリックして dev-fossil の VS Code のターミナルを表示

準備ができたら dev-fossil 開発コンテナーの install-fossil.sh を実行します。手順に従っていれば、dev-fossil の VS Code のターミナルは install-fossil.sh があるディレクトリーがカレントディレクトリーとなっているので、下記コマンドで実行できます。

sh ./install-fossil.sh

インストールができたら、fossil コマンドをインストールした ${HOME}/.local/bin を環境変数 PATH へ追加します。ここでは、install-fossil.sh. コマンドで読み込めば良いです。

. ./install-fossil.sh

これで fossil コマンドが使えるようになります。動作確認には fossil version コマンドを実行してバージョンを表示してみると良いでしょう。

実行するコマンドについてまとめると次のようになります。バージョン表示の実行例も含めてあります。

root@ubuntu2204:~# sh ./install-fossil.sh
(略)
root@ubuntu2204:~# . install-fossil.sh 
root@ubuntu2204:~# fossil version
This is fossil version 2.23 [47362306a7] 2023-11-01 18:56:47 UTC

これで、fossil コマンドのインストールと動作確認ができました。

なお、ターミナルを新しく用意した場合は、環境変数 PATH には ${HOME}/.local/bin が含まれていないので、. install-fossil.sh を実行する必要があります。注意してください。

Node.js のインストール

Fossil を使ってみるときに、簡単な Node.js アプリのプロジェクトを生成してリポジトリへ入れてみるので、Node.js をインストールします。

インストールスクリプトが ${REPO_DIR}/devcontainer-script/install-node.sh にあるので、これを install-fossil.sh と同様に dev-fossil 開発コンテナーへコピーして実行します。

sh ./install-node.sh

インストールができたら node コマンドのバージョンを表示して動作することを確認します。

node --version

これらの実行例は次のようになります。

root@ubuntu2204:~# sh ./install-node.sh
Setting up nodejs (20.11.0-1nodesource1) ...
(略)
Processing triggers for libc-bin (2.35-0ubuntu3.6) ...
root@ubuntu2204:~# node --version
v20.11.0

node ユーザーの用意

fossil コマンドは一般ユーザーで実行されることが想定されているので、一般ユーザーを追加して使うことになります。dev-fossil 開発コンテナーをアタッチする VS Code は root ユーザーにアタッチしている環境なので、使い勝手があまりよくありませんが、ターミナルで簡単に実行できる範囲までしか調査しないので、困ることはあまりありません。

node ユーザーを開発コンテナーへ追加するには、${REPO_DIR}/devcontainer-script/useradd-node.sh にあるスクリプトを dev-fossil 開発コンテナーへコピーして実行します。スクリプトの次の内容の1行なので、これを実行しても良いです。

useradd -m node -s /bin/bash

また、後で ${REPO_DIR}/devcontainer-script/init-angular.sh を使うので、これもdev-fossil 開発コンテナーへコピーしてください。

それから install-fossil.shinit-angular.sh/home/node へコピーして node ユーザーが実行できるようにします。

cp /root/install-fossil.sh /home/node
cp /root/init-angular.sh /home/node

ファイルの用意ができたら、su コマンドでユーザーを変え、fossil コマンドをインストールし、それから環境変数 PATH を更新します。init-angular.sh はここでは実行しません。

su - node
sh /home/node/install-fossil.sh
. /home/node/install-fossil.sh

apt コマンドで fossil をインストールする方法

ここまでの手順通りに進めると node ユーザーで fossil コマンドが使えるようになっているはず。

ただし、開発コンテナーを一度破棄してから再起動をしたり、よくわからないエラーが出て fossil コマンドが使えないといったこともあるかと思います。その場合は、基本的に ${HOME}/.local/bin/fossil ファイルを rm コマンドで削除してから install-fossil.sh を実行しなおせば解決するはずです。

それでも解決しない場合もあるかもしれないので apt コマンドで fossil コマンドをインストールする方法も紹介しておきます。
 
 apt コマンドでインストールすると、install-fossil.sh スクリプトでインストールするものよりもバージョンが少し古い fossil コマンドが使えるようになります。

apt コマンドでインストール方法は、root ユーザーを使って、次のようにコマンド実行します。

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

インストールができたら、su コマンドで node ユーザーになって、fossil コマンドを使います。

su - node

なお、apt コマンドでインストールした場合は、環境変数 PATH の更新は必要ありません。Linux をよく知らない人には、こちらの方法でインストールして使ったほうが良いかもしれません。

ただし、開発コンテナーを破棄した場合は、fossil コマンドを再度インストールする必要があります。

リポジトリの新規作成と利用開始

Fossil のリポジトリを新規作成するには fossil new コマンドを使います。

fossil new <リポジトリファイル名>

リポジトリファイル名は、プロジェクト名.fossil のようにしておくと良いでしょう。Fossil ではリポジトリファイルは1つのファイルになるようです。ファイルサイズが大きくなったらどうなるのかが、少し気になります。

とはいえ、ファイルサイズが大きくなって管理しにくくなったら Git へ移行するというので良いだろうと個人的には考えています。

ここでは、proj001.fossil という名前で作ってみましょう。

fossil new proj001.fossil

コマンドの実行例は次の通りです。

node@ubuntu2204:~$ fossil new proj001.fossil
project-id: d9ced61d1f10b11893788254bea37361bea83505
server-id:  893a7a271cd99bac4b06f5113d4ffbc15c979845
admin-user: node (initial password is "CpqjAzNa5S")

リポジトリファイルを作ったら、ファイル編集ができるようにするために、ワーキングディレクトリーを用意します。

fossil open <リポジトリファイル名> --workdir <ワーキングディレクト名>

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

ここでは、ワーキングディレクトリー名をプロジェクト名の proj001 にして用意しましょう。

fossil open proj001.fossil --workdir proj001

コマンドの実行例は次の通りです。

node@ubuntu2204:~$ fossil open proj001.fossil --workdir proj001
project-name: <unnamed>
repository:   /home/node/proj001.fossil
local-root:   /home/node/proj001/
config-db:    /home/node/.fossil
project-code: d9ced61d1f10b11893788254bea37361bea83505
checkout:     d43179eb1f00286d2d9610691a0050865b76f964 2024-01-14 09:10:50 UTC
tags:         trunk
comment:      initial empty check-in (user: node)
check-ins:    1

ワーキングディレクトリーでのコードの準備

ワーキングディレクトリー proj001 で開発作業をするということで、プログラムコードを用意します。

ここでは README.md ファイルを echo コマンドで作成し、それから init-angular.sh スクリプトで Angular アプリの雛形を生成することにして、次のコマンドを実行します。

cd proj001
echo "# app-sample-minimal" > README.md
sh /home/node/init-angular.sh 

Angular アプリの雛形を生成する init-angular.sh スクリプトの内容は次のようになっています。これを使うことで、よく使われるアプリのコードのバージョン管理について、Fossil を使う場合はどうすれば良いか確認がしやすくなります。

init-angular.sh
#!/bin/sh
npm exec -y --package=@angular/cli -- \
  ng new \
    --interactive false \
    --defaults true \
    --skip-git \
    --minimal true \
    app-sample-minimal

なお、このスクリプトを実行すると、途中で ? Would you like to share pseudonymous usage data (略) と入力プロンプトになりますが、デフォルトで選択されている N のままで良いので Enter キーを入力して進めます。

実際に実行すると次のような結果になります。

node@ubuntu2204:~$ cd proj001 
node@ubuntu2204:~/proj001$ npm init -y 
Wrote to /home/node/proj001/package.json:
(略)
node@ubuntu2204:~/proj001$ npm exec -y --package=@angular/cli -- \
  ng new \
    --interactive false \
    --defaults true \
    --skip-git \
    --minimal true \
    app-sample-minimal
? Would you like to share pseudonymous usage data about this project with the Angular Team
at Google under Google's Privacy Policy at https://policies.google.com/privacy. For more
details and how to change this setting, see https://angular.io/analytics. (y/N)   ← N を入力
(略)
CREATE app-sample-minimal/src/assets/.gitkeep (0 bytes)
✔ Packages installed successfully.

バージョン管理をしないファイルの指定

バージョン管理をしないファイルについては、ワーキングディレクトリーの .fossil-settings/ignore-glob ファイルへ保存します。

ここでは app-sample-minimal/node_modules/* を指定します。* はワイルドカードです。

mkdir .fossil-settings/
echo 'app-sample-minimal/node_modules/*' > .fossil-settings/ignore-glob

バージョン管理されていないファイルの一覧

ここで fossil extras コマンドを使うと、バージョン管理の対象となっていないファイルを確認できます。このコマンドは、リポジトリからチェックアウトしたファイルではないすべてのファイルを一覧表示するものです。

fossil extras

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

extras コマンドには、以下のオプションがあります。

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

ドットで始まるファイル

ドット(.)で始まるファイルは特別なので、対象として扱いたいときは --dotfiles オプションをつけて fossil コマンドを使います。

fossil extras --dotfiles

--dotfiles をつけた場合とつけない場合とでは結果が変わります。

--dotfiles をつけない場合の結果は次の通りです。

node@ubuntu2204:~/proj001$ fossil extras
README.md
app-sample-minimal/README.md
(略)
app-sample-minimal/tsconfig.json

--dotfiles をつけた場合の結果は次の通りです。

node@ubuntu2204:~/proj001$ fossil extras --dotfiles
.fossil-settings/ignore-glob
README.md
app-sample-minimal/.gitignore
app-sample-minimal/.vscode/extensions.json
app-sample-minimal/.vscode/launch.json
app-sample-minimal/.vscode/tasks.json
app-sample-minimal/README.md
(略)
app-sample-minimal/tsconfig.json

ファイルのリポジトリへの追加

編集中のファイルについて、バージョン管理をする対象へ追加するには、fossil add コマンドを使います。

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

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

proj001 のファイルについて、README.md、ドットファイルを含まない app-sample-minimal のファイル、app-sample-minimal に含まれるドットファイル、という順で fossil add を使ってバージョン管理の対象にするには、次のようにコマンドを実行します。

fossil add README.md 
fossil add app-sample-minimal/
fossil add --dotfiles app-sample-minimal/

これらを実際に実行した時の結果は次のようになります。

node@ubuntu2204:~/proj001$ fossil add README.md 
ADDED  README.md
node@ubuntu2204:~/proj001$ fossil add app-sample-minimal/
ADDED  app-sample-minimal/README.md
ADDED  app-sample-minimal/angular.json
(略)
ADDED  app-sample-minimal/tsconfig.json
node@ubuntu2204:~/proj001$ fossil add --dotfiles app-sample-minimal/
ADDED  app-sample-minimal/.gitignore
ADDED  app-sample-minimal/.vscode/extensions.json
ADDED  app-sample-minimal/.vscode/launch.json
ADDED  app-sample-minimal/.vscode/tasks.json
ADDED  app-sample-minimal/src/assets/.gitkeep

状態を確認するには fossil status コマンドを使います。

fossil status

これを実際に実行した時の結果は次のようになります。

node@ubuntu2204:~/proj001$ fossil status
repository:   /home/node/proj001.fossil
local-root:   /home/node/proj001/
config-db:    /home/node/.fossil
checkout:     3fa87b1f9e18e75c9bb7f894ab35e12614ca435b 2024-01-14 10:03:10 UTC
tags:         trunk
comment:      initial empty check-in (user: node)
ADDED      README.md
ADDED      app-sample-minimal/.gitignore
ADDED      app-sample-minimal/.vscode/extensions.json
(略)

ファイルの内容を確定してリポジトリへ反映するには、fossil commit コマンドを使います。コミットするときは、-m オプションでコミット時のメッセージを指定します。

fossil commit -m "コミットメッセージ"

ここでは初めてのコミットなので init というコミットメッセージで実行してみましょう。

fossil commit -m "init"

実行結果は次のようになり、favicon.ico がバイナリーファイルだという警告がでます。

node@ubuntu2204:~/proj001$ fossil commit -m "init"
./app-sample-minimal/src/favicon.ico contains binary data. Use --no-warnings or the "binary-glob" setting to disable this warning.
Commit anyhow (a=all/y/N)?  ← デフォルトの N を選択するので、そのまま Enter キーを入力
Abandoning commit due to binary data in ./app-sample-minimal/src/favicon.ico

警告が出たファイルについては、fossil rm コマンドを使って削除します。このコマンドについては、後でまた取り上げます。これを実行しても、ADD の状態から削除されるだけで、ファイルそのものがワーキングディレクトリーから削除されるわけではありません。

fossil rm ./app-sample-minimal/src/favicon.ico

改めて fossil commit -m "init" を実行すると、今度はコミットが成功します。

node@ubuntu2204:~/proj001$ fossil commit -m "init"
New_Version: 2db5399089e9fb757f516fcf5e7b216e2108dcb5d2eb9832535899f4f2b774ca

バイナリーファイルの設定

調べたところ、バイナリファイルは文字列の検証処理から除外が必要なので、その設定をワーキングディレクトリーの .fossil-settings/binary-glob ファイルへ保存します。

ここでは *.ico*.jpg*.png を指定します。

echo '*.ico' >> .fossil-settings/binary-glob
echo '*.jpg' >> .fossil-settings/binary-glob
echo '*.png' >> .fossil-settings/binary-glob

次のように cat コマンドを使って binary-glob ファイルの内容を確認します。

node@ubuntu2204:~/proj001$ cat .fossil-settings/binary-glob
*.ico
*.jpg
*.png

それでは、.ico ファイルをリポジトリへの追加しましょう。今度は次のように成功するはずです。

node@ubuntu2204:~/proj001$ fossil add ./app-sample-minimal/src/favicon.ico                
ADDED  app-sample-minimal/src/favicon.ico
node@ubuntu2204:~/proj001$ fossil commit -m "add favicon.ico"
New_Version: e629cccf57846bc80675e938281fd2e35819b342a546bee3a4c7052500235c41

ファイル削除のリポジトリへの反映

ファイルを追加するだけでなく、ワーキングディレクトリーでファイルを削除して、それをリポジトリに反映したいときもあります。その場合は fossil rm コマンドを使います。

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

favicon.ico ファイルに対して使ったときのように、ADD した状態になっているファイルについて ADD の状態を取り消すときにも使います。

fossil rm コマンドと fossil add コマンドを同時に実行したいときも多いので、そのために fossil addremove コマンドというものも用意されています。

fossil addremove

ここでは、fossil addremove コマンドを試すために、README.md ファイルを削除し、sample.txt ファイルを新規作成します。

rm README.md
touch sample.txt

それでは、fossil addremove コマンドを実行してみましょう。ただし、実行した時にどういう結果になるかを見るために dry run で実行することにして、そのために -n オプションをつけます。

実行結果は次のようになります。

node@ubuntu2204:~/proj001$ fossil addremove -n           
ADDED  sample.txt
DELETED  README.md
added 1 files, deleted 1 files
Dry-run mode: no changes were made.

先程作成した .fossil-settings/binary-glob がありません。--dotfiles オプションもつけて実行してみます。すると、実行結果は次のようになります。

node@ubuntu2204:~/proj001$ fossil addremove --dotfiles -n
ADDED  .fossil-settings/binary-glob
ADDED  .fossil-settings/ignore-glob
ADDED  sample.txt
DELETED  README.md
added 3 files, deleted 1 files
Dry-run mode: no changes were made.

これで良さそうなので、確定しましょう。コマンドと実行結果は次のようになります。

node@ubuntu2204:~/proj001$ fossil addremove --dotfiles
ADDED  .fossil-settings/binary-glob
ADDED  .fossil-settings/ignore-glob
ADDED  sample.txt
DELETED  README.md
added 3 files, deleted 1 files
node@ubuntu2204:~/proj001$ fossil commit -m "2nd"
New_Version: ecf2a90366d17b69749d01675e69713d980faccdf09570f506312b66a47a88b8

Fossil の Web システム

Fossil は Web システムをコマンドですぐに実行できます。Web ブラウザで表示できるリポジトリ管理用の画面を提供する Web サーバーを起動してから、http://localhost:8080/ へアクセスすると Issue 機能や Wiki 機能が使える Web インタフェース画面が表示されます。

Fossil 用 Web インタフェースを提供するサーバーの起動

Fossil 用の Web インタフェースを提供するサーバーを起動するには fossil ui コマンドを次のように実行します。

fossil ui <リポジトリファイル名>

dev-fossil コンテナーでは ~/proj001.fossil ファイルというリポジトリファイルを用意したので、これを使ってみます。次のように実行します。

fossil ui ~/proj001.fossil 

実行結果は次の通りです。

node@ubuntu2204:~/proj001$ fossil ui ~/proj001.fossil 
Listening for HTTP requests on TCP port 8080
http://localhost:8080/

Docker ホストの Web ブラウザで http://localhost:8080/ へアクセスするとプロジェクト名が設定されていないという警告が表示された画面になります。http://localhost:8080/setup_config へアクセスするとプロジェクト名が指定できます。

「Project Name」の入力欄へ proj001 と入力してから、下の方にある「Apply Changes」というボタンをクリックするとプロジェクト名を proj001 へ更新できます。更新したら、Web ブラウザをリロードすると、プロジェクト名が表示された画面になります。

リポジトリのクローン

fossil clone コマンドで http://localhost:8080/ にあるリポジトリをクローンできるようになります。試してみましょう。

git clone <リポジトリの URL>  --workdir <ワーキングディレクトリー名> リポジトリファイル名

dev-fossil の VS Code で別のターミナルを起動して、~/repo ディレクトリーを用意して、そこで fossil clone コマンドを実行します。

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

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

実際のコマンドの実行結果は次のようになります。

root@ubuntu2204:~# su - node
node@ubuntu2204:~$ mkdir ~/repo
node@ubuntu2204:~$ cd ~/repo
node@ubuntu2204:~$ fossil clone http://localhost:8080/ --workdir proj001 proj001.fossil
Round-trips: 2   Artifacts sent: 0  received: 29
Clone done, wire bytes sent: 522  received: 118111  remote: 127.0.0.1
Rebuilding repository meta-data...
  100.0% complete...
Extra delta compression... none found
Vacuuming the database... 
project-id: 7ca68304a3c359a4d08bfc4a2b645e53691e1fa9
server-id:  18f02fb21f98f937481ed258c4563261e508df16
admin-user: node (password is "ik4qA7scw2")
opening the new proj001.fossil repository in directory proj001...
.fossil-settings/binary-glob
.fossil-settings/ignore-glob
app-sample-minimal/.gitignore
(略)
sample.txt
project-name: <unnamed>
repository:   /home/node/repo/proj001.fossil
local-root:   /home/node/repo/proj001/
config-db:    /home/node/.fossil
project-code: 7ca68304a3c359a4d08bfc4a2b645e53691e1fa9
checkout:     ecf2a90366d17b69749d01675e69713d980faccd 2024-01-14 11:10:29 UTC
parent:       e629cccf57846bc80675e938281fd2e35819b342 2024-01-14 10:51:56 UTC
tags:         trunk
comment:      2nd (user: node)
check-ins:    4

おわりに

以上、簡単ですが、dev-fossil 開発コンテナーを使って Fossil について動作確認も含めての調査ができました。調査の作業が終わったら、dev-fossil 開発コンテナーのクリーニングをします。

dev-fossil 開発コンテナーのクリーニングをするには、次のように Docker ホストで fossil-clean.sh スクリプトを実行します。シェルスクリプトが実行できない OS を Docker ホストで使っている場合は、相当する処理を手作業で実行してください。基本的にスクリプト内にある docker コマンドの部分を実行すれば大丈夫です。なお、クリーニングしても良い状態にしてから、実行するようにしてください。

cd ${REPO_DIR}
sh script/fossil-clean.sh

このスクリプトは、dev-fossil 開発コンテナーが使っていた Docker ボリュームと Docker ネットワークといったリソースについて、完全に破棄します。実行すると、開発コンテナーを破棄してから、Docker ボリュームと Docker ネットワークも破棄します。

開発コンテナーのおかげで、Docker ホストである普段つかている環境はクリーンなままです。開発コンテナーは便利ですね。

Discussion