質問と批評
このページはfossilに対して挙げられた質問と批評および、それらに対する 作者からの回答のコレクションです。
付記:この他よくある質問も参照してください。
Fossilは車輪の再発明のように見える。 なぜ、自分用の分散VCSを作ったのですか?Tracよりもfossilを使うべきなのはどうしてですか?私が fossil を書いたのは、私の要求に合う分散VCSが無かったからです。 もし他の分散VCSがあなたの要求に合致するなら、fossil ではなくそちらを 利用するのがいいでしょう。しかしながら、私に合うものはなかったのです。 そのため、私には fossil が必要だったのです。
fossil に有り、他では見た事の無い機能は次の通りです。
- 統合されたwiki
- 統合されたバグトラッキング
- 変更されないアーティファクト
- chroot jail環境でも 利用が可能な、スタンドアローンな実行ファイル
- 単純でよく定義された 耐性の強いファイルフォーマット
- 統合されたwebインターフェース
素晴しいコンセプトです。実際の仕事でも使われているんですか?
- Fossil は分散化されています。オフラインでチケット、Wiki、コードを 閲覧・編集して、後から変更を同期できるのです。Trac の場合、サーバに 接続していても、チケットとWikiを閲覧・編集できるだけです。
- Fossil は軽量で、単一のファイルに全てを含んでいます。そのため、 リソースの少ないマシンにも簡単にインストールできます。また、Fossil は 管理者(訳注:の権限)を必要としません。
- Fossil はWikiとチケットのリポジトリをコードのバージョン管理と 統合しています。そのため、追加のインストール作業を必要としません。 Fossil は全てを含んだ簡易なソリューションなのです。
Fossil は自己ホスティングしています。 事実、おそらくこのページは動作中のfossilのインスタンスからWebブラウザへ 送信されているでしょう。(訳注:日本語版は通常のWebサーバ上にあります) http://www.fossil-scm.org/ をホストしているのと同一のマシン上で Linode 720に加えて24もの小さな プロジェクトのfossilリポジトリがホストされています。 また、SQLiteのドキュメントも ここのfossilリポジトリにあります。 他のプロジェクトでもfossilに合うものがあるでしょう。しかし、fossilはまだ git や mercurial のような大量のユーザベースで使われたことはありません。Fossil はLinksysのルータが出す管理スクリーンみたいに、バグトラッカーの ように見えるのですが?
バグトラッキングデータベースをバージョン管理されたファイルへ読み書きする アプリケーションを分離して、そのファイルを残りのリポジトリへ書き込むように すると、より便利になるように思うのですが?私はソフトウェア作成に、形状は機能に付随するという実践的なアプローチを 取っています。私にとっては見栄えよりも、信頼性のある、速く、効率的な、 高耐久の、シンプルなDVCSであることの方が重要なのです。
そのため、もしあなたが信頼性、パフォーマンス、メンテナンス性に深刻な 影響を与えずに見栄えを改善するパッチを用意してくださるなら、喜んで 受理するつもりです。Fossilは自分でホスティングしていますので、メインの fossilリポジトリにコードをコミットするためのパスワードはメールで 要求してください。
Fossil とは、plan9 の追加専用バージョン管理ファイルシステムの名前なのですが?Fossil はバグ情報をリポジトリ内のファイルに格納します。 しかし、fossil はバグ情報をソースツリー上のファイルとしては扱いません。 ご指摘のバグトラッキングアプローチは次の3つの理由により適さないと考えます。
- Fossil でのチェックインは不変です。そのため、チケットがチェックインの 一部であると、新しいバグが発見された時などに新規のチケットを追加できなく なってしまいます。
- 適当なサイズと複雑さを持つプロジェクトの場合、何千何万ものチケットが 生成されます。これらによってソースツリーをぐちゃぐちゃにしたくありません。
- チケットの管理にはWebインターフェイスを使い、コードのチェックインとは 別の認証情報を利用したいのです。つまり、チケットの作成と編集を、fossilが インストールされていたり、チェックイン権限を持つ開発者であったりといった 点によって制限されたくないのです。インターネットを通りがかっただけの人でも チケットの作成ができるべきなのです。
これらの点についてはバグトラッキング ドキュメントの最初の段落にも書いてあります。
私はそのことを知りませんでした。おそらく、その命名も私と同じように 「不変のアーティファクトで構成されるリポジトリは、長く続くプロジェクトの 歴史を表す素晴しい化石である」という考えからなのでしょう。リポジトリをSQLiteデータベースのように、Blob(Binary Large OBject)として 保存するのは危険な気がするのですが?
SQLiteをリポジトリの保存に利用しようと思ったのは、他のアプローチに比べて 安定性と安全性が高かったことに加え、SQLiteがトランザクションをサポート していたためです。なお、Fossilでは情報の欠落が起こらないように、内部の 自己チェックを実装しています。私はwikiやバグトラッキングをVCSに含めることの効果が疑わしいと思います。 それはTracのようにフル機能なソフトウェアより機能で劣り、SubversionやBazaarの ようなVCSよりも大きなサイズになるでしょう。
私はTracがfossilに欠けている機能がより多く含まれていることは疑いません。 しかしながら、重要なのはその点ではないのです。Fossilには私にとってTracに 欠けているいくつかの重要な機能(特に非接続状態での作業)が含まれています。
サイズの増大については、Fossil 単体で全てを含んでいることを考慮して頂きたい。 Fossilを利用する場合、他にどのようなパッケージ(diff、patch、merge、cvs、svn、 rcs、git、python、perl、tcl、apache、sqliteなどなど)も不要なのです。 Fossil はchroot閉鎖環境であっても、それ単独で動作します。 そして、全部を含んでいても 1MB弱くらいのサイズなのです。 これらを考慮すると、fossilはサイズが大きいとは言えないでしょう。