Frage

Ich möchte einen vertrauenswürdigen Pfad für die Software-Entwicklung bauen. Diese bedeutet, dass in zu Code jede Änderung vom Autor signiert werden müssen und einen Bewerter, bevor angenommen wird. Diese Signaturen für die Änderungen müssen bei Release-Zeit überprüfbar sein, oder es muss eine sein andere Mittel sicher können das Repository machen nicht gewesen manipuliert oder zusätzliche Änderungen hinzugefügt.

Das Versionskontrollsystem, das ich für diese verwenden erwarten git, aber auch andere Optionen werden ebenfalls akzeptiert. Signing kann über sein GnuPG oder SSL-Zertifikate.

Der Workflow würde ich denke sein grob:

  1. Aktuelle prüft Stamm abgezweigt
  2. Änderungen in der Branche entwickelt werden, durch einen oder mehrere Entwickler
  3. Ein oder mehr Entwickler unterzeichnen, um die durch den Zweig Änderungen
  4. Ein Gutachter prüft und testet die Änderungen
  5. Bewertungs unterzeichnet die von der Zweigniederlassung Änderungen
  6. Branch "verschmolzen" in der aktuellen nachgewiesenen Stamm

Merging hat nicht wie die nicht überprüft werden, narrensicher Änderungen würden nicht-zusammenführbar Stamm sein müssen - nur, dass vor ein Release vorhanden, muss es einen Weg, um zu überprüfen, ob es irgendwelche gibt nicht überprüft (unsigned) Änderungen im Stamm. Und im Allgemeinen, Manipulation muss nicht verhindert werden, nur erkannt werden.

Ich möchte eine kurze Anleitung, wie man dies einzurichten und wie jede Operation durchgeführt wird. Nachdem ich einige Hinweise bekommen, kann ich die Besonderheiten selbst ausrechnen.

Auch ich weiß schon über ‚git tag es‘ technisch, aber ich bin nicht sicher, wie es zu diesem speziellen Problem anzuwenden.

War es hilfreich?

Lösung

Die Änderungen werden nicht unterzeichnet werden, bis Sie etikettieren. Alles, was vor diesem Punkt kann durch den Autor oder durch eine anderen Out-of-Band-Mechanismus, aber nicht von innen git überprüft werden.

git kann überprüfen, ob ein Erbe der Änderung korrekt ist, sondern nur der signierte Tag die Änderung überprüfen kann selbst korrekt ist.

Für Ihren Workflow, können Sie nur finden sich eine Menge Tagging.

Andere Tipps

Sie können Ihren Tag mit Ihrem GPG-Schlüssel mit Option es in Tag git tag -s v0.1.0 schreiben:

  

es

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

Sie können aber eine Festschreibung nicht unterzeichnet.

Git ist ein guter Kandidat seit:

  • sind jeweils Commits bereits unterzeichnet
  • die SHA1-Taste für jede begehen ist genug, um die um sicherzustellen, dass alle Repo wird nicht geändert
  • git tag es kann verwendet werden, um ein verpflichten zu unterzeichnen jemand nicht machen ( git tag -m ist explizite )

So:

  1. Aktuelle verifizierter Stamm abgezweigt
    git checkout -b tag_for_last_verified_trunk_content test # branch test
  2. Die Änderungen werden in der Branche von einem oder mehreren Entwicklern entwickelt
    [work...] git commit -s -m "dev1 comment" ...
  3. Ein oder mehrere Entwickler die Änderungen unterschreiben durch den Zweig gemacht

    Bereits mit ihrem Commits gemacht, durch Hinzufügen einer signierten-of Linie am Ende der Nachricht commit : siehe diese Seite für Erklärung auf dem signierten-off Prozess.

    Signed-off-by: user name 
  4. Ein Gutachter prüft und testet die Änderungen

     git tag -m "testing" testing # refer to current commit, 
                                    allowing dev to go on with further changes
  5. Bewertungs unterzeichnet die von der Niederlassung Änderungen
    git tag -m "tested" tested testing # put a tag on the same SHA1 than 
                                         the "testing" tag
  6. Branch „verschmolzen“ in der aktuellen nachgewiesenen Stamm
    git checkout trunk & git merge tested

Cyryl Plotnicki-Chudyk erwähnt in den Kommentaren , dass seit git 1.7.9 (Januar 2012 fast 2 Jahre nach dieser Antwort) können Sie GPG signieren jede verpflichten Sie wollen, git commit -S verwenden.
(Siehe verpflichten ba3c69a9 , verfeinert in jüngerer Zeit in begehen df45cb3 )

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top