If "git tag -d -l -v ..." is called, only "-l" is honored, which is arbitrary and wrong. This patch checks that "git tag" knows in what mode it operates before performing any operation. Signed-Off-By: Samuel Tardieu <sam@xxxxxxxxxxx> --- builtin-tag.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) diff --git a/builtin-tag.c b/builtin-tag.c index 84db156..5ce0e21 100644 --- a/builtin-tag.c +++ b/builtin-tag.c @@ -380,7 +380,11 @@ int cmd_tag(int argc, const char **argv, const char *prefix) } if (sign) annotate = 1; + if (argc == 0 && !(delete || verify)) + list = 1; + if (list + delete + verify > 1) + usage_with_options(git_tag_usage, options); if (list) return list_tags(argv[0], lines); if (delete) @@ -406,11 +410,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"; -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html