]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t: add --no-tag option to test_commit
authorJeff King <peff@peff.net>
Tue, 9 Feb 2021 10:52:45 +0000 (05:52 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 9 Feb 2021 21:36:06 +0000 (13:36 -0800)
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>
t/t4208-log-magic-pathspec.sh
t/test-lib-functions.sh

index 5e10136e9a239fda6526da7f84df3ee49936a6eb..7f0c1dcc0f0bfbfd746648f4fee1b7588a8f31b8 100755 (executable)
@@ -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_when_finished "git checkout main" &&
        git checkout --detach &&
-       # Must manually call `test_tick` instead of using `test_commit`,
-       # because the latter additionally creates a tag, which would make
-       # the commit reachable not only via HEAD.
-       test_tick &&
-       git commit --allow-empty -m detached &&
-       test_tick &&
-       git commit --allow-empty -m something-else &&
+       test_commit --no-tag detached &&
+       test_commit --no-tag something-else &&
        git log :/detached --
 '
 
index 6bca0023168c3c850f7a9129cd32e770714b4922..1587241ba036098668c53d33df8cb30168c78f6e 100644 (file)
@@ -202,6 +202,7 @@ test_commit () {
        author= &&
        signoff= &&
        indir= &&
+       no_tag= &&
        while test $# != 0
        do
                case "$1" in
@@ -222,6 +223,9 @@ test_commit () {
                        indir="$2"
                        shift
                        ;;
+               --no-tag)
+                       no_tag=yes
+                       ;;
                *)
                        break
                        ;;
@@ -244,7 +248,10 @@ test_commit () {
        git ${indir:+ -C "$indir"} commit \
            ${author:+ --author "$author"} \
            $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>