위키 개발 지침
GitLab의 위키 기능은 Gollum 4.x를 기반으로 합니다. 이것은 Gitaly 루비 서비스에서 사용되며, Rails 앱에서 Gitaly RPC 호출을 통해 액세스됩니다.
위키는 Git 리포지터리를 저장 백엔드로 사용하며 다음을 통해 액세스할 수 있습니다:
관련 Gem들
위키에 사용된 주목할만한 Gem들은 다음과 같습니다:
구성요소 | 설명 | Gem 이름 | GitLab 프로젝트 | 상위 프로젝트 |
---|---|---|---|---|
gitlab
| 마크업 렌더러, 다양한 다른 Gem에 의존 | gitlab-markup
| gitlab-org/gitlab-markup
| github/markup
|
Gollum에 대한 참고 사항
위키 페이지 렌더링 시, 우리는 전혀 Gollum을 사용하지 않고
사용자 정의 Banzai 파이프라인을 통해 진행합니다.
이는 Gollum [[link]]
구문과 같은 위키별 마크업을 추가합니다.
우리는 대부분의 Gollum 기능을 사용하지 않기 때문에, 언젠가는 완전히 이를 떠나기로 계획하고 있습니다. 참고용 이번 Epic을 확인하세요.
모델 클래스들
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를 통해 첨부 파일을 업로드하며, 이는 위키 리포지터리의 커밋으로 파일을 저장합니다.