# Procedimentos para Versionamento de código SIGAA, SIGRH, SIPAC e SIGAdmin

### Descrição

Os código fontes estão localizados no seguinte grupo de repositórios do GitLab: [sig-ufrn](https://git.ufla.br/sig-ufrn "sig-ufrn") .

Os repositórios tem a branch 'master' que deve ter o conteúdo de acordo com o código que está em produção. Os repositório tem também a branch 'rc' (*release candidate*) que deve conter as alterações no momento que a *release* é preparada.

#### Procedimentos:

##### Clonar um repositório:

Clona o conteúdo do GitLab para sua máquina. Esse procedimento irá criar uma pasta com o nome do projeto apontando para a branch master.

```shell
git clone git@git.ufla.br:sig-ufrn/<project>.git <NOME_PROJETO_MAIUSCULO>
```

##### Criar uma *branch*:

Cria uma branch localmente com o conteúdo atualizado da master.

```shell
git checkout master
git pull origin master
git checkout -b <nome_branch>
```

Para subir a nova branch para o repostório remoto:

```shell
git push origin <nome_branch>
```

##### Conferindo alterações feitas na *branch*:

Os comandos abaixo irá:

1. Listar os arquivos modificados
2. Mostrar a diferença nos arquivos
3. Adicionar os arquivos modificados no *stage* para serem comitados

```shell
git status
git diff <path>
git add <path>
```

##### Comitando as alterações:

Comita as alterações localmente.

```shell
git commit -m "<mensagem de commit>"
```

##### Fazendo *merge* da *branch* com a *master*:

Faz o merge da branch com a master atualizada localmente.

```shell
git checkout master
git pull origin master
git checkout <nome_branch>
git merge master
```

##### Subindo as alterações para o repositório:

Sobe todas as alterações para o repositório remoto.

```shell
git push origin <nome_branch>
```

##### Sincronizando a *branch* com o repositório:

Atualiza o repositório local com as alterações que estão no repositório remoto.

```shell
git pull origin <nome_branch>
```

##### Criando *tags*:

Cria uma *tag* indicando uma versão do sistema.

```shell
git checkout master
git pull origin master
git tag -a 'NN.NN.NN.NN' -m "<SISTEMA> NN.NN.NN.NN"
git push origin --tags
```

##### Mudar de *branch*:

```shell
#atualiza o repositorio com as branchs remotas
git fetch origin

#mudar para uma branch já existente
git checkout <nome_branch>
#ou criar uma nova branch
git checkout <nome_nova_branch>
```