Pular para o conteúdo principal

Questão de Engenharia de Software — Gerência de Configuração — FGV 2023

Engenharia de SoftwareGerência de Configuração
Código
fg071497
Banca
FGV
Órgão
TCE-SP
Ano
2023
Nível
Superior
Cargo
Agente da Fiscalização - TI
A analista Jéssica administra o Gitlab do TCE SP. Jéssica atribuiu ao projeto TCEMóvel a estratégia de merge na qual, após feito o merge, o hash do último commit do branch de destino torna-se idêntico ao hash do último commit do branch de origem. A estratégia escolhida por Jéssica visa preservar a quantidade e a linearidade do histórico de commits, exigindo, porém, que o branch de origem esteja atualizado em relação ao destino para a efetuação do merge.Jéssica atribuiu para o TCEMóvel a estratégia de merge:
  1. Amerge commit;
  2. Bthree-way merge;
  3. Csquash and merge;
  4. Dfast-forward merge;
  5. Esemi-linear merge commit.
Revelar gabarito e comentário

GabaritoD — fast-forward merge;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Estratégias de Merge no Git

Gabarito: letra D (fast-forward merge). A descrição do enunciado — após o merge, o hash do último commit do branch de destino torna-se idêntico ao do branch de origem, preservando a linearidade e exigindo que o branch de origem esteja atualizado — é a definição exata do fast-forward merge. Nessa estratégia, o Git simplesmente avança o ponteiro da branch de destino para o commit mais recente da origem, sem criar um commit de merge adicional.

1Fast-forward
Hash idêntico ao da origem
Histórico linear
Requer origem atualizada
2Merge commit
Cria commit de merge
Histórico não linear
3Squash and merge
Comprime commits em um
Altera hashes
Estratégias de merge
LEVELsoulevel.com.br
Estratégias de merge: Fast-forward (Hash idêntico ao da origem, Histórico linear, Requer origem atualizada); Merge commit (Cria commit de merge, Histórico não linear); Squash and merge (Comprime commits em um, Altera hashes)

Alternativa A — ❌ Incorreta

Merge commit é a estratégia padrão quando as branches divergiram; ele cria um novo commit de merge com dois pais, o que quebra a linearidade. Não se aplica ao cenário descrito.

Alternativa B — ❌ Incorreta

Three-way merge é o mecanismo usado quando há divergência entre as branches, resultando em um commit de merge (não preserva a linearidade). O enunciado exige que o hash final seja idêntico, o que só ocorre no fast-forward.

Alternativa C — ❌ Incorreta

Squash and merge comprime todos os commits da branch de origem em um único commit no destino, alterando o histórico e os hashes. Não mantém a identidade do hash final, conforme requerido.

Alternativa D — ✅ Correta ⟵ GABARITO

No fast-forward merge, se a branch de destino não teve commits desde a ramificação, o Git apenas move o ponteiro para frente. O hash do destino fica igual ao da origem, o histórico permanece linear, e a condição de que a origem deve estar atualizada em relação ao destino é atendida.

Alternativa E — ❌ Incorreta

Semi-linear merge commit não é uma estratégia padrão do Git. Possivelmente refere-se a um merge com --no-ff, que força um commit de merge mesmo quando o fast-forward é possível, criando um nó extra e quebrando a linearidade desejada.

PEGA ESSA DICA!

Para identificar a estratégia de merge na prova, foque nas palavras-chave: "hash idêntico" e "linearidade" apontam para fast-forward; "commit de merge" indica merge commit ou three-way; "combina commits em um" é squash.

Estratégia

Cria commit de merge?

Preserva linearidade?

Requer origem atualizada?

Merge commit

Sim

Não

Não (mas pode)

Three-way

Sim

Não

Não

Squash

Sim (um único)

Parcialmente

Sim

Fast-forward

Não

Sim

Sim

Semi-linear

Sim (forçado)

Não

Sim

Gabarito: letra D (fast-forward merge).

Link permanente: /questoes/fg071497