git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 0/3] fast-export, fast-import: implement signed-commits

From
Elijah Newren <newren@gmail.com>
Date
Apr 21, 2021, 18:12 UTC
Message-ID
<CABPp-BEz-QykELpvofsrZzbQtQUE0fvijUcaJXhRFbCZpKJuYQ@mail.gmail.com>
In-Reply-To
<20210419225441.3139048-1-lukeshu@lukeshu.com>
On Mon, Apr 19, 2021 at 3:54 PM Luke Shumaker <lukeshu@lukeshu.com> wrote:
Show 10 quoted lines
>
> From: Luke Shumaker <lukeshu@datawire.io>
>
> fast-export has an existing --signed-tags= flag that controls how to
> handle tag signatures.  However, there is no equivalent for commit
> signatures; it just silently strips the signature out of the commit
> (analogously to --signed-tags=strip).
>
> So implement a --signed-commits= flag in fast-export, and implement
> the receiving side of it in fast-import.

I understand adding an option to fast-export, but shouldn't there also be one for fast-import? In particular, I can see users wanting any of the following:

* I want these signatures exported and imported because I know I won't
tweak them and they'll still be valid.
* I want these signatures even though they'll be invalid.  Whatever,
I'll just deal with it.
* I want the signatures exported and imported *when they will remain
valid*.  Always exporting them makes sense, because fast-export
doesn't know about tweaks I'll be making to its output before feeding
it to fast-import.  But fast-import should have options to
strip-if-invalid/warn-if-invalid/error-if-invalid/import-without-warning
for these tags (though they don't have to use these exact names).

I know fast-import doesn't do anything of the sort for signed tags, but fast-import also doesn't support signed tags as per this comment in the documentation:

""" Signing annotated tags during import from within fast-import is not supported. Trying to include your own PGP/GPG signature is not recommended, as the frontend does not (easily) have access to the complete set of bytes which normally goes into such a signature. If signing is required, create lightweight tags from within fast-import with `reset`, then create the annotated versions of those tags offline with the standard 'git tag' process. """

it just happens to "work" since the signature is part of the annotation and fast-import doesn't attempt to read or validate the annotation in any way, treating it as free-from text. I'd say users relying on this are on somewhat shaky ground.

But here you're adding explicit fast-import directives to the language for signatures of commits, so you clearly do need to care. And I suspect fast-import's default should be error-if-invalid rather than import-without-warning.

Show 17 quoted lines
> Luke Shumaker (3):
>   git-fast-import.txt: add missing LF in the BNF
>   fast-export: rename --signed-tags='warn' to 'warn-verbatim'
>   fast-export, fast-import: implement signed-commits
>
>  Documentation/git-fast-export.txt | 18 +++++--
>  Documentation/git-fast-import.txt |  9 +++-
>  builtin/fast-export.c             | 88 +++++++++++++++++++++++++------
>  builtin/fast-import.c             | 15 ++++++
>  t/t9350-fast-export.sh            | 82 ++++++++++++++++++++++++++++
>  5 files changed, 191 insertions(+), 21 deletions(-)
>
> --
> 2.31.1
>
> Happy hacking,
> ~ Luke Shumaker
Previous: Luke ShumakerNext: Luke Shumaker
Message 14 of 15 in “fast-export, fast-import: implement signed-commits”
  1. 0/3 fast-export, fast-import: implement signed-commitsLuke Shumaker, Apr 19, 2021
  2. 1/3 git-fast-import.txt: add missing LF in the BNFLuke Shumaker, Apr 19, 2021
  3. 2/3 fast-export: rename --signed-tags='warn' to 'warn-verbatim'Luke Shumaker, Apr 19, 2021
  4. Taylor BlauApr 20, 2021
  5. Luke ShumakerApr 20, 2021
  6. 3/3 fast-export, fast-import: implement signed-commitsLuke Shumaker, Apr 19, 2021
  7. brian m. carlsonApr 20, 2021
  8. Luke ShumakerApr 20, 2021
  9. brian m. carlsonApr 20, 2021
  10. Luke ShumakerApr 21, 2021
  11. Taylor BlauApr 20, 2021
  12. Luke ShumakerApr 20, 2021
  13. Luke ShumakerApr 20, 2021
  14. Elijah NewrenApr 21, 2021
  15. Luke ShumakerApr 21, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.