위키 개발 가이드라인

GitLab의 위키 기능은 Gollum 4.x를 기반으로 하고 있습니다.

이는 Gitaly 루비 서비스에서 사용되며, Gitaly RPC 호출을 통해 Rails 앱에서 접근됩니다.

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

관련 젬

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

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

Gollum에 대한 주의사항

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

위키 페이지를 렌더링할 때, 우리는 Gollum을 전혀 사용하지 않으며 대신 커스텀 Banzai 파이프라인을 거칩니다.
이는 Gollum [[link]] 구문과 같은 위키 전용 마크업을 추가합니다.

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

관련 주제