Today I met somebody and signed his PGP key. Then I thought I should check my own key, so I did this:
  $ gpg --recv-key 713660A7
which reported that I got a few new signatures.
I have my GnuPG keys in a Git repository. Out of habit, I did
  $ git diff -U0
and was pleasantly surprised to see:
  diff --git i/gnupg/pubring.gpg w/gnupg/pubring.gpg
  index 22b29b8..8beac85 100644
  --- i/gnupg/pubring.gpg
  +++ w/gnupg/pubring.gpg
  @@ -22,0 +23,1 @@ pub  4096R/713660A7 2011-10-01 Junio C Hamano 
  +sig        00411886 2012-07-20   Linus Torvalds 
  @@ -42,0 +44,1 @@ uid                            Junio C Hamano 
  ...
in the output.
The surprise is not that I got a signature by Linus (I gave him the key fingerprint when I met him in person during OSCON week). It is that I am seeing a textual diff, which I completely forgot about having arranged to happen.
In the directory, I have this in the .gitattributes file:
  *ring.gpg       diff=gpg
and the repository has this in its .git/config file:
  [diff "gpg"]
          textconv = gpg -v
          xfuncname = "^((pub|uid) .*)"
These two, taken together, tells Git when comparing any file whose name matches "*ring.pgp", pass its contents to "gpg -v" command before running its comparison logic.  "gpg -v" command, when fed a keyring, shows the textual report of what is in the keyring, and that is how I get the above output. And the xfuncname thing tells Git to show the key's name on the @@ lines.
Fun ;-)
No comments:
Post a Comment