Stefan Beller <[email protected]> writes:
> This patch will be incorporated into the right places in v3 of the series.
>
> Signed-off-by: Stefan Beller <[email protected]>
> ---
>
> Notes:
> I don't want to resend the patch series today to accumulate comments,
> but this makes the last test pass, which is the whole point of the series.
>
> I'll put it into the right places in a reroll.
>
> builtin/receive-pack.c | 13 ++++++++++++-
> t/t5543-atomic-push.sh | 2 +-
> 2 files changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
> index 0803fd2..3477f7c 100644
> --- a/builtin/receive-pack.c
> +++ b/builtin/receive-pack.c
> @@ -1122,7 +1122,18 @@ static void execute_commands(struct command *commands,
> }
>
> if (use_atomic) {
> - if (ref_transaction_commit(transaction, &err)) {
> + /* update(...) may abort early (i.e. because the hook refused to
> + * update that ref), which then doesn't even record a
> transaction
> + * regarding that ref. Make sure all commands are without error
> + * and then commit atomically. */
/*
* The first line of our multi-line comment
* has only opening slash-asterisk and nothing else.
* The last line has asterisk-slash and nothing else.
*/
> + for (cmd = commands; cmd; cmd = cmd->next)
> + if (cmd->error_string)
> + break;
> + if (cmd) {
> + for (cmd = commands; cmd; cmd = cmd->next)
> + if (!cmd->error_string)
> + cmd->error_string = "atomic push
> failure";
> + } else if (ref_transaction_commit(transaction, &err)) {
> rp_error("%s", err.buf);
> for (cmd = commands; cmd; cmd = cmd->next)
> cmd->error_string = err.buf;
Makes sense.
> diff --git a/t/t5543-atomic-push.sh b/t/t5543-atomic-push.sh
> index 6354fc0..f0e54d9 100755
> --- a/t/t5543-atomic-push.sh
> +++ b/t/t5543-atomic-push.sh
> @@ -142,7 +142,7 @@ test_expect_success 'atomic push fails if one tag fails
> remotely' '
> test_ref_upstream second $(git -C workbench rev-parse --verify HEAD@{1})
> '
>
> -test_expect_failure 'atomic push obeys update hook preventing a branch to be
> pushed' '
> +test_expect_success 'atomic push obeys update hook preventing a branch to be
> pushed' '
> mk_repo_pair &&
> (
> cd workbench &&
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html