# RecSys

## Browser Compatibility

O EOL das versões 8,9 e 10 do IE foi em 2016, portanto não há por que continuarmos dando suporte
para browsers que já não recebem updates de segurança e não são mais indicados pelos próprios devs.

Tendo isso em mente, o arquivo gerado segue a especificação do ES5, a risca. Utilizamos também
polyfill para `Promise` e `fetch`, somente quando necessário.

## GitFlow

Este projeto segue as prática de [GitFlow](https://jeffkreeftmeijer.com/git-flow/) usando a extensão [GitFlow AVH](https://github.com/petervanderdoes/gitflow-avh).

### Desenvolver uma atividade

Para desenvolver uma atividade, é necessário criar um _feature branch_ filho de _develop_. No final, é necessário criar o commit, fazer o push e gerar o _merge request_ para _develop_.

```sh
git checkout develop
git pull origin develop
git flow feature start user-report
```

```sh
git commit -m "Added user report"
git flow feature publish
```

### Corrigir um bug

Para corrigir um bug, é necessário criar um _bugfix branch_ filho de _develop_. No final, é necessário criar o commit, fazer o push e gerar o _merge request_ para _develop_.

```sh
git checkout develop
git pull origin develop
git flow bugfix start user-report
```

```sh
git commit -m "Fix user report"
git flow bugfix publish
```

### Corrigir um bug em produção

Para corrigir um erro crítico, é necessário baixar a ultima versão do branch _master_, iniciar um hotfix do GitFlow, alterar o changelog, testar a versão e só então finalizar o hotfix.

```sh
git checkout master
git pull origin master
git flow hotfix start v1.2.3
git commit -m "Fixed null pointer"
git commit -m "Updated changelog"
git flow hotfix publish
```

```sh
git flow hotfix finish
git push origin master
git push origin develop
git push --tags
```

### Criar uma versão estável

Para gerar uma versão, é necessário baixar a ultima versão do branch _develop_, iniciar um release do GitFlow, alterar o changelog, testar a versão e só então finalizar o release.

```sh
git checkout develop
git pull origin develop
git flow release start v1.2.3
git commit -m "Updated changelog"
git flow release publish
```

```sh
git flow release finish
git push origin master
git push origin develop
git push --tags
```

### Code review

Com o merge request aberto, basta fazer o code review pelo GitLab, checando se o código compila e se os testes estão passando. Depois de tudo certo, o merge pode ser feito para _develop_.

> **É preferível marcar para fazer _squash_ dos commits e excluir o _feature branch_, mas _nunca_ fazer o merge no branch _master_.**

## Deploy (CI)

TODO: Escrever documentação sobre o CI.
