위키 개발 가이드라인
- GitLab 13.5에 도입되었습니다.
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
이 될 수 있는 컨테이너로 초기화되어야 합니다:
일부 모델은 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를 통해 첨부 파일을 업로드하며, 이는 위키 리포지터리에 커밋으로 파일을 저장합니다.