위키 개발 지침

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

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

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

관련된 젬

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

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

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

관련 주제