> ## 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 へのコントリビューションガイドライン。リポジトリ同期の制約、ブランチ規約、アップストリームとバージョニングに関するよくある Q&A を扱います。

### はじめに

開発に取りかかる前に、以下の点を理解しておいてください。

* Overleaf は公式には[内部リポジトリ](http://github.com/overleaf/internal)で開発されており、Community Edition は [overleaf/overleaf](https://github.com/overleaf/overleaf) で公開されています。内部リポジトリと公開リポジトリ間のコード同期は copybot が担当しています。
* [Ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro) は Overleaf Community のフォーク版です。このプロジェクトを長期的に継続させたいと考えているため、コントリビュートする前に以下のルールに従ってください。

### コミットルール

* 既存の Overleaf のコードに大規模な変更を加えないでください。機能はできる限り `services/web/modules` フォルダーに集約してください。これにより、後でコードをマージ・更新する際の作業量を最小限に抑えられます。
* Vibe coding は確かに手軽な方法ですが、プロジェクトを簡単に混乱させ、後々メンテナンス不能にしてしまう可能性があるため、慎重に使用してください。
* 開発中に翻訳関連のコンテンツを追加しないでください。可能な限り既存の翻訳を使用してください。
* どうしても必要な場合を除き、環境変数を新たに導入しないでください。必要な場合は、Overleaf Toolkit や [docs.overleaf.com](https://docs.overleaf.com/) にある環境変数とできる限り一貫性を保つようにしてください。

### ブランチルール

overleaf-pro の開発では、以下のブランチを使用します。

* `main`: このブランチはアップストリームのコード同期専用です。外部の変更は**絶対に**コミットしないでください。このブランチには `ce-v[X.x.x]` のようなタグを付けます。これは Overleaf 公式 Community Edition の `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 Community Edition `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.