Pergunta

Eu gostaria de construir um caminho confiável para desenvolvimento de software. Esta significa que a cada mudança no código deve ser assinada pelo autor e um revisor, antes de ser aceito. Estas assinaturas para o mudanças devem ser verificáveis ??em tempo de liberação, ou deve haver algum outros meios de ter certeza que o repositório não pode ter sido adulterados ou alterações adicionais acrescentou.

O sistema de controle de versão que eu estou esperando para usar para isso é git, mas outras opções também são aceitos. Assinatura pode ser via GnuPG ou certificados SSL.

O fluxo de trabalho que eu estou pensando seria aproximadamente:

  1. Current Verificado tronco é ramificado
  2. As alterações são desenvolvidas no ramo por um ou mais desenvolvedores
  3. Um ou mais desenvolvedores assinar as alterações feitas pelo ramo
  4. A Comentários revisor e testes as mudanças
  5. Avaliador assina as alterações feitas pelo ramo
  6. Poder é "colada" no atual Verificado tronco

A fusão não tem de ser infalível como a que unreviewed mudanças teriam de ser mesclável ao tronco - só que antes uma liberação, é preciso haver uma maneira de verificar se há algum unreviewed (não assinado) muda no tronco. E, em geral, adulteração necessidade não podem ser impedidas, única detectado.

Eu gostaria de um pequeno guia sobre como configurar isso e como cada operação é feita. Assim que eu receber alguns ponteiros, eu posso descobrir as especificidades mim mesmo.

Além disso, eu já sei sobre o 'tag git-s' tecnicamente, mas estou inseguro como aplicá-la para este problema particular.

Foi útil?

Solução

As alterações não serão assinados até tag. Qualquer coisa antes desse ponto pode ser verificada pelo autor ou por outro mecanismo out-of-band, mas não de dentro git.

git pode verificar que o património de uma mudança é correta, mas apenas o tag assinado pode verificar a alteração em si é correta.

Para o seu fluxo de trabalho, você pode apenas encontrar-se marcar um monte.

Outras dicas

Você pode assinar o seu tag com sua chave GPG com opção -s na tag git tag -s v0.1.0:

-s

   Make a GPG-signed tag, using the default e-mail address's key

Mas você pode não assinou um commit.

Git é um bom candidato desde:

  • Cada commits já estão assinados
  • a chave SHA1 para cada commit é suficiente para garantir que o todas repo não foi modificado
  • -s git tag pode ser usado para assinar um commit alguém não fazer ( git tag -m é mais explícito )

Assim:

  1. tronco Verificado atual é ramificado
    git checkout -b tag_for_last_verified_trunk_content test # branch test
  2. As alterações são desenvolvidas no ramo por um ou mais desenvolvedores
    [work...] git commit -s -m "dev1 comment" ...
  3. Um ou mais desenvolvedores assinar as alterações feitas pelo ramo

    Já foi feito com seus commits, adicionando uma mensagem assinada-de linha no final do commit : veja esta página para explicação sobre o assinado-off processo.

    Signed-off-by: user name 
  4. A Comentários revisor e testa as alterações

     git tag -m "testing" testing # refer to current commit, 
                                    allowing dev to go on with further changes
  5. Avaliador assina as alterações feitas pelo ramo
    git tag -m "tested" tested testing # put a tag on the same SHA1 than 
                                         the "testing" tag
  6. Poder é "colada" no tronco Verificado atual
    git checkout trunk & git merge tested

Cyryl Plotnicki-Chudyk menciona nos comentários que, desde git 1.7.9 (Janeiro de 2012, quase 2 anos após esta resposta), você pode GPG-assinar qualquer cometer você quer, utilização git commit -S.
(Veja cometer ba3c69a9, refinado, mais recentemente, em cometer df45cb3 )

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top