t: add --no-tag option to test_commit

One of the conveniences that test_commit offers is making a tag for each
commit. This makes it easy to refer to the commits in subsequent
commands. But it can also be a pain if you care about reachability,
because those tags keep the commits reachable even if they are rewound
from the branch they're made on.

The alternative is that scripts have to call test_tick, git-add, and
git-commit themselves. Let's add a --no-tag option to give them the
one-liner convenience of using test_commit.

This is in preparation for the next patch, which will add some more
calls. But I cleaned up an existing site to show off the feature. There
are probably more cleanups possible.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2021-02-09 05:52:45 -05:00 committed by Junio C Hamano
parent 1d4f2316c5
commit 3803a3a099
2 changed files with 10 additions and 8 deletions

View file

@ -31,13 +31,8 @@ test_expect_success '"git log :/a -- " should not be ambiguous' '
test_expect_success '"git log :/detached -- " should find a commit only in HEAD' ' test_expect_success '"git log :/detached -- " should find a commit only in HEAD' '
test_when_finished "git checkout main" && test_when_finished "git checkout main" &&
git checkout --detach && git checkout --detach &&
# Must manually call `test_tick` instead of using `test_commit`, test_commit --no-tag detached &&
# because the latter additionally creates a tag, which would make test_commit --no-tag something-else &&
# the commit reachable not only via HEAD.
test_tick &&
git commit --allow-empty -m detached &&
test_tick &&
git commit --allow-empty -m something-else &&
git log :/detached -- git log :/detached --
' '

View file

@ -202,6 +202,7 @@ test_commit () {
author= && author= &&
signoff= && signoff= &&
indir= && indir= &&
no_tag= &&
while test $# != 0 while test $# != 0
do do
case "$1" in case "$1" in
@ -222,6 +223,9 @@ test_commit () {
indir="$2" indir="$2"
shift shift
;; ;;
--no-tag)
no_tag=yes
;;
*) *)
break break
;; ;;
@ -244,7 +248,10 @@ test_commit () {
git ${indir:+ -C "$indir"} commit \ git ${indir:+ -C "$indir"} commit \
${author:+ --author "$author"} \ ${author:+ --author "$author"} \
$signoff -m "$1" && $signoff -m "$1" &&
git ${indir:+ -C "$indir"} tag "${4:-$1}" if test -z "$no_tag"
then
git ${indir:+ -C "$indir"} tag "${4:-$1}"
fi
} }
# Call test_merge with the arguments "<message> <commit>", where <commit> # Call test_merge with the arguments "<message> <commit>", where <commit>