Domanda

Mi piacerebbe costruire un percorso attendibile per lo sviluppo di software.Questo significa che ogni modifica al codice deve essere firmato dall'autore e un revisore, prima di essere accettato.Queste le firme per il le modifiche devono essere verificabili al momento del rilascio, o ci deve essere qualche altri mezzi di accertarsi che i repository non sono stati manomesso o le ulteriori modifiche apportate.

Il sistema di controllo di versione che mi aspetto da utilizzare per questo è git, ma altre opzioni sono accettati.La firma può essere via GnuPG o certificati SSL.

Il flusso di lavoro penso sarebbe all'incirca:

  1. Corrente verificato il fusto è ramificato
  2. Le modifiche sono sviluppati in filiale da uno o più sviluppatori
  3. Uno o più sviluppatori segno le modifiche apportate dal ramo
  4. Un revisore recensioni e test le modifiche
  5. Revisore segni le modifiche apportate dal ramo
  6. Filiale è "fusa" in corrente verificato tronco

L'unione non deve essere a prova di idiota come quella unreviewed modifiche devono essere unmergeable di tronco, solo che prima di una versione, ci deve essere un modo per controllare se ci sono unreviewed (unsigned) variazioni in tronco.E, in generale, la manomissione non ha bisogno di essere prevenuto, rilevato solo.

Mi piacerebbe una breve guida su come configurarlo e come ogni operazione è fatta.Una volta che ho alcuni riferimenti, posso capire la specificità di me.

Inoltre, so già su 'git tag -s' tecnicamente, ma non so come applicarlo a questo particolare problema.

È stato utile?

Soluzione

Le modifiche non verranno firmati fino tag.Prima di tutto che punto può essere verificato da un autore o da un altro out-of-band meccanismo, ma non dall'interno di git.

git può verificare che una variazione del patrimonio è corretto, ma solo il sottoscritto tag, è possibile verificare il cambiamento stesso è corretta.

Per il vostro flusso di lavoro, si può solo trovare te stesso la codifica di un sacco.

Altri suggerimenti

È possibile firmare i tag con la propria chiave GPG con l'opzione-s in tag git tag -s v0.1.0:

-s

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

Ma non è possibile firmato un commit.

Git è un buon candidato da:

  • ogni commit sono già firmato
  • la SHA1 chiave per ogni commit è sufficiente per essere sicuri che il tutti repo non è stato modificato
  • git tag -s può essere utilizzato per firmare un commit qualcuno non l' (git tag -m è più esplicito)

Così:

  1. Corrente verificato il fusto è ramificato
    git checkout -b tag_for_last_verified_trunk_content test # branch test
  2. Le modifiche sono sviluppati in filiale da uno o più sviluppatori
    [work...] git commit -s -m "dev1 comment" ...
  3. Uno o più sviluppatori segno le modifiche apportate dal ramo

    Già fatto con il loro " si impegna, con l'aggiunta di un Segno-di linea alla fine del messaggio di commit:vedi questa pagina per spiegazione firmato-off processo.

    Signed-off-by: user name 
  4. Un revisore recensioni e test le modifiche

     git tag -m "testing" testing # refer to current commit, 
                                    allowing dev to go on with further changes
  5. Revisore segni le modifiche apportate dal ramo
    git tag -m "tested" tested testing # put a tag on the same SHA1 than 
                                         the "testing" tag
  6. Filiale è "fusa" in corrente verificato tronco
    git checkout trunk & git merge tested

Cyryl Plotnicki-Chudyk cita nei commenti che, dal git 1.7.9 (gennaio 2012, di quasi 2 anni dopo questa risposta), è possibile GPG-firmare qualsiasi commit si desidera, utilizzando git commit -S.
(Vedere commettere ba3c69a9, raffinato, più recentemente, in commettere df45cb3)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top