Stefan Beller <sbel...@google.com> writes:

> This patch will be incorporated into the right places in v3 of the series.
>
> Signed-off-by: Stefan Beller <sbel...@google.com>
> ---
>
> 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to