위키 개발 지침

GitLab의 위키 기능은 Gollum 4.x를 기반으로 합니다. 이것은 Gitaly 루비 서비스에서 사용되며, Rails 앱에서 Gitaly RPC 호출을 통해 액세스됩니다.

위키는 Git 리포지터리를 저장 백엔드로 사용하며 다음을 통해 액세스할 수 있습니다:

관련 Gem들

위키에 사용된 주목할만한 Gem들은 다음과 같습니다:

구성요소 설명 Gem 이름 GitLab 프로젝트 상위 프로젝트
gitlab 마크업 렌더러, 다양한 다른 Gem에 의존 gitlab-markup gitlab-org/gitlab-markup github/markup

Gollum에 대한 참고 사항

위키 페이지 렌더링 시, 우리는 전혀 Gollum을 사용하지 않고 사용자 정의 Banzai 파이프라인을 통해 진행합니다. 이는 Gollum [[link]] 구문과 같은 위키별 마크업을 추가합니다.

우리는 대부분의 Gollum 기능을 사용하지 않기 때문에, 언젠가는 완전히 이를 떠나기로 계획하고 있습니다. 참고용 이번 Epic을 확인하세요.

모델 클래스들

Wiki 클래스는 위키 리포지터리 주변의 주요 추상화로, ProjectGroup일 수 있는 컨테이너를 초기화해야 합니다:

classDiagram Wiki --> ProjectWiki Wiki --> GroupWiki class Wiki { #container #repository } class ProjectWiki { #project → #container } class GroupWiki { #group → #container }

몇몇 모델은 Gitaly 및 Gollum에서 유사한 클래스를 래핑합니다:

Rails 모델 Gitaly 클래스 Gollum
Wiki Gitlab::Git::Wiki Gollum::Wiki
WikiPage Gitlab::Git::WikiPage, Gitlab::Git::WikiPageVersion Gollum::Page
  Gitlab::Git::WikiFile Gollum::File

데이터는 데이터베이스에만 일부 저장됩니다:

모델 설명
WikiPage::Meta 위키 페이지 메타데이터
WikiPage::Slug 위키 페이지의 현재 및 이전 슬러그
ProjectRepository 프로젝트 위키의 Gitaly 리포지터리 데이터
GroupWikiRepository 그룹 위키의 Gitaly 리포지터리 데이터

첨부 파일

웹 UI는 REST API를 통해 첨부 파일을 업로드하며, 이는 위키 리포지터리의 커밋으로 파일을 저장합니다.

관련 주제