Subject: Re: [PATCH v2 0/3] tag: keep the message file in case ref transaction fails

From: Junio C Hamano <[email-masked]>
Date: Mon, 15 May 2023 14:50:32 -0700

Kristoffer Haugsbakk <[email-masked]> writes:

>      +	GIT_EDITOR=./fakeeditor git tag -a foo &&
>     -+	! test -e .git/TAG_EDITMSG
>     ++	! test_path_exists .git/TAG_EDITMSG

This is not quite right.  test_path_exists is loud when its
expectation that the path _exists_ is not met, i.e.

        test_path_exists () {
                test "$#" -ne 1 && BUG "1 param"
                if ! test -e "$1"
                then
                        echo "Path $1 doesn't exist"
                        false
                fi
        }

But this test expects that .git/TAG_EDITMSG to be missing.  When the
test is run with "-v" to make the output from this 'echo' visible,
we will keep getting the complaint when the test is happy, which is
not quite what we want.

What you want to use is test_path_is_missing, without "!".

>       ## Notes (series) ##
>     -    I tried to maintain the proper formatting by using `clang-format` via Emacs on
>     -    the affected lines.
>     +    I duplicated this message (this isn’t obvious in the diff):
>     +
>     +        fprintf(stderr,
>     +                _("The tag message has been left in %s\n"),
>     +                path);
>     +
>     +    Should this be factored into a static function instead?

When the third copy is made, we would definitely insist avoiding
copies, but until then, I am indifferent.  Others may have different
opinions, though.