Documentation

Fossil Web インターフェース

fossil の革新的な機能の一つに、組み込みの Web インターフェースがあります。 このインターフェースはソフトウェア開発プロジェクトに必要な全ての機能を提供します:

これら全てや、それ以上のものを fossil を利用することで得ることができます。 そのために別のプログラムをインストールやセットアップする必要はありません。 唯一すべきことは、スタンドアローンな fossil の実行ファイルを用意するだけです。

この Web インターフェースがどれだけ使いやすいかを示しましょう。 このfossil Web サイトには (ダウンロードページを除いて) 今読んでいるドキュメントも含めて、fossil の標準的な(少しカスタマイズした) web インターフェースで表示されています。

fossil は分散システムであるため、Web インターフェースをオフライン状態の マシン上でローカルに立ち上げて利用することもできるのを覚えておいて下さい。 もちろん、変更のコミットも wiki ページの編集も トラブルチケットの発行も可能です。 あとはネットワークに接続できるようになってから同僚と同期すればよいです。

簡単なスタートアップ

既にある fossil リポジトリについて Web インターフェースを利用したいならば 次のようにコマンドを発行します:

fossil ui existing-repository.fossil

ここでリポジトリの名前は適切に変更してください。 "ui" コマンドは Web サーバを実行(使っているTCPポートを表示)すると共に、 自動的にWebブラウザを立ち上げて該当のサーバに接続します。 また、チェックアウトフォルダに居る場合にはリポジトリ名を省略できます:

fossil ui

後者の方法は、fossil のプロジェクトで作業をしており、何らかの web インターフェース作業をしたくなった時に大変便利です。 fossil は自動的にサーバ用の空きポートを見付け、ブラウザでそこを開きます。 そのため、ポートの指定間違いやブラウザへのアドレス入力ミスなどは起きません。 インターフェースがポップアップし、利用する準備ができます。

fossil web インターフェースはネットワークサーバとして設定することも簡単です。 CGI あるいは inetd サービスとして運用することができます。 これらの詳細については以下で説明します。

Web インターフェースを利用する

プロジェクトの変更に関しては timelines から見ることができます。 デフォルトの "Timeline" リンク(メニューバーにある)からは最近の 20回分の チェックイン、wiki ページ編集、チケット・バグレポートの変更などについて 見ることができます。 これらはプロジェクトで最近何が起きたかを確認するのに非常に便利な道具となります。 また、必要があれば、より以前の内容についても確認することができます。 その他、ハイパーリンクを辿ることで、チェックイン・ページ編集・チケット変更に 関しての詳細や diff の表示などを行うこともできます。

メニューバーの "Tickets" リンクから、バグレポートやチケットの編集を 行うことができます。 fossil はSQLデータベースを背後に持つため、適当な権限を持つユーザは新しい チケット表示用のSQLステートメントを作成することもできます。 fossil はチケットレポートフォーマットを注意深く取り扱い(SELECT 文の実行のみを 許可します)、また(パスワード等の)センシティブなデータへのアクセスを制限します。 そのため、インターネットの匿名ユーザが自身のチケットフォーマットを作ったとしても 安全です。 チケットフォーマットの閲覧、作成に加えて、チケットの作成、要約の表示、 チケット操作履歴の確認なども行えます。 これらに関する変更は、次回の同期の際に同僚のリポジトリと自動的に同期されます。

メニューバーの "wiki" リンクからは wiki の閲覧と編集ができます。 fossil は、新規なマークアップを覚えるために時間を無駄にしないように、 単純かつ覚えやすいフォーマットルール を採用しています。 チケットの時と同様、wiki についても変更点は自動的に同僚のリポジトリと 同期されます。

また、メニューバーの "Leaves" や "Branches" リンクからはリーフとブランチ に関する要約レポートや、チェックインのグラフを見ることができます。 これらのページからは詳細を知るためにハイパーリンクを辿ることができます。 これらの画面により、プロジェクトチームのサブチームがどのような作業をしているか 見てとることができます。

"Files" リンクからは、プロジェクトのファイル構造を見ることができ、 個々のファイルに関する完全な履歴を調査したり、バージョン間の diff を取ることができます。

web インターフェースは埋め込みドキュメントをサポートしています。 埋め込みドキュメントは(通常はwikiフォーマットの)ドキュメントファイルであり、 ソースツリーの一部としてプロジェクトにチェックインされます。 これらのドキュメントは通常のWebページと同様に閲覧できます。 今読者が読んでいるこのページも埋め込みドキュメントの一つの例です。

Webインターフェースの外観の変更

権限を持つユーザは、Web インターフェースの "Admin" リンクから 外観を変更することができます。 各ページのヘッダやフッタのテンプレートも、ページ全体に関する CSS のように 編集することができます。メインメニューさえも変更できるのです。 また、タイムラインの表示も編集できます。"Home"としてのページも変更できます。 "Home"ページのwiki や埋め込みドキュメントへの変更は便利でしょう。

ネットワークサーバとしてのインストール

新規の fossil プロジェクトを準備し、設定を終わらせると、そのプロジェクトを サーバ上に公開してメンバーから利用可能にするためにすべきことは、CGI サーバへの リポジトリファイルの転送だけです。 sample-project.fossil ファイルをCGIスクリプトの動くフォルダへ転送し、 ファイルとフォルダへ読み書き権限を与え、次のようなCGIスクリプトを用意します:

  #!/usr/local/bin/fossil
  repository: /home/www/sample-project.fossil
  

当然ながら、システムの環境に合わせてパス等を変更してください。 そして、fossil バイナリをサーバにインストールします。 これが必要な全てです。読者は分散ソフトウェア開発プロジェクトを 5分以下、わずか2行のスクリプトを書くだけでホスティングしました。

サーバマシンに CGI が使えるものが無い場合にはどうしましょう? 問題ありません。fossil のインターフェースは inetd/xinetd でも利用できます。 inetd における fossil の起動コマンドは次のようになります:

  80 stream tcp nowait.1000 root /usr/local/bin/fossil \
  /usr/local/bin/fossil http /home/www/sample-project.fossil
  

いつも通り、パス等はシステムに合わせて適切に調整してください。 xinetd での設定は多少異なりますが、根本的には同じことです。

一旦リポジトリがネットワークサーバ上で動きだしたら、ローカルマシン上にある オリジナルのリポジトリは削除して下さい。その後、サーバからリポジトリを 次のようにしてクローンします:

fossil clone http://user:password@myserver.org/cgi-bin/my-project

(当然ながら、URL等はインストール環境に合わせます。) リポジトリのコピーが終われば、他のマシンへの再クローンにも使えます。 各リポジトリはランダムな "リポジトリID"を持っており、同じIDを持つ 他のリポジトリへの同期は(ループを防ぐために)行わないのです。 このクローンによって、ローカルのリポジトリは新しい ID を持つようになり、 サーバのリポジトリと同期できるようになります。