|
|
# Arquitetura e Métodos Utilizados
|
|
|
## GitFlow
|
|
|
|
|
|
### **O que é?**
|
|
|
|
|
|
GitFlow é o processo de contribuição para os projetos utilizando a ferramenta do Git. As definições presentes neste doc se aplicam tanto para os repositórios de frontend quando para o repositório de backend.
|
|
|
|
|
|
### ![gitflow](uploads/41796c9e121bb474f55934ee3a09c540/image.png)
|
|
|
|
|
|
#### Branches protegidas:
|
|
|
|
|
|
As seguintes branches nunca devem ser apagadas e possuem regras específicas:
|
|
|
|
|
|
#### main
|
|
|
|
|
|
Branch principal do projeto. Esta branch deve sempre representar o código rodando no ambiente de produção. A branch é protegida e só pode ser alterada a partir de Merge Requests vindo diretamente da branch **develop** OU de branches de **hotfix**. Apenas AGES III e IV podem fazer merge dos MRs e realizar alterações nessa branch.
|
|
|
|
|
|
Quando é feito merge de um MR para essa branch, a Pipeline de CI é disparada para checagem.
|
|
|
|
|
|
#### dev
|
|
|
|
|
|
Branch default para desenvolvimento. Esta deve ser a branch de partida de todas as outras branches do projeto, exceto **hotfix**. Essa branch é protegida para modificação que não seja através de Merge Requests. Qualquer AGES pode criar um MR pra ela e fazer merge desse MR.
|
|
|
|
|
|
Quando é feito merge de um MR para essa branch, a Pipeline de CI é disparada para checagem e em caso de sucesso o deploy é feito automaticamente para o ambiente de DEV.
|
|
|
|
|
|
#### Branches não protegidas (feature/fix/chore/Hotfix):
|
|
|
|
|
|
**Feature:** branches para implementação de funcionalidades novas. O padrão de nomenclatura é _feature/_ onde representa uma breve descrição do que está sendo implementado nesta branch. Exemplo: _feature/tela-cadastro_.
|
|
|
|
|
|
**Fix:** branches para correção de bugs. O padrão de nomenclatura é _fix/_ onde representa uma breve descrição do que está sendo corrigido nessa branch. Exemplo: _fix/cor-errada-no-login_.
|
|
|
|
|
|
**Chore:** branches para configuração. O padrão de nomenclatura é _chore/_ onde representa uma breve descrição do que está sendo configurado nessa branch. Exemplo: chore\*/pipeline-ci\*.
|
|
|
|
|
|
MRs dessas branches devem sempre ser abertos _para_ **develop**.
|
|
|
|
|
|
**Hotfix**: é um padrão específico para "furar" o fluxo de desenvolvimento e aplicar uma correção diretamente em um ambiente mais alto (no caso do projeto, produção). Uma branch hotfix segue o padrão _hotfix/_ onde representa uma breve descrição do que está sendo corrigido nessa branch.
|
|
|
|
|
|
Devem ser abertos 2 MRs: um para **main** e um para **develop**.
|
|
|
|
|
|
**Como posso criar uma branch?**
|
|
|
|
|
|
Para garantir que o processo de desenvolvimento esteja sempre atualizado, lembre-se de executar o seguinte comando na branch dev antes de criar uma branch nova:
|
|
|
|
|
|
<div>
|
|
|
|
|
|
```plaintext
|
|
|
git pull origin dev
|
|
|
```
|
|
|
|
|
|
</div>Depois da execução desse comando é necessário oficialmente criar a Branch, para isso, execute o seguinte comando:
|
|
|
|
|
|
<div>
|
|
|
|
|
|
```plaintext
|
|
|
git checkout -b feature/<nomeDaBranch>
|
|
|
```
|
|
|
|
|
|
</div>Assim que criar a branch, é necessário fazer um \`push\`para garantir que a mesma estará remota:
|
|
|
|
|
|
<div>
|
|
|
|
|
|
```plaintext
|
|
|
git push --set-upstream origin feature/<nomeDaBranch>
|
|
|
```
|
|
|
|
|
|
</div>Pronto! Agora você já pode começar a programar na sua Branch.
|
|
|
|
|
|
### Commits
|
|
|
|
|
|
#### Salvando Localmente
|
|
|
|
|
|
Para garantir que apenas o código necessário para funcionamento da tarefa lembre-se de realizar o comando `add` apenas nos arquivos **essenciais** para a tarefa:
|
|
|
|
|
|
<div>
|
|
|
|
|
|
```plaintext
|
|
|
git add <nomeDoArquivo>
|
|
|
```
|
|
|
|
|
|
</div>Depois de adicionar todos os arquivos que deseja salvar, execute o commando de commit com uma mensagem curta que represente o que foi trabalhado nesses arquivos adicionados:
|
|
|
|
|
|
<div>
|
|
|
|
|
|
```plaintext
|
|
|
git commit -m 'descrição da tarefa em português'
|
|
|
```
|
|
|
|
|
|
</div>O padrão de commits é que as mensagens devem ser em Português.
|
|
|
|
|
|
Caso tenha interesse, há um padrão de commits similar a nomenclatura de branches escolhida chamado [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/#:\~:text=spelling%20of%20CHANGELOG-,Commit%20message%20with%20scope,-feat(lang)%3A%20add) mas isso é apenas uma _sugestão_ pra quem tiver interesse em conhecer.
|
|
|
|
|
|
Não hesite em realizar vários commits, assim podemos ter docuemntado e salvo vários estados do desenvolvimento
|
|
|
|
|
|
#### Salvando Remotamente
|
|
|
|
|
|
Depois de finalizar o desenvolvimento, envie todos os commits da sua máquina para o servidor remoto. Para isso depois de realizar as etapas de salvamento local, salve remotamente com o comando `push`:
|
|
|
|
|
|
<div>
|
|
|
|
|
|
```plaintext
|
|
|
git push
|
|
|
```
|
|
|
|
|
|
</div> |
|
|
\ No newline at end of file |