Questão nº 36
Questão de Tecnologia da Informação · FCC TRT15 2024 (nº 36)
A equipe de desenvolvimento de um Tribunal adota o modelo GitFlow para gerenciar o versionamento de código em um repositório GitLab. Durante o desenvolvimento de uma nova funcionalidade, a equipe percebeu que algumas mudanças feitas no branch feature impactam diretamente no branch develop e precisam ser incorporadas imediatamente para integração contínua (CI). Contudo, um dos desenvolvedores cometeu um erro ao realizar um merge, levando à sobrescrita de código existente no develop. O procedimento que a equipe deve adotar para resolver o problema de sobrescrita e prevenir a repetição desse erro no futuro é
- Arealizar um `git reset --hard` no branch develop para voltar ao último commit correto e forçar os desenvolvedores a refazerem o merge.
- Bconfigurar políticas de revisão opcionais (Operation Request Approvals) no Github para que todas as operações sejam aprovadas por, no mínimo, um revisor.
- Cfazer um rollback do branch develop usando `git stepback`, garantindo que apenas os commits problemáticos sejam desfeitos sem afetar o histórico.
- Dconfigurar um Webhook no GitLab para rejeitar automaticamente merges que causam conflitos ou sobrescritas de código no develop.
- Eutilizar a estratégia rebase no branch feature para reorganizar os commits e alinhar o histórico com o branch develop antes de realizar um novo merge. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
O GitFlow é um modelo de gerenciamento de branches (ramificações) no Git que organiza o fluxo de trabalho de desenvolvimento, e o rebase é uma ferramenta do Git que permite reescrever o histórico de commits de um branch para integrá-lo de forma mais limpa a outro. O problema aqui é que um merge (junção de branches) mal feito sobrescreveu código, e precisamos corrigir isso e evitar que aconteça novamente.
- (A) Incorreta: O
git reset --hardé uma ferramenta destrutiva que apaga o histórico de commits a partir de um ponto, perdendo o trabalho feito e forçando a equipe a refazer o merge, o que é ineficiente e não resolve a causa raiz do problema de sobrescrita. - (B) Incorreta: As políticas de revisão de código são importantes, mas o problema ocorre em um repositório GitLab, não GitHub, e a aprovação de operações não impede tecnicamente um merge que cause sobrescrita se a estratégia de integração for falha.
- (C) Incorreta: Não existe um comando
git stepbackno Git. Esta alternativa é um distrator. - (D) Incorreta: Um Webhook pode ser usado para notificar ou automatizar ações, mas não é uma ferramenta intrínseca do Git para prevenir a execução de merges que causem sobrescrita. As regras de proteção de branch no GitLab são mais adequadas para controle, mas a solução técnica para a integração limpa é outra.
- (E) Correta: A estratégia de
rebaseno branch feature sobre o branch develop antes de realizar o merge é a prática recomendada no GitFlow para manter um histórico linear e limpo. Isso garante que o branch feature incorpore todas as mudanças mais recentes do develop antes de ser mesclado, minimizando conflitos e prevenindo sobrescritas acidentais, pois o merge resultante será frequentemente um "fast-forward" ou terá conflitos mais fáceis de resolver, já que o feature já estará "em cima" do develop.
Fonte: FCC TRT15 2024 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.