Wiki開発者ガイドライン
GitLab 13.5 で導入されました。
GitLabのWiki機能はGollum 4.xをベースにしています。GitalyRubyサービスで使われ、RailsアプリからGitaly RPCコールを通してアクセスします。
Wiki は Git リポジトリをバックエンドとして使用し、Gitaly RPC 呼び出しを通して Rails アプリからアクセスできます:
GitLab 13.5で導入されたWikiは、プロジェクトだけでなくグループでも利用できます。
関係する Gems
Wikiに使用される代表的なジェムは以下の通りです:
コンポーネント | 説明 | 宝石名 | GitLabプロジェクト | アップストリームプロジェクト |
---|---|---|---|---|
gitlab | マークアップレンダラ。 | gitlab-markup | gitlab-org/gitlab-markup | github/markup |
gollum-lib | メインGollumライブラリ | gitlab-gollum-lib | gitlab-org/gollum-lib | gollum/gollum-lib |
Rugged 用 Git アダプタ Gollum | gitlab-gollum-rugged_adapter | gitlab-org/gitlab-gollum-rugged_adapter | gollum/rugged_adapter | |
Rugged (Gitaly自体でも使われています) | rugged | - | libgit2/rugged |
ゴラムについて
Wikiページのスラッグとリポジトリ内のファイル間のマッピングを処理するためのストレージ抽象化レイヤーとしてのみGollumを使用しています。
Wikiページをレンダリングするとき、私たちはGollumを全く使用せず、代わりにカスタムBanzaiパイプラインを通過します。これにより、Gollum[[link]]
構文のようなWiki 固有のマークアップが追加されます。
私たちはGollumの機能のほとんどを利用していないため、いつかは完全にGollumから離れる予定です。参考までにこのエピックを見てください。
モデルクラス
Wiki
クラスは Wiki リポジトリのメイン抽象です。Project
もしくはGroup
のコンテナで初期化される必要があります:
いくつかのモデルはGitalyとGollumから似たようなクラスをラップしています:
Railsモデル | Gitalyクラス | ゴラム |
---|---|---|
Wiki | Gitlab::Git::Wiki | Gollum::Wiki |
WikiPage |
Gitlab::Git::WikiPage ,Gitlab::Git::WikiPageVersion
| Gollum::Page |
Gitlab::Git::WikiFile | Gollum::File |
一部のデータのみがデータベースに永続化されます:
モデル | 説明 |
---|---|
WikiPage::Meta | Wikiページのメタデータ |
WikiPage::Slug | Wikiページの現在のスラッグと以前のスラッグ |
ProjectRepository | プロジェクトWikiのGitalyストレージデータ |
GroupWikiRepository | グループWiki用Gitalyストレージデータ |
添付ファイル
Web UIはREST APIを通して添付ファイルをアップロードし、Wikiリポジトリにコミットとしてファイルを保存します。