Wikis development guidelines
Wiki functionality in GitLab uses Git repositories as the storage backend and is accessed from the Rails app through Gitaly RPC calls.
You can access wikis through:
- The Web UI
- The REST API
- Git itself
Involved Gems
Some notable gems that are used for wikis are:
Wiki rendering
When rendering wiki pages, we use a
custom Banzai pipeline.
This pipeline adds wiki-specific markup,
such as the [[link]] syntax.
Model classes
The Wiki class is the main abstraction around a wiki repository.
You must initialize it with a container, which can be either a Project or Group:
classDiagram
Wiki --> ProjectWiki
Wiki --> GroupWiki
class Wiki {
#container
#repository
}
class ProjectWiki {
#project → #container
}
class GroupWiki {
#group → #container
}
Some models wrap similar classes from Gitaly:
| Rails Model | Gitaly Class |
|---|---|
Wiki | Gitlab::Git::Wiki |
WikiPage | Gitlab::Git::WikiPage, Gitlab::Git::WikiPageVersion |
Gitlab::Git::WikiFile |
Only some data is persisted in the database:
Attachments
The web UI uploads attachments through the REST API, which stores the files as commits in the wiki repository.
Was this page helpful?
