Di fiducia percorso di sviluppo in git con le firme
-
19-09-2019 - |
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:
- Corrente verificato il fusto è ramificato
- Le modifiche sono sviluppati in filiale da uno o più sviluppatori
- Uno o più sviluppatori segno le modifiche apportate dal ramo
- Un revisore recensioni e test le modifiche
- Revisore segni le modifiche apportate dal ramo
- 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.
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ì:
- Corrente verificato il fusto è ramificato
git checkout -b tag_for_last_verified_trunk_content test # branch test
- Le modifiche sono sviluppati in filiale da uno o più sviluppatori
[work...] git commit -s -m "dev1 comment" ...
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
Un revisore recensioni e test le modifiche
git tag -m "testing" testing # refer to current commit, allowing dev to go on with further changes
- Revisore segni le modifiche apportate dal ramo
git tag -m "tested" tested testing # put a tag on the same SHA1 than the "testing" tag
- 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)