위키 개발 지침

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

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

관련된 젬

위키에 사용되는 주목할만한 젬은 다음과 같습니다:

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

Gollum에 관한 참고사항

우리는 Gollum을 스토리지 추상화 계층으로만 사용하여 위키 페이지 슬러그와 저장소 파일 간의 매핑을 처리합니다.

위키 페이지를 렌더링할 때, Gollum을 전혀 사용하지 않고 사용자 정의 Banzai 파이프라인을 통해 진행합니다. 이것은 위키별 마크업을 추가합니다.

대부분의 Gollum 기능을 사용하지 않기 때문에 언젠가는 완전히 그것으로부터 이동할 계획입니다. 참고용으로 이 에픽을 참조하세요.

모델 클래스

Wiki 클래스는 위키 저장소 주변의 주요 추상화이며, Project 또는 Group이 될 수 있는 컨테이너로 초기화해야 합니다:

classDiagram Wiki --> ProjectWiki Wiki --> GroupWiki class Wiki { #컨테이너 #저장소 } class ProjectWiki { #프로젝트 → #컨테이너 } class GroupWiki { #그룹 → #컨테이너 }

몇몇 모델은 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를 통해 첨부 파일을 업로드하며, 이는 위키 저장소의 커밋으로 파일을 저장합니다.

관련 주제