Introduced in GitLab 13.5.
Wikis use Git repositories as storage backend, and can be accessed through:
Introduced in GitLab 13.5, wikis are also available for groups, in addition to projects.
Some notable gems that are used for wikis are:
|Component||Description||Gem name||GitLab project||Upstream project|
|Markup renderer, depends on various other gems|
|Main Gollum library|
|Gollum Git adapter for Rugged|
|Rugged (also used in Gitaly itself)||-|
We only use Gollum as a storage abstraction layer, to handle the mapping between wiki page slugs and files in the repository.
Because we do not make use of most of Gollum’s features, we plan to move away from it entirely at some point. See this epic for reference.
Wiki class is the main abstraction around a wiki repository, it needs to be initialized
with a container which can be either a
Some models wrap similar classes from Gitaly and Gollum:
|Rails Model||Gitaly Class||Gollum|
Only some data is persisted in the database:
|Metadata for wiki pages|
|Current and previous slugs of wiki pages|
|Gitaly storage data for project wikis|
|Gitaly storage data for group wikis|
The web UI uploads attachments through the REST API, which stores the files as commits in the wiki repository.