Re: [PATCH] am: let command-line options override saved options
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jul 28, 2015, 17:09 UTC
- Message-ID
- <xmqqegjsfbtk.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <20150728164311.GA1948@yoshi.chippynet.com>
Paul Tan <pyokagan@gmail.com> writes:
Show 24 quoted lines
> diff --git a/t/t4153-am-resume-override-opts.sh b/t/t4153-am-resume-override-opts.sh
> new file mode 100755
> index 0000000..c49457c
> --- /dev/null
> +++ b/t/t4153-am-resume-override-opts.sh
> @@ -0,0 +1,144 @@
> +#!/bin/sh
> +
> +test_description='git-am command-line options override saved options'
> +
> +. ./test-lib.sh
> +
> +test_expect_success 'setup' '
> + test_commit initial file &&
> + test_commit first file &&
> +
> + git checkout -b side initial &&
> + test_commit side-first file &&
> + test_commit side-second file &&
> +
> + {
> + echo "Message-Id: <side-first@example.com>" &&
> + git format-patch --stdout -1 side-first | sed -e "1d"
> + } >side-first.patch &&Hmm, puzzled... Ah, you want to make sure Message-Id comes at the very beginning, and you are going to use a single e-mail per mailbox so it is easier to strip the Beginning of Message marker than to insert Message-Id after it. I can understand what is going on.
> + {
> + sed -ne "1,/^\$/p" side-first.patch &&sed -e "/^\$/q" would work just as well here
> + echo "-- >8 --" && > + sed -e "1,/^\$/d" side-first.patch > + } >side-first.scissors &&
So *.scissors version has -- >8 -- inserted at the beginning of the body.
Show 10 quoted lines
> + {
> + echo "Message-Id: <side-second@example.com>" &&
> + git format-patch --stdout -1 side-second | sed -e "1d"
> + } >side-second.patch &&
> + {
> + sed -ne "1,/^\$/p" side-second.patch &&
> + echo "-- >8 --" &&
> + sed -e "1,/^\$/d" side-second.patch
> + } >side-second.scissors
> +'A helper function that takes the branch name may be a good idea, not just to consolidate the implementation but as a place to document how these pairs of files are constructed and why.
Show 18 quoted lines
> +test_expect_success '--3way, --no-3way' ' > + rm -fr .git/rebase-apply && > + git reset --hard && > + git checkout first && > + test_must_fail git am --3way side-first.patch side-second.patch && > + test -n "$(git ls-files -u)" && > + echo will-conflict >file && > + git add file && > + test_must_fail git am --no-3way --continue && > + test -z "$(git ls-files -u)" > +' > + > +test_expect_success '--no-quiet, --quiet' ' > + rm -fr .git/rebase-apply && > + git reset --hard && > + git checkout first && > + test_must_fail git am --no-quiet side-first.patch side-second.patch && > + test_must_be_empty out &&
Where did this 'out' come from?
> + echo side-first >file && > + git add file && > + git am --quiet --continue >out && > + test_must_be_empty out
I can see this one, though I am not sure if it is sensible to see what the command says under --quiet option, especially if you are making sure it does not fail, which you already have checked for its exit status.
Show 19 quoted lines
> +' > + > +test_expect_success '--signoff, --no-signoff' ' > + rm -fr .git/rebase-apply && > + git reset --hard && > + git checkout first && > + test_must_fail git am --signoff side-first.patch side-second.patch && > + echo side-first >file && > + git add file && > + git am --no-signoff --continue && > + > + # applied side-first will be signed off > + echo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" >expected && > + git cat-file commit HEAD^ | grep "Signed-off-by:" >actual && > + test_cmp expected actual && > + > + # applied side-second will not be signed off > + test $(git cat-file commit HEAD | grep -c "Signed-off-by:") -eq 0 > +'
Hmm, the command was run with --signoff at the start, first gets applied with "am --no-signoff --resolved" so I would expect it does not get signed off, but the second one will apply cleanly on top, so shouldn't it get signed off? Or perhaps somehow I misread Peff's idea to make these override one-shot in $gmane/274635?