Recentemente, tivemos um problema em que um recurso para nosso aplicativo da web (inscrição automática) foi adiado pela gerência porque eles sentiram que o início estava muito "frio", mas eles queriam que todos os outros recursos em que estivéssemos trabalhando fossem lançados.
O problema é que essa funcionalidade foi mesclada no desenvolvimento quando foi concluída, juntamente com todos os outros recursos que esperávamos lançar no próximo lançamento, para que não pudéssemos apenas mesclar dev -> test -> master como costumamos fazer.
Como poderíamos ter evitado esse problema?
project-management
git
gitflow
Steve
fonte
fonte
Respostas:
Uma abordagem é o recurso de sinalização. Ele pode viver na base de código, mas ser desativado pela configuração.
Outra opção é fazer uma confirmação de reversão que reverte a mesclagem do recurso para que ele não esteja mais em desenvolvimento. Pode ser feita uma nova ramificação que reverte a reversão e fica pendente para mesclar posteriormente. Se você estiver usando solicitações pull do Github, poderá fazer isso facilmente com o botão "reverter mesclagem" em uma solicitação pull mesclada.
fonte
Feature Toggling
, como oculto por Doc Brown. Isso também nos permite testar o recurso (ou ausência dele) em ambientes de não produção. Às vezes, esses recursos se somam aos recursos existentes; nesse caso, devemos fazer testes de unidade para o conjunto de recursos antigo e novo. Cada teste de unidade definiria o sinalizador para o que for necessário para o teste atual.Da perspectiva do processo, descubra:
Mais do que provável, houve quedas na comunicação ao longo do caminho. É importante ter isso, porque, quando não funcionar, seus processos de desenvolvimento serão baseados em entendimentos falsos e errados dos requisitos de negócios.
fonte
Esqueça por um momento o problema com seu gerenciamento e imagine que você já tinha o "recurso de inscrição automática" em sua última versão de produção, profundamente integrado à sua base de código. Agora você recebe o novo requisito para adicionar um "off-switch" para "inscrição automática". Como você lidaria com isso no seu fluxo de trabalho Git?
Eu acho que você declararia "desabilitar a inscrição automática por configuração" simplesmente como um recurso adicional (é apenas uma forma de alternância de recursos ); portanto, isso deve se integrar perfeitamente ao seu fluxo de trabalho. Você pode estimar o esforço, se desejar, pode usar uma ramificação de recursos para ela (ou não, se não usar ramificações de recursos para esses problemas). E você pode definitivamente usar o fluxo "mesclar dev -> test -> master" que você descreveu.
E é assim que você pode lidar com isso na sua situação atual. Do ponto de vista do fluxo de trabalho git, não deve importar se a solicitação de mudança vem do gerenciamento da liberação 1.0 ou se a solicitação de mudança é um novo desejo do cliente para a liberação 2.0.
fonte
Esse é o problema exato que tenho com o gitflow e o fluxo do GitHub, e parece que com aplicativos da Web isso acontece com frequência - ou mais como a norma. Parece que você resolveria esse problema retroativamente (mencionado acima) ou proativamente (exemplo abaixo).
Eu criei 'bundle branches' além dos branches padrão do gitflow. O pacote configurável consiste em todos os recursos que estão prontos para o uat / qa. Uma lista de recursos uat / qa é criada. Eles são mesclados no pacote temporário e esse pacote é implementado no uat / qa. Qualquer correção de bug ocorre na ramificação do recurso original e é reenviada ao pacote configurável e implantada. Isso separa a próxima versão, além de permitir testar esses recursos juntos antes que eles encontrem o caminho para o ramo de desenvolvimento. As ramificações aprovadas desenvolvem uma solicitação de recebimento - seguindo o processo do gitflow. Os recursos prontos para teste podem ser adicionados ou removidos da ramificação do pacote temporário e reimplementados.
Os contras incluem gerenciar a lista de pacotes configuráveis e adicionar outro tipo de filial; no entanto, além da correção retro, que acho tarde demais, esta parece ser a solução mais viável.
Com um complemento da GUI, pode ser ideal marcar as ramificações de recursos por implantação de pacote - com a automação em mente.
fonte