위키 개발 가이드라인

GitLab의 위키 기능은 Gollum 4.x에 기반하고 있습니다. 이는 Gitaly 루비 서비스에서 사용되며, Rails 앱에서 Gitaly RPC 호출을 통해 액세스됩니다.

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

GitLab 13.5에 도입된 위키는 프로젝트뿐만 아니라 그룹에서도 사용할 수 있습니다.

관련된 젬

위키에 사용된 주요한 젬은 다음과 같습니다:

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

Gollum에 대한 참고 사항

위키 페이지 렌더링 시, 위키 페이지 슬러그와 리포지터리 파일 간의 매핑을 처리하기 위해 Gollum을 저장 추상화 레이어로만 사용합니다.

위키 페이지를 렌더링할 때 Gollum을 전혀 사용하지 않고 사용자 지정 Banzai 파이프라인을 통해 진행합니다. 이로써 Gollum [[링크]] 구문과 같은 위키 고유의 마크다운을 추가할 수 있습니다.

대부분의 Gollum 기능을 사용하지 않기 때문에 우리는 언젠가 완전히 이를 사용하지 않도록 이동할 계획입니다. 참조를 위해 이 에픽을 참조하세요.

모델 클래스

Wiki 클래스는 위키 리포지터리에 대한 주요 추상화로, Project 또는 Group이 될 수 있는 컨테이너로 초기화되어야 합니다:

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를 통해 첨부 파일을 업로드하며, 이는 위키 리포지터리에 커밋으로 파일을 저장합니다.

관련 주제