Questão de Engenharia de Software — Gerência de Configuração — FGV 2024
Engenharia de Software›Gerência de Configuração
Código
fg085527
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Júnior I - Desenvolvimento de Software para Operação de Satélites
Sistemas de versionamento de software são ferramentas amplamente utilizadas no desenvolvimento de aplicações.Nesse contexto, mais especificadamente sobre o sistema Git, assinale a afirmativa correta.
ACada cópia de trabalho do código é um repositório completo, com histórico e capacidades de versionamento.
BO Git é único sistema que permite a utilização de ramificações (branches) e etiquetas (tags).
CUm projeto possui três seções principais: diretório Git, diretório de trabalho (working directory) e área de lançamento (lauching area).
DO Git organiza os commits em uma estrutura de dados linear, que simplifica o rastreamento de alterações.
EO Git grava todas as operações de commit diretamente no servidor central, exigindo conexão constante para que as alterações sejam registradas.
Revelar gabarito e comentário▾
GabaritoA — Cada cópia de trabalho do código é um repositório completo, com histórico e capacidades de versionamento.
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”.
Git: Sistemas de Versionamento Distribuído
Gabarito: letra A. A alternativa A descreve corretamente a natureza distribuída do Git: cada cópia de trabalho (clone) é um repositório completo com histórico completo e capacidades de versionamento, o que é a essência dos VCS distribuídos.
Git (DVCS): Repositório completo em cada clone (Histórico integral, Branches e tags, Operações locais); Três áreas principais (Working directory, Staging area (index), Git directory (repository)); Estrutura de commits (Grafo DAG (não linear), Múltiplos pais (merge)); Operação descentralizada (Commit local sem servidor, Push/pull para sincronizar)
Alternativa A — ✅ Correta ⟵ GABARITO
Afirma que cada cópia de trabalho do código é um repositório completo, com histórico e capacidades de versionamento. Isso é exatamente o que caracteriza um sistema de controle de versão distribuído (DVCS) como o Git: ao clonar um repositório, você obtém uma réplica integral do repositório, incluindo todo o histórico de commits, branches e tags, podendo realizar operações de versionamento localmente. O Git não depende de um servidor central para registrar as alterações; cada desenvolvedor tem um repositório completo.
Alternativa B — ❌ Incorreta
Afirma que o Git é o único sistema que permite ramificações (branches) e etiquetas (tags). Isso é falso, pois outros sistemas de controle de versão, como Mercurial, SVN (embora SVN seja centralizado, também suporta branches e tags de certa forma), Bazaar, entre outros, também oferecem esses recursos. O Git não é exclusivo nesse aspecto.
Alternativa C — ❌ Incorreta
Menciona três seções principais: diretório Git, diretório de trabalho (working directory) e área de lançamento (lauching area). O termo correto para a área intermediária entre o diretório de trabalho e o repositório é "área de preparação" (staging area) ou "index". "Lauching area" é um termo incorreto e não faz parte da terminologia do Git. As três áreas reais são: working directory, staging area (index) e Git directory (repository).
Alternativa D — ❌ Incorreta
Afirma que o Git organiza os commits em uma estrutura de dados linear. Na realidade, o Git utiliza um grafo direcionado acíclico (DAG), onde cada commit aponta para um ou mais commits pais, permitindo merges e branches. A estrutura não é linear, pois múltiplas linhas de desenvolvimento podem coexistir e convergir.
Alternativa E — ❌ Incorreta
Diz que o Git grava todas as operações de commit diretamente no servidor central, exigindo conexão constante. Isso descreve um sistema centralizado (como SVN), não o Git. No Git, os commits são feitos localmente e posteriormente podem ser enviados (push) para um repositório remoto. Não é necessária conexão constante para registrar alterações.