Escolher a origem e observar o conteúdo
A segunda parte do runner prepara uma release sintética com docs/internal.txt, VERSION e um link current para deploy.sh. O index guarda o modo executável do shell através de update-index --chmod=+x. Depois do commit R, o working tree recebe uma edição local de deploy.sh que não será distribuída. O archive criado a partir do ID R é inspecionado em memória, sem extrair membros para o filesystem. O script do tar corresponde ao conteúdo versionado, não ao rascunho local. untracked.txt também não aparece. Estes controlos tornam concreta a pergunta sobre qual snapshot está a ser distribuído. Um nome de branch pode avançar, por isso o exercício guarda o ID selecionado antes de criar o pacote. Ainda não existe uma compilação de aplicação ou instalação num ambiente de destino.
Distinguir distribuição, histórico e identidade
A política versionada exclui docs/** da distribuição e permite substituir um placeholder de VERSION pelo commit selecionado. O runner confirma a ausência da nota interna no tar e continua a conseguir lê-la com git show R:caminho. Esta diferença é central no caso Duna: export-ignore não elimina histórico nem revoga cópias. O arquivo criado com o commit R expande o placeholder; o arquivo criado com R^{tree} mantém-no. O segundo objeto descreve a árvore, mas não fornece a mesma identidade de commit para a substituição. get-tar-commit-id lê R da metadata do primeiro tar. Esta leitura não verifica uma assinatura, a confiança num produtor ou a aprovação funcional da release. Regista a identidade como uma peça de evidência e associa-lhe os restantes critérios de aceitação.
Incluir política e tipos no contrato do pacote
O caso Ponte compara duas exportações de R. A política local foi editada para deixar de excluir docs. Por omissão, o archive continua a usar a exclusão versionada; com --worktree-attributes, o ficheiro interno passa a entrar. O conteúdo de deploy.sh continua a vir de R mesmo nessa variante. Assim, a origem dos atributos pode alterar composição sem substituir o snapshot dos ficheiros pela edição local. O runner também verifica bits executáveis e o membro symlink com o seu alvo. No caso Farol, o instalador exige outro contrato; repetir exatamente um pacote incompatível não o torna aceitável. Regista membros, modos, links, exclusões e comando de criação. A inspeção em memória evita extrair o fixture, mas não demonstra que o mecanismo de instalação real trata estes membros como previsto.
Executar a revisão orientada
O guião abaixo distribui quarenta minutos entre Cais, Moinho, Duna, Ponte e Farol. Tem respostas esperadas, mas ainda não foi realizado com participantes. Produz uma tabela com origem, política, composição, identidade e validação do consumidor. Duas execuções do tar de R tiveram bytes iguais no ambiente fixado; esse resultado é limitado ao comando, versão e inputs do ensaio. Não se afirma reprodutibilidade de qualquer build futuro, execução em Windows, assinatura ou instalação em produção. Um digest identifica bytes; a aceitação precisa também de confiança no processo e comportamento adequado. Liga o pacote ao commit e às transformações que o produziram, incluindo atributos locais quando usados. Antes de encerrar a revisão, identifica quem deve validar a execução no destino e que critérios ainda faltam. Os casos são fictícios e não representam procedimentos internos do BNP Paribas.
GUIÃO DE ARTEFACTOS, 40 minutos, dados fictícios
0–10 Cais/Moinho: diff extenso de eol inclui timeout novo; CI usa LF e portátil CRLF com override local. Entrega uma sequência de revisão.
Resposta: separar intenções, consultar index e atributos efetivos/cached, comparar bytes e origens, ensaiar consumidores. Não copiar overrides pessoais para CI sem decisão.
10–20 Duna: docs/internal.txt está no commit R e tem export-ignore; não aparece no tar. VERSION expande com R mas não com R^{tree}.
Resposta: exclusão de distribuição não apaga histórico; tree não fornece contexto de commit para export-subst. Metadata de R não é assinatura nem teste funcional.
20–30 Ponte: duas exportações de R diferem; uma usa --worktree-attributes com exclusão removida. Lista os inputs a guardar.
Resposta: ID R, comando, versão, atributos efetivos, membros, modos, links e digest de cada pacote. A opção muda atributos, não copia o rascunho local para o tar.
30–40 Farol: instalador exige ficheiros regulares e script executável; pacote tem symlink e modo incorreto. Redige a decisão.
Resposta: corrigir contrato e validar novamente no destino; bytes repetíveis não compensam incompatibilidade. Identificar responsável e testes pendentes.
Entrega: tabela origem/política/composição/identidade/consumidor e decisão com lacunas.
Estado: guião editorial, não executado com participantes.O mesmo commit R exclui docs por omissão e inclui docs com atributos locais alterados; a identidade de origem não basta para identificar o pacote.
Armadilhas comuns
Tratar exclusão como eliminação; confundir digest com assinatura; omitir atributos locais; assumir que bytes repetíveis garantem compatibilidade.
Tópicos relacionados: Estados e index · Diagnóstico e releases · Integração e revisão
A rastreabilidade liga origem, transformação e artefacto observado; o consumidor ainda precisa de validar instalação e comportamento.
Referência: Git archive · Git 2.56; workflow concepts compatible with modern Git 2.x