위키 개발 가이드라인
GitLab v19.1GitLab의 위키 기능은 Git 리포지터리를 스토리지 백엔드로 사용하며, Gitaly RPC 호출을 통해 Rails 앱에서 접근합니다. 위키에 접근하는 방법은 다음과 같습니다: 위키에서 사용되는 주요 gem은 다음과 같습니다:
GitLab의 위키 기능은 Git 리포지터리를 스토리지 백엔드로 사용하며, Gitaly RPC 호출을 통해 Rails 앱에서 접근합니다.
위키에 접근하는 방법은 다음과 같습니다:
관련 Gem#
위키에서 사용되는 주요 gem은 다음과 같습니다:
| Component | Description | Gem name | GitLab project | Upstream project |
|---|---|---|---|---|
| gitlab | 마크업 렌더러, 다양한 다른 gem에 의존 | gitlab-markup | gitlab-org/gitlab-markup | github/markup |
위키 렌더링#
위키 페이지를 렌더링할 때, 커스텀 Banzai 파이프라인을 사용합니다.
이 파이프라인은 [[link]] 구문과 같은 위키 전용 마크업을 추가합니다.
모델 클래스#
Wiki 클래스는 위키 리포지터리에 대한 주요 추상화입니다.
Project 또는 Group 중 하나일 수 있는 컨테이너로 초기화해야 합니다:
classDiagram Wiki --> ProjectWiki Wiki --> GroupWiki
class Wiki { #container #repository }
class ProjectWiki { #project → #container }
class GroupWiki { #group → #container }
일부 모델은 Gitaly의 유사한 클래스를 래핑합니다:
| Rails Model | Gitaly Class |
|---|---|
| Wiki | Gitlab::Git::Wiki |
| WikiPage | Gitlab::Git::WikiPage, Gitlab::Git::WikiPageVersion |
| Gitlab::Git::WikiFile |
데이터베이스에는 일부 데이터만 저장됩니다:
| Model | Description |
|---|---|
| WikiPage::Meta | 위키 페이지의 메타데이터 |
| WikiPage::Slug | 위키 페이지의 현재 및 이전 슬러그 |
| ProjectRepository | 프로젝트 위키의 Gitaly 스토리지 데이터 |
| GroupWikiRepository | 그룹 위키의 Gitaly 스토리지 데이터 |
첨부 파일#
Web UI는 REST API를 통해 첨부 파일을 업로드하며, 이 파일들은 위키 리포지터리의 커밋으로 저장됩니다.