On Mon, Jan 8, 2018 at 12:40 PM, Santiago Torres <[email protected]> wrote:
> Hi,
>
> I personally like the idea of git-evtags, but I feel that they could be
> made so that push certificates (and being hash-algorithm agnostic)
> should provide the same functionality with less code.
>
> To me, a git evtag is basically a signed tag + a data structure similar
> to a push certificate embedded in it. I wonder if, with the current
> tooling in git, this could be done as a custom command...
In that case, why not migrate Git to a new hash function instead
of adding a very niche fixup?
See Documentation/technical/hash-function-transition.txt
for how to do it.
Personally I'd dislike to include ev-tags as it might send a signal
of "papering over sha1 issues instead of fixing it".
push certificates are somewhat underdocumented, see the
git-push man page, which contains
--[no-]signed, --signed=(true|false|if-asked)
GPG-sign the push request to update refs on the
receiving side, to allow it to be checked by the
hooks and/or be logged. If false or --no-signed, no
signing will be attempted. If true or --signed, the
push will fail if the server does not support signed
pushes. If set to if-asked, sign if and only if the
server supports signed pushes. The push will also
fail if the actual call to gpg --sign fails. See git-
receive-pack(1) for the details on the receiving end.
Going to receive-pack(1), there is an excerpt:
When accepting a signed push (see git-push(1)), the
signed push certificate is stored in a blob and an
environment variable GIT_PUSH_CERT can be consulted for
its object name. See the description of post-receive hook
for an example. In addition, the certificate is verified
using GPG and the result is exported with the following
environment variables:
...
Stefan