Questão de Engenharia de Software — Git — CESPE / CEBRASPE 2024
Engenharia de Software›Git
Código
ce403893
Banca
CESPE / CEBRASPE
Órgão
STJ
Ano
2024
Cargo
AJ
Julgue os itens a seguir, em relação a práticas DevOps, CD (continuous delivery) e CI (continuous integration).
No modelo gitflow, a branch principal para o ambiente de produção, que deve conter as versões estáveis do código que originam as builds, é denominada feature.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoE — Errado
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”.
GitFlow: branches e o papel de cada uma
Gabarito: Errado (E). No modelo GitFlow, a branch principal que contém as versões estáveis do código destinadas à produção é a main (ou master), e não a feature. As branches feature são ramificações temporárias criadas para desenvolver novas funcionalidades isoladamente, sendo mescladas de volta à branch de desenvolvimento (develop) após a conclusão. A afirmação do enunciado inverte completamente os papéis dessas branches.
O GitFlow é uma estratégia de ramificação (branching model) amplamente adotada em projetos que utilizam Git, proposta por Vincent Driessen. Ele organiza o repositório em branches com funções bem definidas, permitindo um fluxo de trabalho previsível e controlado. As principais branches do GitFlow são:
main (ou master): contém o código estável, pronto para produção. Cada commit nessa branch representa uma versão publicada.
develop: branch de integração, onde o desenvolvimento contínuo acontece. As features são mescladas aqui e, quando há um conjunto de mudanças pronto para lançamento, a develop é mesclada na main.
feature/*: branches temporárias criadas a partir da develop para desenvolver novas funcionalidades. Ao concluir, são mescladas de volta à develop e deletadas.
release/*: branches criadas a partir da develop para preparar uma nova versão de produção, permitindo ajustes finais e correções de bugs antes do merge na main.
hotfix/*: branches criadas a partir da main para correções urgentes em produção, que são mescladas tanto na main quanto na develop.
A confusão entre feature e main é uma pegadinha clássica em provas de Git/DevOps. O candidato que não domina o modelo GitFlow tende a associar a branch de produção a qualquer nome que pareça "principal", mas o termo técnico correto é main (ou master). As branches feature são exatamente o oposto: são ramificações de trabalho temporárias e isoladas, que não devem conter código estável de produção.
Na prática, um fluxo típico de GitFlow seria:
Um desenvolvedor cria uma branch feature/login a partir da develop.
Desenvolve a funcionalidade de login, fazendo commits na branch.
Ao concluir, mescla a feature/login de volta na develop.
Quando um conjunto de features está pronto para lançamento, cria-se uma branch release/1.0 a partir da develop.
Após os ajustes finais, a release/1.0 é mesclada na main e na develop.
A main agora contém a versão estável 1.0, que será implantada em produção.
A banca explora exatamente essa inversão: atribui à branch feature a função da branch principal de produção. É uma armadilha que testa o conhecimento específico do modelo GitFlow, não apenas o conceito genérico de versionamento.
NÃO CAIA NESSA!
A banca troca o papel das branches: afirma que a branch de produção é a feature, quando na verdade a feature é uma ramificação temporária de desenvolvimento. No GitFlow, a branch de produção é a main (ou master). Memorize: feature = desenvolvimento isolado; main = código estável em produção.
Item — ❌ Errado
A afirmação está incorreta porque inverte os papéis das branches no GitFlow. A branch principal para produção, que contém as versões estáveis, é a main (ou master), não a feature. As branches feature são ramificações temporárias criadas a partir da develop para desenvolver novas funcionalidades, e não devem conter código de produção. O erro é claro: a banca trocou o nome da branch de produção pelo nome de uma branch de desenvolvimento.