6

ソフトウェア開発のための信頼できるパスを構築したいと思います。つまり、コードへのすべての変更は、承認される前に、作成者と1人のレビューアによって署名される必要があります。変更に対するこれらの署名は、リリース時に検証可能である必要があります。または、リポジトリが改ざんされていないこと、または追加の変更が追加されていないことを確認する他の手段が必要です。

私がこれに使用することを期待しているバージョン管理システムはgitですが、他のオプションも受け入れられます。署名は、GnuPGまたはSSL証明書を介して行うことができます。

私が考えているワークフローは大まかに次のようになります。

  1. 現在検証されているトランクは分岐しています
  2. 変更は、1人または複数の開発者によってブランチで開発されます
  3. 1人以上の開発者がブランチによって行われた変更に署名します
  4. レビュー担当者が変更をレビューしてテストします
  5. レビューアは、ブランチによって行われた変更に署名します
  6. ブランチは現在検証されているトランクに「マージ」されます

マージは、レビューされていない変更をトランクにマージできないようにする必要があるなど、絶対確実である必要はありません。リリースの直前に、トランクにレビューされていない(署名されていない)変更があるかどうかを確認する方法が必要です。そして一般的に、改ざんを防ぐ必要はなく、検出するだけです。

これを設定する方法と各操作がどのように行われるかについての簡単なガイドが欲しいです。いくつかのポインタを取得したら、詳細を自分で理解できます。

また、私はすでに「git tag -s」について技術的に知っていますが、この特定の問題にそれを適用する方法がわかりません。

4

3 に答える 3

2

タグを付けるまで、変更は署名されません。その時点より前のものはすべて、作成者または別の帯域外メカニズムによって検証できますが、git内からは検証できません。

gitは変更の遺産が正しいことを確認できますが、変更自体が正しいことを確認できるのは署名されたタグだけです。

あなたのワークフローでは、あなたは自分自身がたくさんのタグを付けていることに気付くかもしれません。

于 2010-03-11T09:44:27.823 に答える
0

タグの-sオプションを使用してGPGキーを使用してタグに署名できます git tag -s v0.1.0

-s

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

ただし、コミットに署名することはできません。

于 2010-03-11T09:19:27.900 に答える
0

Gitは次の理由から良い候補です:

  • 各コミットはすでに署名されています
  • 各コミットのSHA1キーは、すべてのリポジトリが変更されていないことを確認するのに十分です
  • git tag -sは、誰かが行わなかったコミットに署名するために使用できます(git tag -mより明示的です

それで:

  1. 現在検証されているトランクは分岐しています
    git checkout -b tag_for_last_verified_trunk_content test#ブランチテスト
  2. 変更は、1人または複数の開発者によってブランチで開発されます
    [作業...]gitcommit -s-m"dev1コメント"..。
  3. 1人以上の開発者がブランチによって行われた変更に署名します

    コミットメッセージの最後にSigned-of行を追加することで、コミットはすでに完了しています。サインオフプロセス の説明については、このページを参照してください。

    サインオフ:ユーザー名
  4. レビュー担当者が変更をレビューしてテストします

    git tag -m "testing" tests#現在のコミットを参照します。
                                    開発者がさらに変更を続けることができるようにする
  5. レビューアは、ブランチによって行われた変更に署名します
    git tag -m「テスト済み」テスト済みテスト#同じSHA1にタグを配置します
                                         「テスト」タグ
  6. ブランチは現在検証されているトランクに「マージ」されます
    gitチェックアウトトランクとgitマージがテストされました

Cyryl Plotnicki-Chudykコメントの中で、git 1.7.9(2012年1月、この回答からほぼ2年後)以降、を使用して任意のコミットにGPG署名できると述べていgit commit -Sます。
(commit ba3c69a9を参照してください最近、commit df45cb3で改良されました)

于 2010-03-11T09:04:52.410 に答える