Skip to content
Snippets Groups Projects
Commit bfe645a6 authored by Alcides Conte Neto's avatar Alcides Conte Neto
Browse files

Merge branch 'issue#25' into 'devel'

Issue#25

Concluído o capítulo com as ilustrações dos fluxos de trabalho.

See merge request !15
parents de4dbd21 c6322798
No related branches found
No related tags found
No related merge requests found
...@@ -153,71 +153,149 @@ deixar de fora como você fez as modificações, pois o código alterado já ...@@ -153,71 +153,149 @@ deixar de fora como você fez as modificações, pois o código alterado já
deverá ser auto-explicativo. deverá ser auto-explicativo.
### Esqueleto do tópico ## 2.Modelos de fluxos de trabalho
- Repositórios: níveis de acesso, adicionar colaboradores, configuração A escolha do *workflow* (fluxo de trabalho) depende de cada projeto e das preferências pessoais. Podemos utilizar as informações sobre cada *workflow*, e decidir qual é mais adequado para cada projeto. Existem quatro maneiras
inicial do repositório principais de trabalhar em colaboração com o git e o GitLab:
- Commits: convenções gerais específicas - #### **Centralized workflow**:
recomendado para projetos pequenos, e/ou que não necessitam de muitas
alterações. Nesse workflow, o repositório possui apenas um brach (`master`)
e as alterações são feitas nesse branch. As revisões só poderão ser
realizadas depois que tudo foi enviado para o servidor remoto. Com isso,
há uma grande chance de ocorrerem conflitos.
## 2.Modelos de fluxos de trabalho **Exemplo**
A escolha do *workflow* (fluxo de trabalho) depende de cada projeto e das preferências pessoais. Podemos utilizar as informações sobre cada *workflow*, e decidir qual é mais adequado para cada projeto. Existem quatro maneiras Após iniciar um repositório central, os colaboradores devem clonar
principais de trabalhar em colaboração com o git e o GitLab: o repositório.
![](./images/traba-central-1.png)
FIGURA: Colaboradores clonando o repositório central
Depois de um colaborador terminar seu trabalho remotamente, ele
publica as modificações para o repositório central, para que os
demais membros possam ter acesso.
![](./images/traba-central-2.png)
FIGURA: Colaborador publicando as modificações no repositório central
Outro membro também termina seu trabalho e resolve publicar no
repositório central, porém não irá conseguir. O repositório central
está diferente do seu repositório local.
- **Centralized workflow**: recomendado para projetos pequenos, e/ou que ![](./images/traba-central-3.png)
não necessitam de muitas alterações. Nesse workflow, o repositório possui
apenas um brach (`master`) e as alterações são feitas nesse branch. As FIGURA: Colaborador não conseguindo publicar as modificações no
revisões só poderão ser realizadas depois que tudo foi enviado para o repositório central
servidor remoto. Com isso, há uma grande chance de ocorrerem conflitos.
Para conseguir enviar as modificações realizadas, o colaborador
- **Feature branch workflow**: recomendado para projetos pequenos e grandes precisa puxar as atualizações feitas para o seu repositório,
que envolvam mais de um colaborador. O projeto principal é mantido no integrá-los com as suas alterações locais, e em seguida, tentar
branch master. Se um membro quiser realizar alguma alteração, deverá criar novamente.
um novo branch `feature`, e fazer as alterações nesse branch e sugerir um
`merge request`. Com isso, os demais colaboradores poderão revisar ![](./images/traba-central-4.png)
as alterações sugeridas e discutir as modificações, até que uma pessoa
habilitada faça o merge desse branch `freature` para o branch `master`. FIGURA: Colaborador puxando as modificações do repositório central
Após feito isso, será possível o colaborador fazer as modificações.
![](./images/traba-central-5.png)
FIGURA: Colaborador publica modificações do repositório central
- #### **Feature branch workflow**:
recomendado para projetos pequenos e grandes que envolvam mais de um
colaborador. O projeto principal é mantido nobranch master. Se um membro
quiser realizar alguma alteração, deverá criar um novo branch `feature`,
e fazer as alterações nesse branch e sugerir um `merge request`. Com isso,
os demais colaboradores poderão revisar as alterações sugeridas e discutir as modificações, até que uma pessoa habilitada faça o merge desse branch
`freature` para o branch `master`.
Dessa forma, evita-se os possíveis conflitos e garante que tais alterações Dessa forma, evita-se os possíveis conflitos e garante que tais alterações
não causaram algum problema. Esse workflow é altamente recomendado por não causaram algum problema. Esse workflow é altamente recomendado por
ser simples de gerenciar, evitar grandes conflitos, e ser relativamente ser simples de gerenciar, evitar grandes conflitos, e ser relativamente
fácil para usuários novos do git. fácil para usuários novos do git.
- **Gitflow workflow**: indicado para projetos maiores e/ou com um grande **Exemplo**
número de colaboradores. Esse workflow envolve a criação de alguns branches
com funções específicas. Todo o desenvolvimento é realizado no branch Antes de começar a desenvolver um recurso, é preciso de criar um
`develop`. Quando uma versão está pronta, ela é movida para o branch ramo isolado para trabalhar
`release`, onde é testada e finalmente incorporada ao ramo master,
que contém apenas versões finais (estáveis). É extremamente recomendado ![](./images/traba-feature-1.png)
esse workflow para desenvolvimento de softwares, porém exige de mais
familiaridade com o git. Permite, por exemplo, que os usuários de um FIGURA: Criando um novo ramo para o trabalho
software, instalem tanto uma versão estável (do branch `master`) quanto
uma versão em desenvolvimento (do branch `develop`).
- **Forking workflow**: recomendado para projetos abertos, onde se espera Com isso, o membro poderá iniciar o seu trabalho, e realizar o que
usuários externos façam contribuições. Esse workflow consiste de um repositório oficial, de onde os colaboradores fazem um `fork` desse repositório, e passam for necessário nesse ramo (brach). Após finalizar o projeto, o colaborador
a desenvolver o projeto de maneira independente. Assim, cada colaborador envia suas modificações, irá requirir um `merge request` para que
poderá adotar o workflow de preferência, e não precisará ter acesso ao as alterações feitas nesse branch, sejam incorporadas no `master`. Os
repositório oficial, apenas colaborar enviando `merge`. demais membros, poderão avaliar se tais modificações são pertinentes
para o projeto.
![](./images/traba-feature-2.png)
FIGURA: Colaborador solicita merge, e aguarda revisão dos demais
colaboradores
Quando as alterações sugeridas para o colaborador forem incorporadas
o branch poderá ser movido para o `master`.
![](./images/traba-feature-3.png)
FIGURA: Movendo ramo para o master
- #### **Gitflow workflow**:
indicado para projetos maiores e/ou com um grande número de colaboradores.
Esse workflow envolve a criação de alguns branches com funções específicas.
Todo o desenvolvimento é realizado no branch `develop`. Quando uma versão
está pronta, ela é movida para o branch `release`, onde é testada e
finalmente incorporada ao ramo master, que contém apenas versões finais
(estáveis). É extremamente recomendado esse workflow para desenvolvimento
de softwares, porém exige de mais familiaridade com o git. Permite, por
exemplo, que os usuários de um software, instalem tanto uma versão estável
(do branch `master`) quanto uma versão em desenvolvimento
(do branch `develop`).
**Exemplo**
São criados branches com funções específicas, como no exemplo `Hotfix`,
`Release` e `Develop`.
![](./images/traba-git-1.png)
FIGURA: Ilustração dos branches específicos
*Develop* é semelhante ao master do feature branch workflow. *Release*
serve "lançar" possíveis bugs gerados no código. *Hotfix* contém as
correções dos bugs do release que não podem aguardar o lançamento
do mesmo.
- #### **Forking workflow**:
recomendado para projetos abertos, onde se espera usuários externos façam contribuições. Esse workflow consiste de um repositório oficial, de onde
os colaboradores fazem um `fork` desse repositório, e passam a desenvolver
o projeto de maneira independente. Assim, cada colaborador poderá adotar
o workflow de preferência, e não precisará ter acesso ao repositório
oficial, apenas colaborar enviando `merge`.
**Exemplo**
Criado o repositório central, os colaboradores fazem um `fork`
poderão trabalhar de maneira independente.
![](./images/traba-forking-1.png)
FIGURA: Ilustração dos forks de um projeto
Independente da escolha do workflow para cada projeto é importante sempre Independente da escolha do workflow para cada projeto é importante sempre
informar o método que está sendo utilizado para seus colaboradores, informar o método que está sendo utilizado para seus colaboradores,
para que eles possam seguir o mesmo padrão. Essas informações poderão ser para que eles possam seguir o mesmo padrão. Essas informações poderão ser
descritas em `README.md` ou no `CONTRIBUTING.md`. descritas em `README.md` ou no `CONTRIBUTING.md`.
### Esqueleto do tópico
- *Descrever os quatro principais tipos de workflow (Centralized workflow,
Feature branch workflow, gitflow workflow e Forking workflow)*
- *Materiais de apoio*
<a href="http://git.leg.ufpr.br/leg/gitlab-rautu/blob/master/CONTRIBUTING.md">
gitlab-rautu do Fernando Mayer</a> ;
<a href="https://prezi.com/_lm8kozmii8n/git-workflow/"> apresentação do
Diego G. Pasqualin</a>
## 3.Fluxo de trabalho PET no GitLab ## 3.Fluxo de trabalho PET no GitLab
O PET-Estatística UFPR possui um grupo no git para o desenvolvimento de O PET-Estatística UFPR possui um grupo no git para o desenvolvimento de
...@@ -245,5 +323,11 @@ Após o `git push`, a próxima etapa é a requisição de `merge`. Com esse ...@@ -245,5 +323,11 @@ Após o `git push`, a próxima etapa é a requisição de `merge`. Com esse
certeza dessa contribuição, era movida para o ramo `master`. certeza dessa contribuição, era movida para o ramo `master`.
### Esqueleto do tópico ### Referências
- *Funcionamento da elaboração da apostila* https://git-scm.com/book/pt-br/v1/Git-Distribu%C3%ADdo-Contribuindo-Para-Um-Projeto
\ No newline at end of file
https://prezi.com/_lm8kozmii8n/git-workflow/
https://www.atlassian.com/zh/git/workflows\#!workflow-overview
http://git.leg.ufpr.br/leg/gitlab-rautu/blob/master/CONTRIBUTING.md
...@@ -148,71 +148,149 @@ deixar de fora como você fez as modificações, pois o código alterado já ...@@ -148,71 +148,149 @@ deixar de fora como você fez as modificações, pois o código alterado já
deverá ser auto-explicativo. deverá ser auto-explicativo.
### Esqueleto do tópico ## 2.Modelos de fluxos de trabalho
- Repositórios: níveis de acesso, adicionar colaboradores, configuração A escolha do *workflow* (fluxo de trabalho) depende de cada projeto e das preferências pessoais. Podemos utilizar as informações sobre cada *workflow*, e decidir qual é mais adequado para cada projeto. Existem quatro maneiras
inicial do repositório principais de trabalhar em colaboração com o git e o GitLab:
- Commits: convenções gerais específicas - #### **Centralized workflow**:
recomendado para projetos pequenos, e/ou que não necessitam de muitas
alterações. Nesse workflow, o repositório possui apenas um brach (`master`)
e as alterações são feitas nesse branch. As revisões só poderão ser
realizadas depois que tudo foi enviado para o servidor remoto. Com isso,
há uma grande chance de ocorrerem conflitos.
## 2.Modelos de fluxos de trabalho **Exemplo**
A escolha do *workflow* (fluxo de trabalho) depende de cada projeto e das preferências pessoais. Podemos utilizar as informações sobre cada *workflow*, e decidir qual é mais adequado para cada projeto. Existem quatro maneiras Após iniciar um repositório central, os colaboradores devem clonar
principais de trabalhar em colaboração com o git e o GitLab: o repositório.
![](./images/traba-central-1.png)
FIGURA: Colaboradores clonando o repositório central
Depois de um colaborador terminar seu trabalho remotamente, ele
publica as modificações para o repositório central, para que os
demais membros possam ter acesso.
![](./images/traba-central-2.png)
FIGURA: Colaborador publicando as modificações no repositório central
Outro membro também termina seu trabalho e resolve publicar no
repositório central, porém não irá conseguir. O repositório central
está diferente do seu repositório local.
- **Centralized workflow**: recomendado para projetos pequenos, e/ou que ![](./images/traba-central-3.png)
não necessitam de muitas alterações. Nesse workflow, o repositório possui
apenas um brach (`master`) e as alterações são feitas nesse branch. As FIGURA: Colaborador não conseguindo publicar as modificações no
revisões só poderão ser realizadas depois que tudo foi enviado para o repositório central
servidor remoto. Com isso, há uma grande chance de ocorrerem conflitos.
Para conseguir enviar as modificações realizadas, o colaborador
- **Feature branch workflow**: recomendado para projetos pequenos e grandes precisa puxar as atualizações feitas para o seu repositório,
que envolvam mais de um colaborador. O projeto principal é mantido no integrá-los com as suas alterações locais, e em seguida, tentar
branch master. Se um membro quiser realizar alguma alteração, deverá criar novamente.
um novo branch `feature`, e fazer as alterações nesse branch e sugerir um
`merge request`. Com isso, os demais colaboradores poderão revisar ![](./images/traba-central-4.png)
as alterações sugeridas e discutir as modificações, até que uma pessoa
habilitada faça o merge desse branch `freature` para o branch `master`. FIGURA: Colaborador puxando as modificações do repositório central
Após feito isso, será possível o colaborador fazer as modificações.
![](./images/traba-central-5.png)
FIGURA: Colaborador publica modificações do repositório central
- #### **Feature branch workflow**:
recomendado para projetos pequenos e grandes que envolvam mais de um
colaborador. O projeto principal é mantido nobranch master. Se um membro
quiser realizar alguma alteração, deverá criar um novo branch `feature`,
e fazer as alterações nesse branch e sugerir um `merge request`. Com isso,
os demais colaboradores poderão revisar as alterações sugeridas e discutir as modificações, até que uma pessoa habilitada faça o merge desse branch
`freature` para o branch `master`.
Dessa forma, evita-se os possíveis conflitos e garante que tais alterações Dessa forma, evita-se os possíveis conflitos e garante que tais alterações
não causaram algum problema. Esse workflow é altamente recomendado por não causaram algum problema. Esse workflow é altamente recomendado por
ser simples de gerenciar, evitar grandes conflitos, e ser relativamente ser simples de gerenciar, evitar grandes conflitos, e ser relativamente
fácil para usuários novos do git. fácil para usuários novos do git.
- **Gitflow workflow**: indicado para projetos maiores e/ou com um grande **Exemplo**
número de colaboradores. Esse workflow envolve a criação de alguns branches
com funções específicas. Todo o desenvolvimento é realizado no branch Antes de começar a desenvolver um recurso, é preciso de criar um
`develop`. Quando uma versão está pronta, ela é movida para o branch ramo isolado para trabalhar
`release`, onde é testada e finalmente incorporada ao ramo master,
que contém apenas versões finais (estáveis). É extremamente recomendado ![](./images/traba-feature-1.png)
esse workflow para desenvolvimento de softwares, porém exige de mais
familiaridade com o git. Permite, por exemplo, que os usuários de um FIGURA: Criando um novo ramo para o trabalho
software, instalem tanto uma versão estável (do branch `master`) quanto
uma versão em desenvolvimento (do branch `develop`).
- **Forking workflow**: recomendado para projetos abertos, onde se espera Com isso, o membro poderá iniciar o seu trabalho, e realizar o que
usuários externos façam contribuições. Esse workflow consiste de um repositório oficial, de onde os colaboradores fazem um `fork` desse repositório, e passam for necessário nesse ramo (brach). Após finalizar o projeto, o colaborador
a desenvolver o projeto de maneira independente. Assim, cada colaborador envia suas modificações, irá requirir um `merge request` para que
poderá adotar o workflow de preferência, e não precisará ter acesso ao as alterações feitas nesse branch, sejam incorporadas no `master`. Os
repositório oficial, apenas colaborar enviando `merge`. demais membros, poderão avaliar se tais modificações são pertinentes
para o projeto.
![](./images/traba-feature-2.png)
FIGURA: Colaborador solicita merge, e aguarda revisão dos demais
colaboradores
Quando as alterações sugeridas para o colaborador forem incorporadas
o branch poderá ser movido para o `master`.
![](./images/traba-feature-3.png)
FIGURA: Movendo ramo para o master
- #### **Gitflow workflow**:
indicado para projetos maiores e/ou com um grande número de colaboradores.
Esse workflow envolve a criação de alguns branches com funções específicas.
Todo o desenvolvimento é realizado no branch `develop`. Quando uma versão
está pronta, ela é movida para o branch `release`, onde é testada e
finalmente incorporada ao ramo master, que contém apenas versões finais
(estáveis). É extremamente recomendado esse workflow para desenvolvimento
de softwares, porém exige de mais familiaridade com o git. Permite, por
exemplo, que os usuários de um software, instalem tanto uma versão estável
(do branch `master`) quanto uma versão em desenvolvimento
(do branch `develop`).
**Exemplo**
São criados branches com funções específicas, como no exemplo `Hotfix`,
`Release` e `Develop`.
![](./images/traba-git-1.png)
FIGURA: Ilustração dos branches específicos
*Develop* é semelhante ao master do feature branch workflow. *Release*
serve "lançar" possíveis bugs gerados no código. *Hotfix* contém as
correções dos bugs do release que não podem aguardar o lançamento
do mesmo.
- #### **Forking workflow**:
recomendado para projetos abertos, onde se espera usuários externos façam contribuições. Esse workflow consiste de um repositório oficial, de onde
os colaboradores fazem um `fork` desse repositório, e passam a desenvolver
o projeto de maneira independente. Assim, cada colaborador poderá adotar
o workflow de preferência, e não precisará ter acesso ao repositório
oficial, apenas colaborar enviando `merge`.
**Exemplo**
Criado o repositório central, os colaboradores fazem um `fork`
poderão trabalhar de maneira independente.
![](./images/traba-forking-1.png)
FIGURA: Ilustração dos forks de um projeto
Independente da escolha do workflow para cada projeto é importante sempre Independente da escolha do workflow para cada projeto é importante sempre
informar o método que está sendo utilizado para seus colaboradores, informar o método que está sendo utilizado para seus colaboradores,
para que eles possam seguir o mesmo padrão. Essas informações poderão ser para que eles possam seguir o mesmo padrão. Essas informações poderão ser
descritas em `README.md` ou no `CONTRIBUTING.md`. descritas em `README.md` ou no `CONTRIBUTING.md`.
### Esqueleto do tópico
- *Descrever os quatro principais tipos de workflow (Centralized workflow,
Feature branch workflow, gitflow workflow e Forking workflow)*
- *Materiais de apoio*
<a href="http://git.leg.ufpr.br/leg/gitlab-rautu/blob/master/CONTRIBUTING.md">
gitlab-rautu do Fernando Mayer</a> ;
<a href="https://prezi.com/_lm8kozmii8n/git-workflow/"> apresentação do
Diego G. Pasqualin</a>
## 3.Fluxo de trabalho PET no GitLab ## 3.Fluxo de trabalho PET no GitLab
O PET-Estatística UFPR possui um grupo no git para o desenvolvimento de O PET-Estatística UFPR possui um grupo no git para o desenvolvimento de
...@@ -240,5 +318,11 @@ Após o `git push`, a próxima etapa é a requisição de `merge`. Com esse ...@@ -240,5 +318,11 @@ Após o `git push`, a próxima etapa é a requisição de `merge`. Com esse
certeza dessa contribuição, era movida para o ramo `master`. certeza dessa contribuição, era movida para o ramo `master`.
### Esqueleto do tópico ### Referências
- *Funcionamento da elaboração da apostila* https://git-scm.com/book/pt-br/v1/Git-Distribu%C3%ADdo-Contribuindo-Para-Um-Projeto
https://prezi.com/_lm8kozmii8n/git-workflow/
https://www.atlassian.com/zh/git/workflows\#!workflow-overview
http://git.leg.ufpr.br/leg/gitlab-rautu/blob/master/CONTRIBUTING.md
images/traba-central-1.png

8.39 KiB

images/traba-central-2.png

7.57 KiB

images/traba-central-3.png

8.18 KiB

images/traba-central-4.png

7.46 KiB

images/traba-central-5.png

7.16 KiB

images/traba-feature-1.png

5.61 KiB

images/traba-feature-2.png

8.13 KiB

images/traba-feature-3.png

7.03 KiB

images/traba-forking-1.png

15.2 KiB

images/traba-git-1.png

32.6 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment