質問: GPGの使い方については分かったのですが、具体的にGPGをGitに導入することでどのようなメリットがあるのでしょうか? また、デメリットも存在するのでしょうか? GPGを使わない場合と使う場合の違いを教えてください。 たとえば ``` git tag -a v1.0 ``` ``` git tag -s v1.0 ``` の違いです。
回答: こちらの解説が分かりやすいと思います。 署名付きタグって何? > > SubversionのリポジトリrepoAにおけるr1000は、repoBにおけるr1000とは異なる。 > > GitのリポジトリrepoXにおけるコミット3b04533は、repoYにおける3b04533と同一である。 > > つまり、分散型VCSであるGitのコミットは特定のリポジトリに依存していない。push/pullであちらこちらのリポジトリに存在できる。従って、とあるリポジトリが信頼できるからといって、そこにある全てのコミットを無条件に信頼できるわけではない。そのコミットは元々は余所の信頼できないリポジトリで作成されたものかもしれないのだ。 > > 従って、信頼はリポジトリに対してではなく、コミットに対して与えなければならない。 > > > リポジトリを書き換えて再配布された時、検出できるようになります。 オープンソースソフトウェアなど再配布可能なソースコードでもtagに署名しておけば、 再配布元が信頼できない場合でも署名を確認することにより、tag以前のコミットが書き換えられていないことが確認できます。