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

# Diretrizes de desenvolvimento

> Diretrizes de contribuição para o overleaf-pro, abordando as restrições de sincronização do repositório, as convenções de branches e perguntas frequentes sobre upstream e versionamento.

### Introdução

Antes de mergulhar no desenvolvimento, esperamos que você compreenda os seguintes pontos:

* Oficialmente, o Overleaf é desenvolvido em um [repositório interno](http://github.com/overleaf/internal), e a Community Edition é publicada em [overleaf/overleaf](https://github.com/overleaf/overleaf). Um copybot é responsável por sincronizar o código entre os repositórios interno e público.
* [Ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro) é uma versão derivada (fork) do Overleaf Community. Esperamos que este projeto seja de longo prazo, por isso, siga as regras antes de contribuir.

### Regras de commit

* Não faça modificações extensas no código existente do Overleaf. Concentre o máximo possível de funcionalidades na pasta `services/web/modules`. Isso minimizará nosso trabalho ao mesclar e atualizar o código posteriormente.
* O vibe coding é de fato muito prático, mas pode facilmente bagunçar nosso projeto, tornando-o impossível de manter mais tarde; por isso, use-o com cautela.
* Não adicione nenhum conteúdo relacionado a traduções durante o desenvolvimento; use as traduções existentes sempre que possível.
* Evite introduzir variáveis de ambiente, a menos que seja absolutamente necessário. Se forem necessárias, garanta que sejam o mais consistentes possível com as do Overleaf Toolkit ou de [docs.overleaf.com](https://docs.overleaf.com/).

### Regras de branches

Usamos os seguintes branches para o desenvolvimento do overleaf-pro:

* `main`: Este branch é usado apenas para a sincronização do código upstream; **NÃO** faça commit de nenhuma alteração externa. Neste branch, definimos algumas tags como `ce-v[X.x.x]`, que indicam a correspondência com a `v[X.x.x]` do Overleaf Community Edition oficial. Observação: essa tag é imutável!
* `server-pro`: Este é o branch padrão para o desenvolvimento diário.
* `feature-X`: Este branch é usado para desenvolver uma funcionalidade específica.
* `release-vX.0.0`: Branch específico para lançamentos; faremos alguns hot-fixes antes do lançamento.

<Frame caption="Regras de branches do 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

O [GitHub Action](https://github.com/ayaka-notes/overleaf-pro/actions) é responsável pelo CI/CD automático, que inclui:

* Atualização noturna do branch main
* Build da imagem Docker para desenvolvimento
* Lançamento da imagem Docker

### Perguntas e respostas

<Accordion title="Como encontrar o hash do commit do Overleaf Community Edition `X.0.0`?">
  Primeiro, você precisa baixar a imagem Docker e executar o seguinte comando para inspecionar os labels dessa imagem:

  ```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"}
  ```

  Em seguida, você pode verificar se o [commit (b0d05c0)](https://github.com/overleaf/overleaf/commit/b0d05c0cf0750714e1f467d20ed6c5f5e9467e8f) está presente no branch master upstream.
</Accordion>

<Accordion title="Por que o hash do commit é o mesmo na imagem CE entre `6.0.0` e `6.0.1`?">
  Esse é um comportamento esperado. A versão 6.0.1 é uma pequena versão de patch construída sobre a imagem 6.0.0. As alterações são aplicadas por meio de patches na imagem 6.0.0 existente, em vez de reconstruir a imagem a partir de um novo commit. Por isso, o hash do commit dentro da imagem é idêntico entre 6.0.0 e 6.0.1.

  Para informações detalhadas, consulte [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.