> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 개발 가이드라인

> overleaf-pro 기여 가이드라인으로, 저장소 동기화 제약, 브랜치 규칙, 업스트림 및 버전 관리에 관한 자주 묻는 질문을 다룹니다.

### 소개

개발을 시작하기 전에 다음 사항을 이해해 주시기 바랍니다.

* Overleaf는 공식적으로 [내부 저장소](http://github.com/overleaf/internal)에서 개발되며, 커뮤니티 에디션은 [overleaf/overleaf](https://github.com/overleaf/overleaf)에 공개됩니다. copybot이 내부 저장소와 공개 저장소 간의 코드 동기화를 담당합니다.
* [Ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro)는 Overleaf 커뮤니티 에디션을 포크한 버전입니다. 이 프로젝트가 오래 지속되기를 바라므로, 기여하기 전에 아래 규칙을 따라 주세요.

### 커밋 규칙

* 기존 Overleaf 코드를 대규모로 수정하지 마세요. 가능한 한 많은 기능을 `services/web/modules` 폴더에 모아 주세요. 이렇게 하면 나중에 코드를 병합하고 업데이트할 때의 작업량을 최소화할 수 있습니다.
* 바이브 코딩은 확실히 매우 쉬운 방법이지만, 프로젝트를 쉽게 엉망으로 만들어 나중에 유지보수가 불가능해질 수 있으므로 신중하게 사용해 주세요.
* 개발 중에 번역 관련 콘텐츠를 추가하지 마세요. 가능한 한 기존 번역을 사용하세요.
* 꼭 필요한 경우가 아니라면 환경 변수를 새로 도입하지 마세요. 필요한 경우 Overleaf Toolkit 또는 [docs.overleaf.com](https://docs.overleaf.com/)의 환경 변수와 최대한 일관되도록 하세요.

### 브랜치 규칙

overleaf-pro 개발에는 다음 브랜치를 사용합니다.

* `main`: 이 브랜치는 업스트림 코드 동기화에만 사용되므로, 외부 변경 사항을 **절대** 커밋하지 마세요. 이 브랜치에는 `ce-v[X.x.x]`와 같은 태그를 설정하며, 이는 Overleaf 공식 커뮤니티 에디션의 `v[X.x.x]`에 해당함을 나타냅니다. 참고: 이 태그는 변경할 수 없습니다!
* `server-pro`: 일상적인 개발을 위한 기본 브랜치입니다.
* `feature-X`: 특정 기능을 개발하는 데 사용하는 브랜치입니다.
* `release-vX.0.0`: 릴리스 전용 브랜치로, 릴리스 전에 핫픽스를 진행합니다.

<Frame caption="Overleaf Pro의 브랜치 규칙">
  <img src="https://mintcdn.com/ayakaleaf-pro/x9kfDjtWlyyhG_mR/images/dev/release-model.png?fit=max&auto=format&n=x9kfDjtWlyyhG_mR&q=85&s=8a10a259ff5a6437cb05f03560a5dc2c" alt="" width="5652" height="2544" data-path="images/dev/release-model.png" />
</Frame>

### GitHub Action

[GitHub Action](https://github.com/ayaka-notes/overleaf-pro/actions)은 자동 CI/CD를 담당하며, 다음 작업을 포함합니다.

* main 브랜치 야간 업데이트
* 개발용 Docker 이미지 빌드
* Docker 이미지 릴리스

### Q\&A

<Accordion title="Overleaf 커뮤니티 에디션 `X.0.0`의 커밋 해시는 어떻게 찾나요?">
  먼저 Docker 이미지를 pull한 후, 다음 명령을 실행하여 이 Docker 이미지의 레이블을 확인해야 합니다.

  ```shellscript title="bash" wrap theme={null}
  docker inspect --format='{{json .Config.Labels}}' sharelatex/sharelatex:6.0.0
  {"com.overleaf.ce.revision":"b0d05c0cf0750714e1f467d20ed6c5f5e9467e8f","org.opencontainers.image.ref.name":"ubuntu","org.opencontainers.image.version":"24.04"}
  ```

  그런 다음 [커밋(b0d05c0)](https://github.com/overleaf/overleaf/commit/b0d05c0cf0750714e1f467d20ed6c5f5e9467e8f)이 업스트림 master 브랜치에 있는지 확인할 수 있습니다.
</Accordion>

<Accordion title="CE 이미지 `6.0.0`과 `6.0.1`의 커밋 해시가 같은 이유는 무엇인가요?">
  이는 예상된 동작입니다. 6.0.1 릴리스는 6.0.0 이미지를 기반으로 빌드된 소규모 패치 릴리스입니다. 변경 사항은 새 커밋으로 이미지를 다시 빌드하는 대신 기존 6.0.0 이미지에 패치를 적용하는 방식으로 반영됩니다. 따라서 이미지 내부의 커밋 해시는 6.0.0과 6.0.1에서 동일합니다.

  자세한 내용은 [hotfix](https://github.com/overleaf/overleaf/tree/main/server-ce/hotfix)를 참조하세요.
</Accordion>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.