> ## 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), а версия 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]`, которые означают, что состояние соответствует версии `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-образ и выполнить следующую команду, чтобы просмотреть метки этого образа:

  ```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.