|  |  |  | # Processo de Desenvolvimento | 
|  |  |  |  | 
|  |  |  | ## Descrição | 
|  |  |  |  | 
|  |  |  | Esta seção é dedicada a apresentar o processo de desenvolvimento do time. | 
|  |  |  |  | 
|  |  |  | ## Sumário | 
|  |  |  |  | 
|  |  |  | * [Git Workflow](#git-workflow) | 
|  |  |  |  | 
|  |  |  | ## Git Workflow | 
|  |  |  |  | 
|  |  |  | ### Gitflow | 
|  |  |  |  | 
|  |  |  | O Gitflow é um modelo alternativo de ramificação do Git que consiste no uso de ramificações de recursos (features) e várias ramificações primárias (Main e Develop). | 
|  |  |  |  | 
|  |  |  | ### Branches | 
|  |  |  |  | 
|  |  |  | Cada branch relacionada a features será criada a partir da branch develop. | 
|  |  |  |  | 
|  |  |  | #### Nomes | 
|  |  |  |  | 
|  |  |  | Como padrão para nomes de branches, foi decidido o seguinte: | 
|  |  |  |  | 
|  |  |  | ``` | 
|  |  |  | feature/<USxTx>/<descricao-breve> | 
|  |  |  | ``` | 
|  |  |  | Ex: feature/US0T3/mock-data | 
|  |  |  |  | 
|  |  |  | #### Criação | 
|  |  |  |  | 
|  |  |  | Para garantir que o processo de desenvolvimento esteja sempre atualizado, lembre-se de executar o seguinte comando na branch develop antes de criar uma branch nova: | 
|  |  |  |  | 
|  |  |  | ``` | 
|  |  |  | git pull origin develop | 
|  |  |  | ``` | 
|  |  |  |  | 
|  |  |  | Depois da execução desse comando é necessário oficialmente criar a Branch, para isso, execute o seguinte comando: | 
|  |  |  |  | 
|  |  |  | ``` | 
|  |  |  | git checkout -b <nomeDaBranch> | 
|  |  |  | ``` | 
|  |  |  |  | 
|  |  |  | Assim que criar a branch, é necessário fazer um `push`para garantir que a mesma estará remota: | 
|  |  |  |  | 
|  |  |  | ``` | 
|  |  |  | git push --set-upstream origin <nomeDaBranch> | 
|  |  |  | ``` | 
|  |  |  |  | 
|  |  |  | Pronto! Agora você já pode começar a programar na sua Branch. | 
|  |  |  |  | 
|  |  |  | ### Commits | 
|  |  |  |  | 
|  |  |  | Para que o código desenvolvido seja salvo em sua branch de maneira remota, é necessário realizar os comandos de `commit` e `push` | 
|  |  |  |  | 
|  |  |  | #### 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: | 
|  |  |  |  | 
|  |  |  | ``` | 
|  |  |  | git add <nomeDoArquivo> | 
|  |  |  | ``` | 
|  |  |  |  | 
|  |  |  | 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: | 
|  |  |  |  | 
|  |  |  | ``` | 
|  |  |  | git commit -m 'descrição da tarefa em português' | 
|  |  |  | ``` | 
|  |  |  |  | 
|  |  |  | 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`: | 
|  |  |  |  | 
|  |  |  | ``` | 
|  |  |  | git push | 
|  |  |  | ``` | 
|  |  |  |  | 
|  |  |  | ### Merge Requests | 
|  |  |  |  | 
|  |  |  | Depois de uma task ter sido desenvolvida e estiver pronta de acordo com os critérios de aceitação, é necessário que a mesma seja enviada para a branch de desenvolvimento. Para isso é necessário abrir um Merge Request pela platafora GitLab: | 
|  |  |  |  | 
|  |  |  | #### Criando o Merge Request | 
|  |  |  |  | 
|  |  |  | A criação pode ser realizada na seção Merge Requests do repositório em que a branch foi criada. Clicando no botão `New Merge Request` siga os seguintes passos: | 
|  |  |  |  | 
|  |  |  | 1. Selecionar a branch de origem (sua branch de desenvolvimento); | 
|  |  |  | 1. Selecionar a branch de destino (branch develop); | 
|  |  |  | 1. Selecione `Compare branches and continue` | 
|  |  |  | 1. Em `Title`, escreva um título que descreva a funcionalidade adicionada ou bug corrigido; | 
|  |  |  | 1. Em `Description`, escreva uma descrição com uma breve justificativa nos arquivos que foram alterados; | 
|  |  |  | 1. Na seção `Assignee`, selecione `Assign to me` para que fique registrado quem foi o responsável pelo desenvolvimento daquela tarefa (a pessoa selecionada será chamada caso o revisor tenha dúvidas sobre a tarefa); | 
|  |  |  | 1. Em `Milestone` selecione a Sprint em que a tarefa foi realizada; | 
|  |  |  | 1. Em `Labels`selecione qual é o tipo de tarefa que foi realizada; | 
|  |  |  | 1. Por último, revise se os arquivos que estão sendo enviados estão corretos e clique em `Submit Merge Request`. | 
|  |  |  |  | 
|  |  |  | #### Revisando o Merge Request | 
|  |  |  |  | 
|  |  |  | A revisão de merge request pode ser realizada por qualquer desenvolvedor, mas é preciso da aprovação de pelo menos um AGES III ou AGES IV para que a mesma seja incorporada na develop. | 
|  |  |  |  | 
|  |  |  | Na hora de revisar o Merge Request, entre na branch em sua máquina e teste a funcionalidade/bug/componente/tela de acordo com os critérios de aceitação apresentados na task no Clickup. | 
|  |  |  |  | 
|  |  |  | Caso haja pendências, relacionadas a documentação do código, padronização ou arquivos enviados, não exite em realizar um novo commit na branch com as mudanças necessárias antes de realizar a integração. |