Sobre Git Workflow #120
Replies: 20 comments
-
Uso uma branch Uso apenas isso, quando há complicações, meu workflow gira em turno dos comandos git reflog, git reset, git rebase, git merge, git checkout, git add, git commit. Também uso o GitHub Client no Mac, para facilitar a visualização de diffs e para fazer commits parciais de arquivos. |
Beta Was this translation helpful? Give feedback.
-
Faço das palavras do @felquis as minhas, com excessão do GitHub Client que não usamos por aqui. Mas usamos o SourceTree com a mesma finalidade (Bitbucket - Atlassian). |
Beta Was this translation helpful? Give feedback.
-
Perfeito seu workflow @felquis |
Beta Was this translation helpful? Give feedback.
-
Bom, utilizo o mesmo fluxo, mas a minha treta é um pouco específica. Vou tentar explanar: O problema é que temos vários devs trabalhando ao mesmo tempo, e nem sempre as features são testadas e liberadas na ordem que foram finalizadas (mergeadas no branch develop). Sendo assim, algumas features não serão implementadas no mesmo release, mesmo que já estejam no develop antes de outras. Só que nesse fluxo atual, não existe uma maneira simples para criar um release, já que preciso de commits de merge de algumas features isoladas. A minha ideia inicial era implementar um pull request para o branch develop, manter o branch da feature ativo até que o teste seja realizado (no branch do release). Logo que concluisse, o branch do release seria mergeado no master e no develop, e o branch da feature seria excluído. Não sei se ficou claro a treta, mas agradeço as contribuições! |
Beta Was this translation helpful? Give feedback.
-
Alguns projetos chamam o branch Uma dica é ter uma issue associada ao branch de trabalho, onde contém mais informações sobre a demanda e como ele irá ser solucionada, onde outros devs podem trocar ideias sobre aquele trabalho, dessa forma cada branch tem um proposito e depois que foi pro master e resolveu a issue, fecha a issue e apaga o branch (no caso de não usar forks). Costumo tambem usar nomemclatura |
Beta Was this translation helpful? Give feedback.
-
@bernardodiasc Esse fork seria um para cada desenvolvedor ? |
Beta Was this translation helpful? Give feedback.
-
Sim, cada um trabalha no seu fork, o upstream é o oficial onde centraliza tudo. |
Beta Was this translation helpful? Give feedback.
-
Entendi, mas no caso de você ter uns 30 projetos e 10 developers, você ficaria com pelo menos 330 repos? (30 forks * 10 developers + 30 upstreams) |
Beta Was this translation helpful? Give feedback.
-
Hmm, é exatamente isso. Mas cada developer gerencia seus próprios forks, então não faz sentido fazer essa somatória por que nem é perceptível esse número. 30 projetos são 30 repos da organização e cada dev com seus 30 forks. |
Beta Was this translation helpful? Give feedback.
-
Note que as issues e wikis são usadas apenas nos upstreams. Ocorre algumas vezes, mas é incomum, de enviar PR de um fork pro outro, quando devs estão colaborando em alguma tarefa, vão somando trabalho até ficar redondo e então abrir o PR para o upstream com o trabalho pronto. Isso funciona bem pois no upstream ficam apenas os branchs importantes (master, dev, e alguns outros temporários, se for necessario). Dessa forma existe 1 fonte da verdade pra cada projeto. |
Beta Was this translation helpful? Give feedback.
-
no meu o master é o dev |
Beta Was this translation helpful? Give feedback.
-
faltou... |
Beta Was this translation helpful? Give feedback.
-
@bernardodiasc 2 - Pela sua experiência com esse fluxo, quais seriam as vantagens/desvantagens de usar o mesmo fluxo, só que ao invés de forks, utilizasse branchs locais, e quando necessário, publicasse o branch para outros developers trabalharem na mesma feature? @lagden Isso ae, só não consigo utilizar as issues porque elas são centralizadas em outro sistema aonde clientes e outras áreas tem acesso. |
Beta Was this translation helpful? Give feedback.
-
@dougaraujos o interessante é tentar levar para o Github via API. |
Beta Was this translation helpful? Give feedback.
-
1 - Não sei se entendi, o numero não é expressivo. São 30 projetos somente, o fork recebe o mesmo nome, o nome do projeto, simples assim. Esse formato vale pra projetos com organização (me refiro à "org", como empresa por exemplo), se o projeto original é na sua conta não é esse modelo, esse modelo é pra trabalho em equipe ou projetos open sources que possuem organização (org, empresa, centralização). Enquanto dev, você passa longe dos forks dos outros devs a maior parte do tempo. Se voce é mantenedor, ai vai ter que gerenciar o upstream e os seus forks (os seus apenas), são 60 repos no caso, mas na sua maquina são só os 30 projetos cada qual com 2 remotes, ou mais se quiser ter remotes dos outros devs na sua maquina, tranquilamente. 2 - A desvantagem é que é mais lento do que jogar tudo sem controle nenhum em um repo apenas. É mais lento pois adiciona burocracia, burocracia mais que necessaria pra projetos e equipes grandes manterem qualidade no fluxo de trabalho. Já tive que trabalhar jogando código direto no upstream e chega uma hora que fica zuado, vários branchs criados por todo mundo, muito material incompleto no lugar que deveria ser confiável, uns branchs "mortos" mesmo sem mesclar que se dá bobeira o tempo passa e fica super dificil de rastrear se ainda é util, qualquer dev novo da de cara com um monte de coisa desnecessaria para o trabalho dele, entre outros problemas. O que entendi da sua pergunta é sobre ter um repo apenas e só mandar branchs pra lá quando finalizados, certo? Mas e se voce precisar de um peer review de um trabalho incompleto, vai ter que publicar um branch incompleto, no formato de upstream o upstream fica limpinho, voce manda o branch incompleto pro peer review a partir do seu fork, no seu fork pode estar zuando que não afeta a qualidade do trabalho geral. Faz sentido isso? Nunca consigo explicar bem isso, mas é mais simples do que parece. Se tiver mais duvidas manda ae. :) |
Beta Was this translation helpful? Give feedback.
-
Exemplo, digamos que o projeto é o https://github.com/frontendbr/forum/ Temos Nós dois fazemos forks do projeto Na minha máquina vou clonar o meu fork (por padrão o clone cria o remote com nome
Sempre que precisar, faço Trabalho na minha máquina num determinado branch, mando pro meu fork ( Vai ser comum ter ambientes de publicação (deploy) sincronizados com os branchs no upstream, por exemplo, o que ta no Acho que é isso, tem mais detalhes no workflow, mas essa seria a visão geral da coisa. |
Beta Was this translation helpful? Give feedback.
-
@lagden aqui temos usado o https://waffle.io/, bem legal tambem :) |
Beta Was this translation helpful? Give feedback.
-
@lagden Sim, só que usamos o Bitbucket e a escolha das ferramentas foi um consenso de N fatores. Mas concordo que a integração de ambas ferramentas seria essencial. @bernardodiasc Entendi, ficou claro. A vantagem é o upstream limpo, sem branchs pendentes. Fica bem organizado. Para isso, a única exigência é a cautela, trabalhando com N remotos no mesmo repositório, Assim, é necessário uma maturidade dos developers. Não vejo como problema, muito pelo contrário. Esse fluxo me agrada. Ainda preciso averiguar com a equipe e dar um check no plano do Bitbucket. |
Beta Was this translation helpful? Give feedback.
-
Gostei muito @bernardodiasc. |
Beta Was this translation helpful? Give feedback.
-
git-flow. Sempre! http://danielkummer.github.io/git-flow-cheatsheet/index.pt_BR.html |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Galera que usa GIT para versionamento, qual o seu workflow atual?
Implementei há 1 ano atrás um workflow baseado nesse Git Branching Model e algumas adaptações serão necessárias. Gostaria de conhecer outras implementações.
Beta Was this translation helpful? Give feedback.
All reactions