> ## 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, що охоплюють обмеження синхронізації репозиторію, угоди щодо гілок і поширені питання про upstream та версіонування.

### Вступ

Перш ніж заглиблюватися в розробку, просимо вас ознайомитися з таким:

* Офіційно 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`: ця гілка використовується лише для синхронізації коду з upstream, будь ласка, **НЕ** комітьте до неї жодних сторонніх змін. У цій гілці ми ставимо теги на кшталт `ce-v[X.x.x]`, які означають, що стан відповідає `v[X.x.x]` в офіційній Overleaf Community Edition. Примітка: цей тег незмінний!
* `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-образу

### Питання та відповіді

<Accordion title="Як знайти хеш коміту для Overleaf Community Edition `X.0.0`?">
  Насамперед потрібно завантажити Docker-образ і виконати таку команду, щоб переглянути мітки (labels) цього образу:

  ```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 в upstream.
</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.