diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-11-12 21:49:25 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-11-12 21:49:25 -0800 |
commit | df5e12f7d405b84de07c3f2dc1afe51b1d594e2c (patch) | |
tree | 00f83f1a896def6534efd81148200daabe37e52d | |
parent | Merge git://repo.or.cz/git-gui (diff) | |
parent | tag: Add more tests about mixing incompatible modes and options (diff) | |
download | tgif-df5e12f7d405b84de07c3f2dc1afe51b1d594e2c.tar.xz |
Merge branch 'st/tag'
* st/tag:
tag: Add more tests about mixing incompatible modes and options
tag: Check that options are only allowed in the appropriate mode
-rw-r--r-- | builtin-tag.c | 19 | ||||
-rwxr-xr-x | t/t7004-tag.sh | 11 |
2 files changed, 23 insertions, 7 deletions
diff --git a/builtin-tag.c b/builtin-tag.c index 84db156e63..d339971fab 100644 --- a/builtin-tag.c +++ b/builtin-tag.c @@ -344,7 +344,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix) const char *object_ref, *tag; struct ref_lock *lock; - int annotate = 0, sign = 0, force = 0, lines = 0, + int annotate = 0, sign = 0, force = 0, lines = -1, list = 0, delete = 0, verify = 0; const char *msgfile = NULL, *keyid = NULL; struct msg_arg msg = { 0, STRBUF_INIT }; @@ -380,9 +380,19 @@ int cmd_tag(int argc, const char **argv, const char *prefix) } if (sign) annotate = 1; + if (argc == 0 && !(delete || verify)) + list = 1; + if ((annotate || msg.given || msgfile || force) && + (list || delete || verify)) + usage_with_options(git_tag_usage, options); + + if (list + delete + verify > 1) + usage_with_options(git_tag_usage, options); if (list) - return list_tags(argv[0], lines); + return list_tags(argv[0], lines == -1 ? 0 : lines); + if (lines != -1) + die("-n option is only allowed with -l."); if (delete) return for_each_tag_name(argv, delete_tag); if (verify) @@ -406,11 +416,6 @@ int cmd_tag(int argc, const char **argv, const char *prefix) } } - if (argc == 0) { - if (annotate) - usage_with_options(git_tag_usage, options); - return list_tags(NULL, lines); - } tag = argv[0]; object_ref = argc == 2 ? argv[1] : "HEAD"; diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh index f0edbf1a76..f377fea4bb 100755 --- a/t/t7004-tag.sh +++ b/t/t7004-tag.sh @@ -1090,4 +1090,15 @@ test_expect_success 'filename for the message is relative to cwd' ' git cat-file tag tag-from-subdir-2 | grep "in sub directory" ' +# mixing modes and options: + +test_expect_success 'mixing incompatibles modes and options is forbidden' ' + test_must_fail git tag -a + test_must_fail git tag -l -v + test_must_fail git tag -n 100 + test_must_fail git tag -l -m msg + test_must_fail git tag -l -F some file + test_must_fail git tag -v -s +' + test_done |