O que é considerado a melhor prática em torno do uso de git / VCS ao fazer uma reescrita completa de código?

5

Eu sou um cientista de dados que programa em R, mas sou relativamente novo em usar o controle de versão (sim, eu sei!) e ainda estou aprendendo muito sobre isso.

FYI: Eu uso o BitBucket e o Sourcetree

Eu entendo a ideia geral por trás disso - que você comete novas atualizações / recursos / etc. - e que ela atua como uma rede de segurança onde você pode reviver recursos / código que seriam perdidos / sobrescritos, ou até mesmo reverter sua reversões se você decidir que estava de fato feliz com o novo código que você escreveu.

Hoje, cheguei à conclusão de que precisarei reescrever completamente um script em R que eu criei (que criei / construí, sem outros colaboradores), porque os requisitos mudaram significativamente e, em vez de fazer várias alterações, o código existente (estamos falando em torno de 75,00%), provavelmente seria melhor e mais eficiente reescrevê-lo em sua totalidade.

Como tal, gostaria de saber o seguinte: o que é considerado a melhor prática neste caso?

Devo criar um novo ramo?

Eu só usei o branch principal / master do git (eu disse que era novo no VCS) e estava pensando que eu poderia fazer isso (criar um novo branch) e depois deletar o conteúdo do meu script existente e começar reescrevê-lo no mesmo arquivo (a fim de preservar o mesmo nome de arquivo / histórico quando eu empurrar as alterações para o meu repositório git).

Meu entendimento é que minhas novas mudanças são ramificadas fora do ramo principal e, se eu estou feliz, posso / deveria mesclá-las de volta ao ramo principal no ponto em que estou feliz / confiante de que as mudanças são bons para ir - isso é correto?

Ou devo fazer outra coisa?

Se for o primeiro (criando um novo branch), como um novo branch pode ser chamado?

Eu sei que não sou a única pessoa que já precisou fazer um código completo para reescrever / reconstruir, então gostaria de receber alguns conselhos aqui.

    
por MusTheDataGuy 11.07.2018 / 17:39
fonte

1 resposta

3

Uma das grandes vantagens das agências no mundo dos negócios é que ele permite que você trabalhe em um novo recurso, permitindo que você volte para a versão principal e faça atualizações lá, se necessário, sem perder seu progresso. Por exemplo, se você estava reescrevendo a página inicial do seu site, um bug crítico que impede o login do usuário é descoberto, isso é o que você pode fazer com uma ramificação.

  1. Confirme o trabalho atual que você tem na nova página inicial da sua filial.
  2. Volte para o ramo principal.
  3. Corrija o bug e confirme a correção para o master, para obter a correção para os usuários rapidamente.
  4. Volte para sua nova ramificação na página inicial e continue a trabalhar na reescrita exatamente de onde parou.

My understanding is that my new changes are branched off of / away from the master branch and, if I am happy, I can/should merge them back into the master branch at the point where I am happy/confident that the changes are good to go - is that correct?

Você está bem correto. Isso é especialmente útil se várias pessoas codificam neste projeto, já que uma reescrita pode atrapalhar seus projetos. Filiais lhe dão mais controle sobre quando um recurso é adicionado à base de código principal. Também permite que seus colegas de trabalho testem mais facilmente sua filial / recurso separadamente.

Para um projeto solo que afeta apenas um arquivo com impacto limitado no restante do aplicativo, um ramo pode ser um exagero. Usar um novo branch não causa nenhum dano, mas um commit padrão para master ainda mantém o histórico do arquivo, e leva menos tempo e conhecimento do git.

Se a sua reescrita causar alterações em muitos arquivos, pode interromper o fluxo de trabalho de colegas de trabalho ou se você precisar manter a versão atual do script nesse meio tempo, deve considerar usar uma ramificação.

If it is the former (creating a new branch), what might such a new branch typically be called?

Normalmente, uma nova ramificação é nomeada após o recurso que está sendo adicionado por ela. Portanto, no exemplo anterior, o ramo pode ser chamado de "Reescrita da Página Inicial do HTML5".

    
por 11.07.2018 / 18:06
fonte