「Fossil」の版間の差分
(setup_config) |
|||
1行目: | 1行目: | ||
[[Category:IT]] | [[Category:IT]] | ||
==About== | |||
===About=== | |||
*[https://gigazine.net/news/20231231-why-sqlite-does-not-use-git/ SQLiteがバージョン管理システムとしてGitを採用しない理由 - GIGAZINE] | |||
=== About === | *[https://gigazine.net/news/20201229-fossil/ GitとGitHubの機能をひとつのバイナリに詰め込んだ「Fossil」レビュー - GIGAZINE] | ||
* [https://gigazine.net/news/20231231-why-sqlite-does-not-use-git/ SQLiteがバージョン管理システムとしてGitを採用しない理由 - GIGAZINE] | |||
* [https://gigazine.net/news/20201229-fossil/ GitとGitHubの機能をひとつのバイナリに詰め込んだ「Fossil」レビュー - GIGAZINE] | |||
外部依存を排除しており、CGIでも動作するという点が非常に良い。気になる。Phorgeの検討が不要になる。 | 外部依存を排除しており、CGIでも動作するという点が非常に良い。気になる。Phorgeの検討が不要になる。 | ||
25行目: | 24行目: | ||
</html> | </html> | ||
=== Fossil Concepts === | ===Fossil Concepts=== | ||
[https://fossil-scm.org/home/doc/trunk/www/concepts.wiki Fossil: Fossil Concepts] | [https://fossil-scm.org/home/doc/trunk/www/concepts.wiki Fossil: Fossil Concepts] | ||
=== Adding Features To Fossil === | ===Adding Features To Fossil=== | ||
[https://fossil-scm.org/home/doc/trunk/www/adding_code.wiki Fossil: Adding Features To Fossil] | [https://fossil-scm.org/home/doc/trunk/www/adding_code.wiki Fossil: Adding Features To Fossil] | ||
=== Fossil Settings === | ===Fossil Settings=== | ||
[https://fossil-scm.org/home/doc/trunk/www/settings.wiki Fossil: Fossil Settings] | [https://fossil-scm.org/home/doc/trunk/www/settings.wiki Fossil: Fossil Settings] | ||
fossil setingsかWeb UIの[Admin]-[Settings]からfossilの設定を変更できる。リポジトリー毎の設定。 | fossil setingsかWeb UIの[Admin]-[Settings]からfossilの設定を変更できる。リポジトリー毎の設定。 | ||
=== Glossary === | ===Glossary=== | ||
[https://fossil-scm.org/home/doc/trunk/www/glossary.md Fossil: Glossary] | [https://fossil-scm.org/home/doc/trunk/www/glossary.md Fossil: Glossary] | ||
コマンドという概念がある。fossilのコマンドの引数に指定するサブコマンド。これがWebバージョンもある。Web版の場合/commandのように、URLの最後に/をつける模様。 | コマンドという概念がある。fossilのコマンドの引数に指定するサブコマンド。これがWebバージョンもある。Web版の場合/commandのように、URLの最後に/をつける模様。 | ||
== Install == | ==Install== | ||
=== Binary === | ===Binary=== | ||
[https://fossil-scm.org/home/doc/trunk/www/index.wiki Fossil: A Coherent Software Configuration Management System] | [https://fossil-scm.org/home/doc/trunk/www/index.wiki Fossil: A Coherent Software Configuration Management System] | ||
54行目: | 53行目: | ||
ln -fns ../stow/fossil-$VER/fossil ../../bin/ | ln -fns ../stow/fossil-$VER/fossil ../../bin/ | ||
== Server == | ==Server== | ||
=== How CGI Works In Fossil === | ===How CGI Works In Fossil=== | ||
[https://fossil-scm.org/home/doc/trunk/www/aboutcgi.wiki Fossil: How CGI Works In Fossil] | [https://fossil-scm.org/home/doc/trunk/www/aboutcgi.wiki Fossil: How CGI Works In Fossil] | ||
=== How To Configure A Fossil Server === | ===How To Configure A Fossil Server=== | ||
[https://fossil-scm.org/home/doc/tip/www/server/ Fossil: How To Configure A Fossil Server] | [https://fossil-scm.org/home/doc/tip/www/server/ Fossil: How To Configure A Fossil Server] | ||
Fosilをサーバーとして稼働させる場合、可能な方式がいくつかある。 | Fosilをサーバーとして稼働させる場合、可能な方式がいくつかある。 | ||
* CGI | *CGI | ||
* FastCGI: OpenBSDのみ。 | *FastCGI: OpenBSDのみ。 | ||
* server: fossil server | *server: fossil server | ||
* SCGI: fossil server実行時。 | *SCGI: fossil server実行時。 | ||
共用サーバーの場合、ほぼCGIのみ。サーバーがOpenBSDならFastCGIもOK。パフォーマンス優先なら単独サーバーかSCGI。基本はCGIでいいと思う。リポジトリーだからそんなに頻繁にアクセス来ないと思う。 | 共用サーバーの場合、ほぼCGIのみ。サーバーがOpenBSDならFastCGIもOK。パフォーマンス優先なら単独サーバーかSCGI。基本はCGIでいいと思う。リポジトリーだからそんなに頻繁にアクセス来ないと思う。 | ||
75行目: | 74行目: | ||
fossilのweb uiではリポジトリーの新規作成ができない。新規作成だけはコマンドラインから行う必要がある。これだけがいまいち。 | fossilのweb uiではリポジトリーの新規作成ができない。新規作成だけはコマンドラインから行う必要がある。これだけがいまいち。 | ||
=== CGI === | ===CGI=== | ||
[https://fossil-scm.org/home/doc/tip/www/server/any/cgi.md Fossil: Serving via CGI] | [https://fossil-scm.org/home/doc/tip/www/server/any/cgi.md Fossil: Serving via CGI] | ||
99行目: | 98行目: | ||
これで <nowiki>[http://mydomain.org/fossil/repoX]</nowiki> でアクセスする感じになる。これがいい。こういう方式にしておくと、既存のサイトにfossilを配置するだけでfossilのホストも可能になる。 | これで <nowiki>[http://mydomain.org/fossil/repoX]</nowiki> でアクセスする感じになる。これがいい。こういう方式にしておくと、既存のサイトにfossilを配置するだけでfossilのホストも可能になる。 | ||
=== Configure === | ===Configure=== | ||
[https://fossil-scm.org/home/doc/tip/www/cgi.wiki Fossil: CGI Script Configuration Options] | [https://fossil-scm.org/home/doc/tip/www/cgi.wiki Fossil: CGI Script Configuration Options] | ||
127行目: | 126行目: | ||
サブディレクトリーを再帰して、*.fossilを表示するが以下の例外がある。 | サブディレクトリーを再帰して、*.fossilを表示するが以下の例外がある。 | ||
* .で始まるファイルは隠しファイル扱いでスキップ。 | *.で始まるファイルは隠しファイル扱いでスキップ。 | ||
* .fossilのベース名と同じディレクトリーがある場合、リストは表示されるがリンクにはならない。例えば、XYZとXYZ.fossilが同じ階層にある場合。大文字・小文字無視。この場合、ベース名の異なるディレクトリーに移動させる。 | *.fossilのベース名と同じディレクトリーがある場合、リストは表示されるがリンクにはならない。例えば、XYZとXYZ.fossilが同じ階層にある場合。大文字・小文字無視。この場合、ベース名の異なるディレクトリーに移動させる。 | ||
|- | |- | ||
| | | | ||
192行目: | 191行目: | ||
repolistはディレクトリー単位の表示はできず、dirにアクセスするとnotfoundになる。notfoundで/か/fossilの一覧ページを指定したほうがよさそう。 | repolistはディレクトリー単位の表示はできず、dirにアクセスするとnotfoundになる。notfoundで/か/fossilの一覧ページを指定したほうがよさそう。 | ||
== Usage == | ==Usage== | ||
=== Quick === | ===Quick=== | ||
[https://fossil-scm.org/home/doc/trunk/www/quickstart.wiki Fossil: Fossil Quick Start Guide] | [https://fossil-scm.org/home/doc/trunk/www/quickstart.wiki Fossil: Fossil Quick Start Guide] | ||
プロジェクトの基本作業。 | プロジェクトの基本作業。 | ||
==== Starting A New Project ==== | ====Starting A New Project==== | ||
以下のコマンドで空のfossilリポジトリーを作成する。 | 以下のコマンドで空のfossilリポジトリーを作成する。 | ||
fossil init repository-filename | fossil init repository-filename | ||
215行目: | 214行目: | ||
fossil user password <username> [<password>] | fossil user password <username> [<password>] | ||
==== Checking Out A Local Tree ==== | ====Checking Out A Local Tree==== | ||
まず、ツリーのルートとなるディレクトリーを作成して、fossil openでDBからローカルコピーをチェックアウトする。 | まず、ツリーのルートとなるディレクトリーを作成して、fossil openでDBからローカルコピーをチェックアウトする。 | ||
fossil open ../myclone.fossil | fossil open ../myclone.fossil | ||
231行目: | 230行目: | ||
updateはローカルの変更を対象バージョンにマージする。checkoutはマージせず、ローカルの変更を上書きする。 | updateはローカルの変更を対象バージョンにマージする。checkoutはマージせず、ローカルの変更を上書きする。 | ||
==== Making and Committing Changes ==== | ====Making and Committing Changes==== | ||
以下のコマンドでファイルの追加・削除ができる。 | 以下のコマンドでファイルの追加・削除ができる。 | ||
fossil add file... | fossil add file... | ||
257行目: | 256行目: | ||
リモートリポジトリーからクローンしている場合、デフォルトで自動同期モードになっているので自動的にリモートにも同期する。 | リモートリポジトリーからクローンしている場合、デフォルトで自動同期モードになっているので自動的にリモートにも同期する。 | ||
==== Branching And Merging ==== | ====Branching And Merging==== | ||
新しいブランチの開始には、commit --branchを実行する。Fossilではブランチはコミット時に作成する。ただ、必要に応じてコミット前にbranch newでも作成できる。 | 新しいブランチの開始には、commit --branchを実行する。Fossilではブランチはコミット時に作成する。ただ、必要に応じてコミット前にbranch newでも作成できる。 | ||
269行目: | 268行目: | ||
redoもある。 | redoもある。 | ||
=== Branching, Forking, Merging, and Tagging === | ===Branching, Forking, Merging, and Tagging=== | ||
[https://fossil-scm.org/home/doc/trunk/www/branching.wiki Fossil: Branching, Forking, Merging, and Tagging] | [https://fossil-scm.org/home/doc/trunk/www/branching.wiki Fossil: Branching, Forking, Merging, and Tagging] | ||
292行目: | 291行目: | ||
自動的に検知してくれる。 | 自動的に検知してくれる。 | ||
=== Get === | ===Get=== | ||
基本的な使用方法 | 基本的な使用方法 | ||
# clone | # clone | ||
304行目: | 303行目: | ||
上記コマンドでファイルを取得する。Fossilは1ファイルで管理するので、cloneだと取得しきれない可能性がある。中断した場合などはsyncで再取得する。再取得後、反映されない場合、rebuildで取得データからDBを再構築する。 | 上記コマンドでファイルを取得する。Fossilは1ファイルで管理するので、cloneだと取得しきれない可能性がある。中断した場合などはsyncで再取得する。再取得後、反映されない場合、rebuildで取得データからDBを再構築する。 | ||
=== Empty === | ===Empty=== | ||
fossilをcloneすると空で、Web UIで [cannot resolve name: trunk] と表示されることがある。これは、リポジトリーのクローンが失敗している。 | fossilをcloneすると空で、Web UIで [cannot resolve name: trunk] と表示されることがある。これは、リポジトリーのクローンが失敗している。 | ||
313行目: | 312行目: | ||
これで解決した。 | これで解決した。 | ||
=== Import And Export === | ===Import And Export=== | ||
情報源=[https://fossil-scm.org/home/doc/trunk/www/inout.wiki Fossil: Import And Export] | 情報源=[https://fossil-scm.org/home/doc/trunk/www/inout.wiki Fossil: Import And Export] | ||
FossilにはGitのインポート・エクスポート機能がある。Gitに他のVCSのインポート・エクスポート機能があるので、Gitを経由して他のいろんなVCSをfossilとインポート・エクスポート可能。 | FossilにはGitのインポート・エクスポート機能がある。Gitに他のVCSのインポート・エクスポート機能があるので、Gitを経由して他のいろんなVCSをfossilとインポート・エクスポート可能。 | ||
==== Git → Fossil ==== | ====Git → Fossil==== | ||
以下のコマンドでインポート・取り込める。 | 以下のコマンドでインポート・取り込める。 | ||
cd git-repo | cd git-repo | ||
326行目: | 325行目: | ||
--gitを指定しているが、実際は不要。なぜなら、Fossilが対応している他のリポジトリーはgitだけだから。ただし、将来的に他のリポジトリーにも対応するかもしれないので、互換性のために一応--gitを指定しておく。 | --gitを指定しているが、実際は不要。なぜなら、Fossilが対応している他のリポジトリーはgitだけだから。ただし、将来的に他のリポジトリーにも対応するかもしれないので、互換性のために一応--gitを指定しておく。 | ||
==== Fossil → Git ==== | ====Fossil → Git==== | ||
Fossilリポジトリーのgitへの変換は以下のコマンド。 | Fossilリポジトリーのgitへの変換は以下のコマンド。 | ||
git init new-repo | git init new-repo | ||
332行目: | 331行目: | ||
fossil export --git ../repo.fossil | git fast-import | fossil export --git ../repo.fossil | git fast-import | ||
==== Mirror A Fossil Repository In Git ==== | ====Mirror A Fossil Repository In Git==== | ||
Fossil v2.9からFossilリポジトリーのgitまたはGitHubへのミラーリングに対応している。Fossilは元々自己ホスト可能だが、この機能でGitHubでのホストも可能になる。 | Fossil v2.9からFossilリポジトリーのgitまたはGitHubへのミラーリングに対応している。Fossilは元々自己ホスト可能だが、この機能でGitHubでのホストも可能になる。 | ||
==== Bidirectional Synchronization ==== | ====Bidirectional Synchronization==== | ||
Gitとの同期機能もある。マークファイルを使用して行う。 | Gitとの同期機能もある。マークファイルを使用して行う。 | ||
368行目: | 367行目: | ||
わかりにくいからあまりしたくない。 | わかりにくいからあまりしたくない。 | ||
==== インポートの再開 ==== | ====インポートの再開==== | ||
https://chatgpt.com/c/676fb751-f140-800b-b27b-22d683926e3e | https://chatgpt.com/c/676fb751-f140-800b-b27b-22d683926e3e | ||
インポートが途中で中断された場合。ややこしい。fossil importは1回のコマンドで完了する設計になっているから。途中から再開する機能は直接はない。工夫が必要。 | インポートが途中で中断された場合。ややこしい。fossil importは1回のコマンドで完了する設計になっているから。途中から再開する機能は直接はない。工夫が必要。 | ||
# gitリポジトリー側のコミットログをフィルターして必要な部分だけ残す。 | #gitリポジトリー側のコミットログをフィルターして必要な部分だけ残す。 | ||
# fossilに一部インポート済みの場合、インポート後の履歴をformat-patchでファイルに出力して、それをfossil patch applyで取り込む。 | #fossilに一部インポート済みの場合、インポート後の履歴をformat-patchでファイルに出力して、それをfossil patch applyで取り込む。 | ||
# 何回かに分けて、fossilのリポジトリーにインポート後、fossilのマージ機能で1個のfossilリポジトリーにマージ。 | #何回かに分けて、fossilのリポジトリーにインポート後、fossilのマージ機能で1個のfossilリポジトリーにマージ。 | ||
はっきりいって面倒だから、ローカルPCで履歴を全部取得して、fossilに取り込んで、取り込んだDBを転送した方が確実。 | はっきりいって面倒だから、ローカルPCで履歴を全部取得して、fossilに取り込んで、取り込んだDBを転送した方が確実。 | ||
=== Git to Fossil Translation Guide === | ===Git to Fossil Translation Guide=== | ||
[https://fossil-scm.org/home/doc/trunk/www/gitusers.md Fossil: Git to Fossil Translation Guide] | [https://fossil-scm.org/home/doc/trunk/www/gitusers.md Fossil: Git to Fossil Translation Guide] | ||
==== Repositories and Checkouts Are Distinct ==== | ====Repositories and Checkouts Are Distinct==== | ||
Fossilではリポジトリーとチェックアウトは明確に区別されている。gitの場合、.gitのあるディレクトリーで管理しているので、複数のチェックアウトを展開できない。 | Fossilではリポジトリーとチェックアウトは明確に区別されている。gitの場合、.gitのあるディレクトリーで管理しているので、複数のチェックアウトを展開できない。 | ||
== Help == | ==Help== | ||
[[https://fossil-scm.org/home/help Fossil: Help]] にFossilのコマンド、Web UIページ、設定が一覧されている。 | [[https://fossil-scm.org/home/help Fossil: Help]] にFossilのコマンド、Web UIページ、設定が一覧されている。 | ||
数が多いので特に重要なものを整理する。 | 数が多いので特に重要なものを整理する。 | ||
=== Available web UI pages: === | ===Available web UI pages:=== | ||
FossilのWeb UIページ。リポジトリーに対して/<page>の形式でアクセスする。ページ毎に?のクエリーパラメーターを受け付けるものがある。 | FossilのWeb UIページ。リポジトリーに対して/<page>の形式でアクセスする。ページ毎に?のクエリーパラメーターを受け付けるものがある。 | ||
==== artifact file whatis ==== | ====artifact file whatis==== | ||
* [https://fossil-scm.org/home/help?cmd=/artifact Fossil: Help: /artifact] | *[https://fossil-scm.org/home/help?cmd=/artifact Fossil: Help: /artifact] | ||
* [https://fossil-scm.org/home/help?cmd=/file Fossil: Help: /file] | *[https://fossil-scm.org/home/help?cmd=/file Fossil: Help: /file] | ||
* [https://fossil-scm.org/home/help?cmd=/whatis Fossil: Help: /whatis] | *[https://fossil-scm.org/home/help?cmd=/whatis Fossil: Help: /whatis] | ||
fileが特に重要。[Code]タブからファイルをクリックした際に使用する。ファイルの中身を表示する。?txtを指定することでfossilのレンダーリングなしでtxtで表示する。 | fileが特に重要。[Code]タブからファイルをクリックした際に使用する。ファイルの中身を表示する。?txtを指定することでfossilのレンダーリングなしでtxtで表示する。 | ||
==== download ==== | ====download==== | ||
[https://fossil-scm.org/home/help?cmd=/download Fossil: Help: /download] | [https://fossil-scm.org/home/help?cmd=/download Fossil: Help: /download] | ||
最新ソースのtar玉とZIP提供の簡単なダウンロードページを提供する。 | 最新ソースのtar玉とZIP提供の簡単なダウンロードページを提供する。 | ||
==== home index not_found ==== | ====home index not_found==== | ||
* [https://fossil-scm.org/home/help?cmd=/home Fossil: Help: /home] | *[https://fossil-scm.org/home/help?cmd=/home Fossil: Help: /home] | ||
setup_configで指定したホームページにリダイレクトするスタブページ。 | setup_configで指定したホームページにリダイレクトするスタブページ。 | ||
==== uv ==== | ====uv==== | ||
[https://fossil-scm.org/home/help?cmd=/uv Fossil: Help: /uv] | [https://fossil-scm.org/home/help?cmd=/uv Fossil: Help: /uv] | ||
バージョン管理していないファイルを表示する。 | バージョン管理していないファイルを表示する。 | ||
==== sqlar tarball zip ==== | ====sqlar tarball zip==== | ||
* [https://fossil-scm.org/home/help?cmd=/sqlar Fossil: Help: /sqlar] | *[https://fossil-scm.org/home/help?cmd=/sqlar Fossil: Help: /sqlar] | ||
* [https://fossil-scm.org/home/help?cmd=/tarball Fossil: Help: /tarball] | *[https://fossil-scm.org/home/help?cmd=/tarball Fossil: Help: /tarball] | ||
* [https://fossil-scm.org/home/help?cmd=/zip Fossil: Help: /zip] | *[https://fossil-scm.org/home/help?cmd=/zip Fossil: Help: /zip] | ||
指定したチェックインの該当アーカイブファイルを応答する。 | 指定したチェックインの該当アーカイブファイルを応答する。 | ||
==== setup ==== | ====setup==== | ||
===== setup_config ===== | =====setup_config===== | ||
[https://fossil-scm.org/home/help?cmd=/setup_config Fossil: Help: /setup_config] | [https://fossil-scm.org/home/help?cmd=/setup_config Fossil: Help: /setup_config] | ||
Admin/Configurationページ。プロジェクト名などを設定できる。Homeの初回アクセス時に表示される。 | Admin/Configurationページ。プロジェクト名などを設定できる。Homeの初回アクセス時に表示される。 | ||
[[ファイル:Fossil.gnusocial.jp fossil gnusocial setup config.png]] | [[ファイル:Fossil.gnusocial.jp fossil gnusocial setup config.png]] | ||
476行目: | 461行目: | ||
|tar玉かZIPアーカイブ生成時の名前の接頭辞。/\のような特殊文字は避けたほうがいい。 | |tar玉かZIPアーカイブ生成時の名前の接頭辞。/\のような特殊文字は避けたほうがいい。 | ||
|- | |- | ||
|Download Tag | |Download Tag | ||
|download-tag | |download-tag | ||
|trunk | |trunk | ||
487行目: | 472行目: | ||
|- | |- | ||
|Main Menu | |Main Menu | ||
|mainmenu | |||
| | | | ||
| | |Web UIのメインメニューの項目。TCLリスト (スペース区切りCSV?) で定義。以下の4列で1個のメニューを定義する。 | ||
# メニュー表示用テキスト。 | |||
# クリック時のハイパーリンク。/開始はリポジトリールート。 | |||
# TH1 capexprコマンドの引数。trueの場合にエントリー表示。*は常にtrue。{}は常にfalse。 | |||
# メニュー項目に適用する追加のクラス名リスト。一部のスキンは、desktoponlyとwideonlyを使用して幅が広い場合のみ表示できる。 | |||
初期値は以下。 | |||
Home /home * {} | |||
Timeline /timeline {o r j} {} | |||
Files /dir?ci=tip oh desktoponly | |||
Branches /brlist o wideonly | |||
Tags /taglist o wideonly | |||
Forum /forum {@2 3 4 5 6} wideonly | |||
Chat /chat C wideonly | |||
Tickets /ticket r wideonly | |||
Wiki /wiki j wideonly | |||
Admin /setup {a s} desktoponly | |||
Logout /logout L wideonly | |||
Login /login !L wideonly | |||
capexprの詳細 ([https://fossil-scm.org/home/doc/trunk/www/th1.md#capexpr Fossil: TH1 Scripts])。権限を意味する文字列 ([https://fossil-scm.org/home/doc/trunk/www/caps/ref.html Fossil: User Capability Reference])。 | |||
Download /download * {}などでダウンロードページでいいと思う。 | |||
|- | |- | ||
|Custom Sitemap Entries | |Custom Sitemap Entries | ||
500行目: | 507行目: | ||
[Canonical Server URL] はなくてもcloneなどはできる。メール用?よくわからない。必要なタイミングで設定する。 | [Canonical Server URL] はなくてもcloneなどはできる。メール用?よくわからない。必要なタイミングで設定する。 | ||
==== Empty Page ==== | ==Web== | ||
*[https://www.fossil-scm.org/home/doc/trunk/www/webui.wiki Fossil: The Fossil Web Interface] | |||
FossilのWeb UI自体のマニュアルはない模様。画面内の説明で完結している模様。自分で使いながら整理する。 | |||
===Home=== | |||
/home にアクセスすると、初回は以下のように表示される。 | |||
[[ファイル:Fossil unnamed first home.jpg]]<blockquote>Home | |||
This is a stub home-page for the project. To fill in this page, first go to setup/config and establish a "Project Name". Then create a wiki page with that name. The content of that wiki page will be displayed in place of this message.</blockquote>また、サイトタイトルが [Unnamed Fossil Project] となっており見栄えが少々悪い。 | |||
setup_config (https://fossil.gnusocial.jp/fossil/gnusocial/setup_config) にアクセスして、Project Nameなどを入力する必要がある。 | |||
====Empty Page==== | |||
https://chatgpt.com/c/6773b1e5-c1a0-800b-b7c4-92c081731919 | https://chatgpt.com/c/6773b1e5-c1a0-800b-b7c4-92c081731919 | ||
508行目: | 529行目: | ||
設定が必要な模様。 | 設定が必要な模様。 | ||
'''解決方法''': | '''解決方法''': | ||
# Webインターフェースでログインし、<code>/Setup</code> ページにアクセスします。 | #Webインターフェースでログインし、<code>/Setup</code> ページにアクセスします。 | ||
# 「Start Page」を設定します: | #「Start Page」を設定します: | ||
#* 「Start Page」に表示したいWikiページの名前を指定します(例:<code>Home</code>)。 | #*「Start Page」に表示したいWikiページの名前を指定します(例:<code>Home</code>)。 | ||
#* Wikiページがまだない場合は、Wikiを作成してください。 | #*Wikiページがまだない場合は、Wikiを作成してください。 | ||
'''Wikiページの作成方法''': | '''Wikiページの作成方法''': | ||
# <code>/wiki</code> ページにアクセス。 | #<code>/wiki</code> ページにアクセス。 | ||
# 「新しいWikiページを作成」ボタンをクリック。 | #「新しいWikiページを作成」ボタンをクリック。 | ||
# ページ名(例:<code>Home</code>)と内容を入力し、保存します。 | #ページ名(例:<code>Home</code>)と内容を入力し、保存します。 | ||
ただ、このWikiページの作成はちょっと考えたほうがいい。 | ただ、このWikiページの作成はちょっと考えたほうがいい。 | ||
525行目: | 547行目: | ||
リポジトリーのファイル内の文書を表示することができるので、そちらでやったほうがいい可能性がある。 | リポジトリーのファイル内の文書を表示することができるので、そちらでやったほうがいい可能性がある。 | ||
=== Permission === | ===Permission=== | ||
* [https://www.fossil-scm.org/home/doc/trunk/www/caps/admin-v-setup.md Fossil: Differences Between Setup and Admin Users] | *[https://www.fossil-scm.org/home/doc/trunk/www/caps/admin-v-setup.md Fossil: Differences Between Setup and Admin Users] | ||
* [https://www.fossil-scm.org/home/doc/trunk/www/caps/ Fossil: Administering User Capabilities (a.k.a. Permissions)] | *[https://www.fossil-scm.org/home/doc/trunk/www/caps/ Fossil: Administering User Capabilities (a.k.a. Permissions)] | ||
* [https://fossil-scm.org/home/help?cmd=user Fossil: Help: user] | *[https://fossil-scm.org/home/help?cmd=user Fossil: Help: user] | ||
Fossilのユーザー管理機能は権限管理機能と同じ意味。 | Fossilのユーザー管理機能は権限管理機能と同じ意味。 | ||
==== Password ==== | ====Password==== | ||
Fossilのユーザーは、リポジトリーの作成時 (fossil init/fossil import) 時に作成される。 | Fossilのユーザーは、リポジトリーの作成時 (fossil init/fossil import) 時に作成される。 | ||
fossil init repository-filename | fossil init repository-filename | ||
542行目: | 564行目: | ||
プロジェクトの初期ユーザー名とパスワードが表示される。ユーザー名はOSのユーザー名がデフォルト。オプションで変更可能。 | プロジェクトの初期ユーザー名とパスワードが表示される。ユーザー名はOSのユーザー名がデフォルト。オプションで変更可能。 | ||
==== Password reset ==== | ====Password reset==== | ||
プロジェクト作成時のパスワード表示を見逃したり、忘れた場合は、fossil userコマンドで再設定可能 ([https://fossil-scm.org/home/help?cmd=user Fossil: Help: user])。 | プロジェクト作成時のパスワード表示を見逃したり、忘れた場合は、fossil userコマンドで再設定可能 ([https://fossil-scm.org/home/help?cmd=user Fossil: Help: user])。 | ||
fossil user list | fossil user list | ||
548行目: | 570行目: | ||
fossil user password <username> [<password>] | fossil user password <username> [<password>] | ||
==== ユーザー名の変更 ==== | ====ユーザー名の変更==== | ||
https://chatgpt.com/c/6773b1e5-c1a0-800b-b7c4-92c081731919 | https://chatgpt.com/c/6773b1e5-c1a0-800b-b7c4-92c081731919 | ||
560行目: | 582行目: | ||
fossil user capabilities 新しいユーザー名 権限 | fossil user capabilities 新しいユーザー名 権限 | ||
==== Password skip ==== | ====Password skip==== | ||
https://chatgpt.com/c/6773b1e5-c1a0-800b-b7c4-92c081731919 | https://chatgpt.com/c/6773b1e5-c1a0-800b-b7c4-92c081731919 | ||
567行目: | 589行目: | ||
パスワードなしでのログインを実現したい場合、いくつかの方法がある。 | パスワードなしでのログインを実現したい場合、いくつかの方法がある。 | ||
# HTTP Basic認証 | #HTTP Basic認証 | ||
# SSH鍵認証: ssh鍵でcloneしたらパスワード不要。 | #SSH鍵認証: ssh鍵でcloneしたらパスワード不要。 | ||
# Web UIでpublicアクセスを設定: Web UIの/setupに移動し、anonymouseかnobodyユーザーに権限を付与。 | #Web UIでpublicアクセスを設定: Web UIの/setupに移動し、anonymouseかnobodyユーザーに権限を付与。 | ||
# 自動ログインCookie | #自動ログインCookie | ||
=== Wiki === | ===Wiki=== | ||
==== Wiki in Fossil ==== | ====Wiki in Fossil==== | ||
* [https://www.fossil-scm.org/home/doc/trunk/www/wikitheory.wiki Fossil: Wiki In Fossil] | *[https://www.fossil-scm.org/home/doc/trunk/www/wikitheory.wiki Fossil: Wiki In Fossil] | ||
Fossilは、様々な用途でFossil wikiやMarkdownを使用する。 | Fossilは、様々な用途でFossil wikiやMarkdownを使用する。 | ||
* 単独Wiki: 各wikiページには、チェックインとは独立した独自の変更履歴がある。 | *単独Wiki: 各wikiページには、チェックインとは独立した独自の変更履歴がある。 | ||
* .wiki/.md/markdownの拡張子の埋め込みドキュメントファイル: ソースツリー内の.wiki/.md/.markdown拡張子のファイルは、Fossilサーバーへの特別なURLでアクセス・表示可能。プロジェクトドキュメントをソースツリーに保存しながらオンラインアクセス可能。 | *.wiki/.md/markdownの拡張子の埋め込みドキュメントファイル: ソースツリー内の.wiki/.md/.markdown拡張子のファイルは、Fossilサーバーへの特別なURLでアクセス・表示可能。プロジェクトドキュメントをソースツリーに保存しながらオンラインアクセス可能。 | ||
* バグレポートの説明・コメント/フォーラムメッセージ/チェックインコメント (fossil-wikiのみ) | *バグレポートの説明・コメント/フォーラムメッセージ/チェックインコメント (fossil-wikiのみ) | ||
* 技術ノート | *技術ノート | ||
* チェックインとブランチのメモ: branch/<branch name> または checkin/<hash> の単独wikiページは、対応するブランチチェックインに関連づけられており、タイムラインと情報画面のaboutセクションに表示される。歴史的なメモの記録に役立つ。 | *チェックインとブランチのメモ: branch/<branch name> または checkin/<hash> の単独wikiページは、対応するブランチチェックインに関連づけられており、タイムラインと情報画面のaboutセクションに表示される。歴史的なメモの記録に役立つ。 | ||
==== Project Documentation ==== | ====Project Documentation==== | ||
* [https://www.fossil-scm.org/home/doc/trunk/www/embeddeddoc.wiki Fossil: Project Documentation] | *[https://www.fossil-scm.org/home/doc/trunk/www/embeddeddoc.wiki Fossil: Project Documentation] | ||
単独wikiの他に埋め込みドキュメントがある。埋め込み文書はソースツリー内の文書をWebページとして表示する機能。埋め込み文書には以下の利点がある。 | 単独wikiの他に埋め込みドキュメントがある。埋め込み文書はソースツリー内の文書をWebページとして表示する機能。埋め込み文書には以下の利点がある。 | ||
* ソースコードと一緒にバージョン管理されるため、バージョンとドキュメントの対応が明確。 | *ソースコードと一緒にバージョン管理されるため、バージョンとドキュメントの対応が明確。 | ||
* 任意のテキストエディターで編集可能。 | *任意のテキストエディターで編集可能。 | ||
* 権限保有者のみ変更可能 (利点にも欠点にもなる)。 | *権限保有者のみ変更可能 (利点にも欠点にもなる)。 | ||
===== 1.0 Fossil Support For Embedded Documentation ===== | =====1.0 Fossil Support For Embedded Documentation===== | ||
Web UIでは/docページを使用した埋め込みドキュメントに対応している。埋め込みドキュメントのアクセスは、Webブラウザーで次の形式のURLを指定する。 | Web UIでは/docページを使用した埋め込みドキュメントに対応している。埋め込みドキュメントのアクセスは、Webブラウザーで次の形式のURLを指定する。 | ||
<base url> /doc/ <version> / <file name> | <base url> /doc/ <version> / <file name> | ||
* <base url>: fossil webサーバーへのアクセスのメインURL。例えば、https://fossil-scm.org/home (CGIファイルへのパス相当)。 | *<base url>: fossil webサーバーへのアクセスのメインURL。例えば、https://fossil-scm.org/home (CGIファイルへのパス相当)。 | ||
* <version>: 埋め込み文書を含むチェックイン の名前。ハッシュ、ブランチ、タグ、タイムスタンプなど。特別な識別子の [ckout] にもできる。これはチェックインではなく、ローカルソースツリーのファイルを意味する。/doc/ckout URLはコミット前のプレビューの表示が目的。このプレビューは重要。コミット前に表示結果を必ず確認する。fossil uiには--ckout-alias <name> オプションがあり <name> をckoutの別名にできる。例えば、/doc/trunkをfossil ui --ckout-alias trunkでプレビュー表示できる。 | *<version>: 埋め込み文書を含むチェックイン の名前。ハッシュ、ブランチ、タグ、タイムスタンプなど。特別な識別子の [ckout] にもできる。これはチェックインではなく、ローカルソースツリーのファイルを意味する。/doc/ckout URLはコミット前のプレビューの表示が目的。このプレビューは重要。コミット前に表示結果を必ず確認する。fossil uiには--ckout-alias <name> オプションがあり <name> をckoutの別名にできる。例えば、/doc/trunkをfossil ui --ckout-alias trunkでプレビュー表示できる。 | ||
* <file name>: ソースツリーのルートを基準とした文書パス。MIMEタイプは拡張子で決まる。.css/.gif/html/.jpg/.png/txtなどを認識する ([https://www.fossil-scm.org/home/mimetype_list Fossil: Mimetype List])。.wiki/.md/.markdown/.txtには、標準のfossilヘッダーとフッターが追加された状態でレンダリングされる。それら以外は、そのままWebブラウザーに直接配信される。 | *<file name>: ソースツリーのルートを基準とした文書パス。MIMEタイプは拡張子で決まる。.css/.gif/html/.jpg/.png/txtなどを認識する ([https://www.fossil-scm.org/home/mimetype_list Fossil: Mimetype List])。.wiki/.md/.markdown/.txtには、標準のfossilヘッダーとフッターが追加された状態でレンダリングされる。それら以外は、そのままWebブラウザーに直接配信される。 | ||
====== 1.1 HTML Rendering With Fossil Headers And Footers ====== | ======1.1 HTML Rendering With Fossil Headers And Footers====== | ||
拡張子が.html/.htmのファイルは、直接Webブラウザーに表示される。ただし、以下のdiv要素で始まる場合、Fossilヘッダーとフッターが追加されてから表示される。 | 拡張子が.html/.htmのファイルは、直接Webブラウザーに表示される。ただし、以下のdiv要素で始まる場合、Fossilヘッダーとフッターが追加されてから表示される。 | ||
<nowiki><div class='fossil-doc' data-title='Title Text'></nowiki> | <nowiki><div class='fossil-doc' data-title='Title Text'></nowiki> | ||
class='fossil-doc'が必要。data-titleはオプションで、Fossilヘッダーに表示されるタイトルになる。以下が例。 | class='fossil-doc'が必要。data-titleはオプションで、Fossilヘッダーに表示されるタイトルになる。以下が例。 | ||
* [https://www.fossil-scm.org/home/file/www/permutedindex.html?txt source text for www/permutedindex.html] | *[https://www.fossil-scm.org/home/file/www/permutedindex.html?txt source text for www/permutedindex.html] | ||
* [https://www.fossil-scm.org/home/doc/trunk/www/permutedindex.html www/permutedindex.html rendered as HTML] | *[https://www.fossil-scm.org/home/doc/trunk/www/permutedindex.html www/permutedindex.html rendered as HTML] | ||
なお、この方法で表示するHTMLは完全に独立しているわけではない。例えば、script要素はFossilのCSP (Content Security Poicy) の影響を受ける。詳細は「[https://www.fossil-scm.org/home/doc/trunk/www/customskin.md#headfoot Fossil: Skinning the Fossil Web Interface - Header and Footer Processing]」と「[https://www.fossil-scm.org/home/doc/trunk/www/defcsp.md Fossil: The Default Content Security Policy (CSP)]」にある。 | なお、この方法で表示するHTMLは完全に独立しているわけではない。例えば、script要素はFossilのCSP (Content Security Poicy) の影響を受ける。詳細は「[https://www.fossil-scm.org/home/doc/trunk/www/customskin.md#headfoot Fossil: Skinning the Fossil Web Interface - Header and Footer Processing]」と「[https://www.fossil-scm.org/home/doc/trunk/www/defcsp.md Fossil: The Default Content Security Policy (CSP)]」にある。 | ||
===== 2.0 Server-Side Text Substitution ===== | =====2.0 Server-Side Text Substitution===== | ||
====== 2.1 "$ROOT" In HTML and Markdown Hyperlinks ====== | ======2.1 "$ROOT" In HTML and Markdown Hyperlinks====== | ||
====== 2.2 "$CURRENT" In "/doc/" Hyperlinks ====== | ======2.2 "$CURRENT" In "/doc/" Hyperlinks====== | ||
====== 2.3 TH1 Documents ====== | ======2.3 TH1 Documents====== | ||
===== 3.0 Examples ===== | =====3.0 Examples===== | ||
==== Wiki Formatting Rules ==== | ====Wiki Formatting Rules==== | ||
[https://www.fossil-scm.org/home/wiki_rules Fossil: Wiki Formatting Rules] | [https://www.fossil-scm.org/home/wiki_rules Fossil: Wiki Formatting Rules] | ||
[https://www.fossil-scm.org/home/md_rules Fossil: Markdown Formatting Rules] | [https://www.fossil-scm.org/home/md_rules Fossil: Markdown Formatting Rules] | ||
==== TH1 Scripts ==== | ====TH1 Scripts==== | ||
[https://www.fossil-scm.org/home/doc/trunk/www/th1.md Fossil: TH1 Scripts] | [https://www.fossil-scm.org/home/doc/trunk/www/th1.md Fossil: TH1 Scripts] | ||
=== Content === | ===Content=== | ||
==== How The Fossil Download Page Works ==== | ====How The Fossil Download Page Works==== | ||
* [https://fossil-scm.org/home/doc/trunk/www/aboutdownload.wiki Fossil: How The Fossil Download Page Works] | *[https://fossil-scm.org/home/doc/trunk/www/aboutdownload.wiki Fossil: How The Fossil Download Page Works] | ||
* [https://fossil-scm.org/home/help?cmd=/download Fossil: Help: /download] | *[https://fossil-scm.org/home/help?cmd=/download Fossil: Help: /download] | ||
FossilのDownload ([https://fossil-scm.org/home/uv/download.html Fossil: Downloads]) ページの仕組み。デフォルトではこのページはない。 | FossilのDownload ([https://fossil-scm.org/home/uv/download.html Fossil: Downloads]) ページの仕組み。デフォルトではこのページはない。 | ||
645行目: | 667行目: | ||
以下の手順で行う。 | 以下の手順で行う。 | ||
# download.jsに新しいリリース用の情報を記入して、新しいバージョン番号を認識できるようにする。 | #download.jsに新しいリリース用の情報を記入して、新しいバージョン番号を認識できるようにする。 | ||
# fossil uv addで配布用バイナリーを追加。 | #fossil uv addで配布用バイナリーを追加。 | ||
# fossil uv syncでpush | #fossil uv syncでpush | ||
権限を持つユーザーのpush可能。権限者を最小にして不正なバイナリーの混入を予防できる。 | 権限を持つユーザーのpush可能。権限者を最小にして不正なバイナリーの混入を予防できる。 | ||
==== Unversioned Content ==== | ====Unversioned Content==== | ||
* [https://fossil-scm.org/home/doc/trunk/www/unvers.wiki Fossil: Unversioned Content] | *[https://fossil-scm.org/home/doc/trunk/www/unvers.wiki Fossil: Unversioned Content] | ||
* [https://fossil-scm.org/home/help?cmd=/uv Fossil: Help: /uv] | *[https://fossil-scm.org/home/help?cmd=/uv Fossil: Help: /uv] | ||
==== Image Format vs Fossil Repo Size ==== | ====Image Format vs Fossil Repo Size==== | ||
[https://fossil-scm.org/home/doc/trunk/www/image-format-vs-repo-size.md Fossil: Image Format vs Fossil Repo Size] | [https://fossil-scm.org/home/doc/trunk/www/image-format-vs-repo-size.md Fossil: Image Format vs Fossil Repo Size] |
2025年1月2日 (木) 08:06時点における版
About
About
外部依存を排除しており、CGIでも動作するという点が非常に良い。気になる。Phorgeの検討が不要になる。
Fossil: A Coherent Software Configuration Management System
いくつか癖があるので注意する。
https://chatgpt.com/c/674e38de-a8c0-800b-8991-e0d68a2f0d86
複数のリポジトリーを取り扱うことは可能。ただし、Web UI上からリポジトリーの新規作成はできない。リポジトリーの新規作成はあくまでコマンドラインから行う必要がある。ここは集中的。
git と fossil の比較 git vs fossil-scm | タイトル
完全に個人なら悪くないが、コマンドの操作体系も異なるし、ややリスクがある。Tracのほうが無難。
fossilどうぞ。DVCS内にbug tracker, wiki, forum, technoteまで実装し、かつ各自がセルフホストサーバーとして稼働可能な相当に分散されたVCS。これに比べればgitはDを名乗るのもおこがましい。https://t.co/TK0Hg2rUFf
— 江添亮 (@EzoeRyou) September 6, 2018
Fossil Concepts
Adding Features To Fossil
Fossil: Adding Features To Fossil
Fossil Settings
fossil setingsかWeb UIの[Admin]-[Settings]からfossilの設定を変更できる。リポジトリー毎の設定。
Glossary
コマンドという概念がある。fossilのコマンドの引数に指定するサブコマンド。これがWebバージョンもある。Web版の場合/commandのように、URLの最後に/をつける模様。
Install
Binary
Fossil: A Coherent Software Configuration Management System
ソースコードからコンパイルするか、コンパイル済みバイナリーを配置するだけ。
VER=2.25 mkdir -p ~/.local/stow/fossil-$VER ~/.local/bin cd ~/.local/stow/fossil-$VER curl -O https://fossil-scm.org/home/uv/fossil-linux-x64-$VER.tar.gz tar -xf fossil-$VER.* ln -fns ../stow/fossil-$VER/fossil ../../bin/
Server
How CGI Works In Fossil
Fossil: How CGI Works In Fossil
How To Configure A Fossil Server
Fossil: How To Configure A Fossil Server
Fosilをサーバーとして稼働させる場合、可能な方式がいくつかある。
- CGI
- FastCGI: OpenBSDのみ。
- server: fossil server
- SCGI: fossil server実行時。
共用サーバーの場合、ほぼCGIのみ。サーバーがOpenBSDならFastCGIもOK。パフォーマンス優先なら単独サーバーかSCGI。基本はCGIでいいと思う。リポジトリーだからそんなに頻繁にアクセス来ないと思う。
https://chatgpt.com/c/674e38de-a8c0-800b-8991-e0d68a2f0d86
fossilのweb uiではリポジトリーの新規作成ができない。新規作成だけはコマンドラインから行う必要がある。これだけがいまいち。
CGI
CGIで実行するにはいくつか手順がある。
CGIディレクトリーに以下の内容のCGIスクリプトを用意する。
#!/usr/bin/fossil repository: /home/fossil/repo.fossil
1行目のシバン部分をインストールしたfossilの絶対パスにする。
repositoryの部分は指定方法がいろいろある。単一リポジトリーのホストなら上記でいいが、複数のリポジトリーを取り扱いたければ、リポジトリー群の格納ディレクトリーをdirectory: で指定する。
また、リポジトリーが不在の場合のリダイレクト先を指定するnotfound:もある。
#!/usr/bin/fossil directory: /home/fossil/repos notfound: http://url-to-go-to-if-repo-not-found/
CGIスクリプトをcgi-bin/repoとした場合、展開後は [http://mydomain.org/cgi-bin/repo/XYZ] のようなURLで [/home/fossil/repos/XYZ.fossil] にアクセス可能。
したがって、実際の展開時は、アクセスURLの綺麗さを考慮して、CGIのファイル名をfossilにして、以下の.htaccessでfossilをCGI扱いする。
<FilesMatch fossil$> SetHandler cgi-script </FilesMatch>
これで [http://mydomain.org/fossil/repoX] でアクセスする感じになる。これがいい。こういう方式にしておくと、既存のサイトにfossilを配置するだけでfossilのホストも可能になる。
Configure
Fossil: CGI Script Configuration Options
fossilをCGIで動作させる場合、CGIスクリプトに記載可能なオプションがある。
重要 | 項目 | 説明 |
---|---|---|
repository: PATH | repositoryかdirectoryは必須。fossilのリポジトリーパス。 | |
x | directory: PATH | repositoryかdirectoryは必須。fossilのリポジトリーが複数ある場合の親ディレクトリー。親ディレクトリー内の全リポジトリーを提供可能。 |
notfound: URL | directory指定時に、PATH_INFOがfossilのリポジトリーと不一致の場合このURLにリダイレクトする。 | |
x | repolist | ブール値。この項目の指定があり、direcotoryも指定があれば、PATH_INFOが空の場合、リポジトリーリストを表示する。
応答のskinはrepolist-skinが0以外の最初のリポジトリーの設定で決まる。 サブディレクトリーを再帰して、*.fossilを表示するが以下の例外がある。
|
localauth | ||
skin: NAME | NAMEが組み込みスキンの場合、リポジトリー自体のskinを無視してこれを使用する。
ユーザーにskinを選択させたい場合、skinの異なる複数のCGIスクリプトを用意して、同じrepositoryかdirecotoryを指定すれば、任意のCGIにアクセスすることでスキンを選択可能になる。 | |
files | ||
setenv | ||
HOME | ||
cgi-debug | ||
errorlog | ||
timeout | ||
extroot | ||
redirect | ||
jsmode | ||
mainmenu |
とりあえず、direcotryとrepolistを指定すると良いと思う。
#!/usr/bin/fossil directory: /home/fossil/repos notfound: /fossil repolist
repolistはskinがない場合、以下のようなシンプルな表示になる。
Fossil Repositories Filename Project Name Last Modified Login Group dir/test.fossil 3.0 days fossil.fossil Fossil 3.1 days test.fossil 3.0 days
repolistはディレクトリー単位の表示はできず、dirにアクセスするとnotfoundになる。notfoundで/か/fossilの一覧ページを指定したほうがよさそう。
Usage
Quick
Fossil: Fossil Quick Start Guide
プロジェクトの基本作業。
Starting A New Project
以下のコマンドで空のfossilリポジトリーを作成する。
fossil init repository-filename
repository-filenameには.fossilの拡張子をつける。必須ではないが、Web UIでディレクトリーを使う場合に、静的ファイルとの区別に.fossil拡張子を使っている。特別な理由がない限り、.fossilの拡張子を指定する。
コマンドを実行すると、以下が表示される。
project-id: 802c1bc57dace208af5be1eb3de12bcc0df020c3 server-id: be6489d9085a20f2cc0e62c36528e48f7fe5ffb3 admin-user: senooken (initial password is "aNiko5zuBE")
プロジェクトの初期ユーザー名とパスワードが表示される。ユーザー名はOSのユーザー名がデフォルト。オプションで変更可能。
プロジェクト作成時のパスワード表示を見逃したり、忘れた場合は、fossil userコマンドで再設定可能 (Fossil: Help: user)。
fossil user list
fossil user password <username> [<password>]
Checking Out A Local Tree
まず、ツリーのルートとなるディレクトリーを作成して、fossil openでDBからローカルコピーをチェックアウトする。
fossil open ../myclone.fossil
このコマンドで最新のファイル群がチェックアウトされる。以下のコマンド群でローカルツリーの状態を把握できる。
fossil info # git status --name-status相当? fossil status # git status相当? fossil changes # git status相当? fossil diff # git diff相当? fossil timeline # git log相当? fossil ls # git ls-files相当? fossil branch # git branch相当?
違うバージョンやブランチに切り替えるには、以下のコマンドを使う。
fossil update fossil checkout
updateはローカルの変更を対象バージョンにマージする。checkoutはマージせず、ローカルの変更を上書きする。
Making and Committing Changes
以下のコマンドでファイルの追加・削除ができる。
fossil add file... fossil rm file... fossil addremove file...
以下のコマンドで前回コミットからの変更点の概要を表示する。
fossil changes
正確な差分はfossil diffで表示できる。
fossil diff
fossil difは現在のツリーと最後に変更をコミット時の差分を表示する。コミットしていない場合、最新コミットの差分を表示する。
他のユーザーの変更の確認にはfossil timelineを実行し、コミットを見つけて、diffを実行する。実行する。
fossil timeline
2021-03-28 03:18:54 [ad75dfa4a0] *CURRENT* Added details to frobnicate command (user: user-one tags: trunk) 2021-03-27 23:58:05 [ab975c6632] Update README.md. (user: user-two tags: trunk)
fossil diff --from current --to ab975c6632
ローカルの変更のコミットはcommitで行う。
fossil commit
VISUALかEDITOR環境変数で指定されたエディターでコメントの入力を要請される。
リモートリポジトリーからクローンしている場合、デフォルトで自動同期モードになっているので自動的にリモートにも同期する。
Branching And Merging
新しいブランチの開始には、commit --branchを実行する。Fossilではブランチはコミット時に作成する。ただ、必要に応じてコミット前にbranch newでも作成できる。
2個のブランチのマージには、まずマージ先のブランチを更新する。その後、組み込む他のブランチをマージする。例えば、trunkにfeatureXをマージするにはイアkのようにする。
fossil update trunk fossil merge featureX # make sure the merge didn't break anything... fossil commit
マージがうまくいかなかったりしたら、以下のコマンドで復元できる。
fossil undo
redoもある。
Branching, Forking, Merging, and Tagging
Fossil: Branching, Forking, Merging, and Tagging
一つの親コミットに対して、複数のコミットが派生して並列することをフォークと呼んでいる。それとは別でブランチというのがある。Fossilの内部的にはどちらも同じ。違いは、人間に意図があるか。ブランチは名前のついたフォークという扱い。
特定の機能の開発などで、完了するまで本流とは別で進めたい場合に使う。
fossilでブランチの作成には2の方法がある。
1個目はcommit --branch。ほとんどの場合に推奨される。最初のコミット作成時にブランチも作る。
fossil commit --branch my-new-branch-name
2番目はbranch new。
fossil branch new my-new-branch-name trunk fossil update my-new-branch-name fossil commit
この方法は手順が多いし、YAGNI原則に反するのでお勧めされない。
trunkという名前のブランチは、fossilのデフォルトブランチ名。
ローカルチェックアウトがブランチの場合、以下のコマンドで単純にtrunkにマージできる。
fossil merge
自動的に検知してくれる。
Get
基本的な使用方法
# clone fossil clone <repository url> # sync: cloneの再開など。 fossil sync -R <repository url> # rebuild: 取得後のDB再構築。 fossil rebuild <repository path>
上記コマンドでファイルを取得する。Fossilは1ファイルで管理するので、cloneだと取得しきれない可能性がある。中断した場合などはsyncで再取得する。再取得後、反映されない場合、rebuildで取得データからDBを再構築する。
Empty
fossilをcloneすると空で、Web UIで [cannot resolve name: trunk] と表示されることがある。これは、リポジトリーのクローンが失敗している。
以下のコマンドでデータ取得を継続する。
fossile sync -R <repositor url>
これでもダメなら、以下のコマンドでDBを再構築する。
fossile rebuild <repository path>
これで解決した。
Import And Export
FossilにはGitのインポート・エクスポート機能がある。Gitに他のVCSのインポート・エクスポート機能があるので、Gitを経由して他のいろんなVCSをfossilとインポート・エクスポート可能。
Git → Fossil
以下のコマンドでインポート・取り込める。
cd git-repo git fast-export --all | fossil import --git new-repo.fossil
fossil importコマンドの第3匹数で新しいFossilリポジトリーの名前を指定する。
--gitを指定しているが、実際は不要。なぜなら、Fossilが対応している他のリポジトリーはgitだけだから。ただし、将来的に他のリポジトリーにも対応するかもしれないので、互換性のために一応--gitを指定しておく。
Fossil → Git
Fossilリポジトリーのgitへの変換は以下のコマンド。
git init new-repo cd new-repo fossil export --git ../repo.fossil | git fast-import
Mirror A Fossil Repository In Git
Fossil v2.9からFossilリポジトリーのgitまたはGitHubへのミラーリングに対応している。Fossilは元々自己ホスト可能だが、この機能でGitHubでのホストも可能になる。
Bidirectional Synchronization
Gitとの同期機能もある。マークファイルを使用して行う。
例として、fossilリポジトリーの最新コミットをgitに取り込む場合を考える。
まず最初にfossilをクローンして取り込む。
fossil clone /path/to/remote/repo.fossil repo.fossil mkdir repo cd repo fossil open ../repo.fossil mkdir ../repo.git cd ../repo.git git init . fossil export --git --export-marks ../repo/fossil.marks \ ../repo.fossil | git fast-import \ --export-marks=../repo/git.marks
fossilの最新コードをgitに取り込む場合、以下のようにfossil pullで最新コミットを取得後、
cd ../repo fossil pull cd ../repo.git fossil export --git --import-marks ../repo/fossil.marks \ --export-marks ../repo/fossil.marks \ ../repo.fossil | git fast-import \ --import-marks=../repo/git.marks \ --export-marks=../repo/git.marks git fast-export --import-marks=../repo/git.marks \ --export-marks=../repo/git.marks --all | fossil import --git \ --incremental --import-marks ../repo/fossil.marks \ --export-marks ../repo/fossil.marks ../repo.fossil cd ../repo fossil push
わかりにくいからあまりしたくない。
インポートの再開
https://chatgpt.com/c/676fb751-f140-800b-b27b-22d683926e3e
インポートが途中で中断された場合。ややこしい。fossil importは1回のコマンドで完了する設計になっているから。途中から再開する機能は直接はない。工夫が必要。
- gitリポジトリー側のコミットログをフィルターして必要な部分だけ残す。
- fossilに一部インポート済みの場合、インポート後の履歴をformat-patchでファイルに出力して、それをfossil patch applyで取り込む。
- 何回かに分けて、fossilのリポジトリーにインポート後、fossilのマージ機能で1個のfossilリポジトリーにマージ。
はっきりいって面倒だから、ローカルPCで履歴を全部取得して、fossilに取り込んで、取り込んだDBを転送した方が確実。
Git to Fossil Translation Guide
Fossil: Git to Fossil Translation Guide
Repositories and Checkouts Are Distinct
Fossilではリポジトリーとチェックアウトは明確に区別されている。gitの場合、.gitのあるディレクトリーで管理しているので、複数のチェックアウトを展開できない。
Help
[Fossil: Help] にFossilのコマンド、Web UIページ、設定が一覧されている。
数が多いので特に重要なものを整理する。
Available web UI pages:
FossilのWeb UIページ。リポジトリーに対して/<page>の形式でアクセスする。ページ毎に?のクエリーパラメーターを受け付けるものがある。
artifact file whatis
fileが特に重要。[Code]タブからファイルをクリックした際に使用する。ファイルの中身を表示する。?txtを指定することでfossilのレンダーリングなしでtxtで表示する。
download
最新ソースのtar玉とZIP提供の簡単なダウンロードページを提供する。
home index not_found
setup_configで指定したホームページにリダイレクトするスタブページ。
uv
バージョン管理していないファイルを表示する。
sqlar tarball zip
指定したチェックインの該当アーカイブファイルを応答する。
setup
setup_config
Admin/Configurationページ。プロジェクト名などを設定できる。Homeの初回アクセス時に表示される。
以下の項目がある。
項目 | RSS Property | default | 説明 |
---|---|---|---|
Project Name | project-name | プロジェクト名 | |
Project Description | project-description | プロジェクト説明。ページヘッダーや検索エンジンなどに使われる。 | |
Canonical Server URL | email-url | サーバーのURL。他のリポジトリーがcloneなどに使うURL。末尾の/は省略する。永続サーバーとして使わない場合は空白のままにする。https://fossil.gnusocial.jp/fossil/gnusocialのようなプロジェクトホームのベース名が推奨値。 | |
Tarball and Zip-archive Prefix | short-project-name | Project Name | tar玉かZIPアーカイブ生成時の名前の接頭辞。/\のような特殊文字は避けたほうがいい。 |
Download Tag | download-tag | trunk | /downloadページはプロジェクトのZIPかtarファイルの提供場所として設計されている。デフォルトで、trunkチェックインを提供する。ブランチを変更したければ変更する。 |
Index Page | index-page | /home | Homeメニュー選択時の表示パス名。リダイレクトループなどの回避のために/始まりであること。 |
Main Menu | mainmenu | Web UIのメインメニューの項目。TCLリスト (スペース区切りCSV?) で定義。以下の4列で1個のメニューを定義する。
初期値は以下。 Home /home * {} Timeline /timeline {o r j} {} Files /dir?ci=tip oh desktoponly Branches /brlist o wideonly Tags /taglist o wideonly Forum /forum {@2 3 4 5 6} wideonly Chat /chat C wideonly Tickets /ticket r wideonly Wiki /wiki j wideonly Admin /setup {a s} desktoponly Logout /logout L wideonly Login /login !L wideonly capexprの詳細 (Fossil: TH1 Scripts)。権限を意味する文字列 (Fossil: User Capability Reference)。 Download /download * {}などでダウンロードページでいいと思う。 | |
Custom Sitemap Entries | sitemap-extra | /sitemapページの追加メニュー。 |
[Project Name]/[Project Description]/[Tarball and Zip-archive Prefix] あたりを設定しておけば良いと思われる。
[Canonical Server URL] はなくてもcloneなどはできる。メール用?よくわからない。必要なタイミングで設定する。
Web
FossilのWeb UI自体のマニュアルはない模様。画面内の説明で完結している模様。自分で使いながら整理する。
Home
/home にアクセスすると、初回は以下のように表示される。
Home This is a stub home-page for the project. To fill in this page, first go to setup/config and establish a "Project Name". Then create a wiki page with that name. The content of that wiki page will be displayed in place of this message.
また、サイトタイトルが [Unnamed Fossil Project] となっており見栄えが少々悪い。
setup_config (https://fossil.gnusocial.jp/fossil/gnusocial/setup_config) にアクセスして、Project Nameなどを入力する必要がある。
Empty Page
https://chatgpt.com/c/6773b1e5-c1a0-800b-b7c4-92c081731919
Homeページで最低限の設定をすると、設定完了済みとなり、その状態で/homeを表示すると、 [Empty Page] と表示される。
設定が必要な模様。
解決方法:
- Webインターフェースでログインし、
/Setup
ページにアクセスします。 - 「Start Page」を設定します:
- 「Start Page」に表示したいWikiページの名前を指定します(例:
Home
)。 - Wikiページがまだない場合は、Wikiを作成してください。
- 「Start Page」に表示したいWikiページの名前を指定します(例:
Wikiページの作成方法:
/wiki
ページにアクセス。- 「新しいWikiページを作成」ボタンをクリック。
- ページ名(例:
Home
)と内容を入力し、保存します。
ただ、このWikiページの作成はちょっと考えたほうがいい。
リポジトリーのファイル内の文書を表示することができるので、そちらでやったほうがいい可能性がある。
Permission
- Fossil: Differences Between Setup and Admin Users
- Fossil: Administering User Capabilities (a.k.a. Permissions)
- Fossil: Help: user
Fossilのユーザー管理機能は権限管理機能と同じ意味。
Password
Fossilのユーザーは、リポジトリーの作成時 (fossil init/fossil import) 時に作成される。
fossil init repository-filename
project-id: 802c1bc57dace208af5be1eb3de12bcc0df020c3 server-id: be6489d9085a20f2cc0e62c36528e48f7fe5ffb3 admin-user: senooken (initial password is "aNiko5zuBE")
プロジェクトの初期ユーザー名とパスワードが表示される。ユーザー名はOSのユーザー名がデフォルト。オプションで変更可能。
Password reset
プロジェクト作成時のパスワード表示を見逃したり、忘れた場合は、fossil userコマンドで再設定可能 (Fossil: Help: user)。
fossil user list
fossil user password <username> [<password>]
ユーザー名の変更
https://chatgpt.com/c/6773b1e5-c1a0-800b-b7c4-92c081731919
ユーザー名の改名はできない。同じことをしたければ、新ユーザーを作成して、旧ユーザーを無効にする。
1 以下のコマンドで新ユーザーを作成する。
fossil user add <newuser> <mypassword>
2 以下のコマンドで旧ユーザーを無効にする。
fossil user disable <olduser>
3 必要に応じて新ユーザーに旧ユーザーと同じ権限を付与する。
fossil user capabilities 新しいユーザー名 権限
Password skip
https://chatgpt.com/c/6773b1e5-c1a0-800b-b7c4-92c081731919
Fossilではユーザーのパスワードを空にはできない。
パスワードなしでのログインを実現したい場合、いくつかの方法がある。
- HTTP Basic認証
- SSH鍵認証: ssh鍵でcloneしたらパスワード不要。
- Web UIでpublicアクセスを設定: Web UIの/setupに移動し、anonymouseかnobodyユーザーに権限を付与。
- 自動ログインCookie
Wiki
Wiki in Fossil
Fossilは、様々な用途でFossil wikiやMarkdownを使用する。
- 単独Wiki: 各wikiページには、チェックインとは独立した独自の変更履歴がある。
- .wiki/.md/markdownの拡張子の埋め込みドキュメントファイル: ソースツリー内の.wiki/.md/.markdown拡張子のファイルは、Fossilサーバーへの特別なURLでアクセス・表示可能。プロジェクトドキュメントをソースツリーに保存しながらオンラインアクセス可能。
- バグレポートの説明・コメント/フォーラムメッセージ/チェックインコメント (fossil-wikiのみ)
- 技術ノート
- チェックインとブランチのメモ: branch/<branch name> または checkin/<hash> の単独wikiページは、対応するブランチチェックインに関連づけられており、タイムラインと情報画面のaboutセクションに表示される。歴史的なメモの記録に役立つ。
Project Documentation
単独wikiの他に埋め込みドキュメントがある。埋め込み文書はソースツリー内の文書をWebページとして表示する機能。埋め込み文書には以下の利点がある。
- ソースコードと一緒にバージョン管理されるため、バージョンとドキュメントの対応が明確。
- 任意のテキストエディターで編集可能。
- 権限保有者のみ変更可能 (利点にも欠点にもなる)。
1.0 Fossil Support For Embedded Documentation
Web UIでは/docページを使用した埋め込みドキュメントに対応している。埋め込みドキュメントのアクセスは、Webブラウザーで次の形式のURLを指定する。
<base url> /doc/ <version> / <file name>
- <base url>: fossil webサーバーへのアクセスのメインURL。例えば、https://fossil-scm.org/home (CGIファイルへのパス相当)。
- <version>: 埋め込み文書を含むチェックイン の名前。ハッシュ、ブランチ、タグ、タイムスタンプなど。特別な識別子の [ckout] にもできる。これはチェックインではなく、ローカルソースツリーのファイルを意味する。/doc/ckout URLはコミット前のプレビューの表示が目的。このプレビューは重要。コミット前に表示結果を必ず確認する。fossil uiには--ckout-alias <name> オプションがあり <name> をckoutの別名にできる。例えば、/doc/trunkをfossil ui --ckout-alias trunkでプレビュー表示できる。
- <file name>: ソースツリーのルートを基準とした文書パス。MIMEタイプは拡張子で決まる。.css/.gif/html/.jpg/.png/txtなどを認識する (Fossil: Mimetype List)。.wiki/.md/.markdown/.txtには、標準のfossilヘッダーとフッターが追加された状態でレンダリングされる。それら以外は、そのままWebブラウザーに直接配信される。
拡張子が.html/.htmのファイルは、直接Webブラウザーに表示される。ただし、以下のdiv要素で始まる場合、Fossilヘッダーとフッターが追加されてから表示される。
<div class='fossil-doc' data-title='Title Text'>
class='fossil-doc'が必要。data-titleはオプションで、Fossilヘッダーに表示されるタイトルになる。以下が例。
なお、この方法で表示するHTMLは完全に独立しているわけではない。例えば、script要素はFossilのCSP (Content Security Poicy) の影響を受ける。詳細は「Fossil: Skinning the Fossil Web Interface - Header and Footer Processing」と「Fossil: The Default Content Security Policy (CSP)」にある。
2.0 Server-Side Text Substitution
2.1 "$ROOT" In HTML and Markdown Hyperlinks
2.2 "$CURRENT" In "/doc/" Hyperlinks
2.3 TH1 Documents
3.0 Examples
Wiki Formatting Rules
Fossil: Markdown Formatting Rules
TH1 Scripts
Content
How The Fossil Download Page Works
FossilのDownload (Fossil: Downloads) ページの仕組み。デフォルトではこのページはない。
この画面はバージョン管理していないファイルで実装されている。配布物の格納ディレクトリーのファイルリストをXMLHttpRequestで取得して、それを表示している。
以下の手順で行う。
- download.jsに新しいリリース用の情報を記入して、新しいバージョン番号を認識できるようにする。
- fossil uv addで配布用バイナリーを追加。
- fossil uv syncでpush
権限を持つユーザーのpush可能。権限者を最小にして不正なバイナリーの混入を予防できる。