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

Re: [PATCH v3] send-pack: run GPG after atomic push checking

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 19, 2020, 23:02 UTC
Message-ID
<xmqqpn6hid5c.fsf@gitster.c.googlers.com>
In-Reply-To
<20200919144750.95812-1-hanxin.hx@alibaba-inc.com>
"Han Xin" <hanxin.hx@alibaba-inc.com> writes:
Show 8 quoted lines
> The refs update commands can be sent to the server side in two different
> ways: GPG-signed or unsigned.  We should run these two operations in the
> same "Finally, tell the other end!" code block, but they are seperated
> by the "Clear the status for each ref" code block.  This will result in
> a slight performance loss, because the failed atomic push will still
> perform unnecessary preparations for shallow advertise and GPG-signed
> commands buffers, and user may have to be bothered by the (possible) GPG
> passphrase input when there is nothing to sign.

The above sounds as if we care about the performace loss and that is the main motivation behind this change. Intended? I have an impression that it is a hard-sell as a "performance improvement" patch, as the saved cycles are negligible compared to everything else that is done in the flow, and more importantly, it optimizes for the wrong case (i.e. it fails more efficiently).

Show 5 quoted lines
> Add a new test case to t5534 to ensure GPG will not be called when the
> GPG-signed atomic push fails.
>
> Signed-off-by: Han Xin <hanxin.hx@alibaba-inc.com>
> ---
...
Show 5 quoted lines
> +	test_must_fail env PATH="$TRASH_DIRECTORY:$PATH" git push \
> +			--signed --atomic --porcelain \
> +			dst noop ff noff >out 2>&1 &&
> +
> +	test_i18ngrep ! "gpg failed to sign" out &&

OK, that is much less brittle than the "output must match these lines exactly" test we saw earlier.

Show 9 quoted lines
> +	sed -n -e "/^To dst/,$ p" out >actual &&
> +	cat >expect <<-EOF &&
> +	To dst
> +	=	refs/heads/noop:refs/heads/noop	[up to date]
> +	!	refs/heads/ff:refs/heads/ff	[rejected] (atomic push failed)
> +	!	refs/heads/noff:refs/heads/noff	[rejected] (non-fast-forward)
> +	Done
> +	EOF
> +	test_i18ncmp expect actual

Didn't you mean to remove this part, which makes the whole test more brittle than necessary?

Thanks.
Previous: Han XinNext: Han Xin
Message 13 of 17 in “t5534: new test case for atomic signed push”
  1. 1/2 t5534: new test case for atomic signed pushHan Xin, Sep 15, 2020
  2. 2/2 send-pack: check atomic push before running GPGHan Xin, Sep 15, 2020
  3. Junio C HamanoSep 15, 2020
  4. Junio C HamanoSep 15, 2020
  5. Jiang XinSep 16, 2020
  6. Junio C HamanoSep 16, 2020
  7. 韩欣(炽天)Sep 16, 2020
  8. Jiang XinSep 16, 2020
  9. Junio C HamanoSep 16, 2020
  10. send-pack: run GPG after atomic push checkingHan Xin, Sep 18, 2020
  11. Junio C HamanoSep 19, 2020
  12. send-pack: run GPG after atomic push checkingHan Xin, Sep 19, 2020
  13. Junio C HamanoSep 19, 2020
  14. send-pack: run GPG after atomic push checkingHan Xin, Sep 20, 2020
  15. Junio C HamanoSep 15, 2020
  16. brian m. carlsonSep 16, 2020
  17. Junio C HamanoSep 15, 2020

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.