commit-tree: resurrect command line parsing updates

79a9312 (commit-tree: update the command line parsing, 2011-11-09) updated the command line parser to understand the usual "flags first and then non-flag arguments" order, in addition to the original and a bit unusual "tree comes first and then zero or more -p <parent>". Unfortunately, ba3c69a (commit: teach --gpg-sign option, 2011-10-05) broke it by mistake. Resurrect it, and protect the feature with a test from future breakages. Noticed by Keshav Kini Signed-off-by: Junio C Hamano <gitster@pobox.com>

Junio C Hamano committed Jul 17, 2012 at 13:05 UTC 9aab1b511892b7af86c037b49ff80ec5b4b2c191
2 files changed +17 -3
builtin/commit-tree.c
-3
@@ -48,9 +48,6 @@ int cmd_commit_tree(int argc, const char **argv, const char *prefix)
48 if (argc < 2 || !strcmp(argv[1], "-h"))
49 usage(commit_tree_usage);
50
51 - if (get_sha1(argv[1], tree_sha1))
52 - die("Not a valid object name %s", argv[1]);
53 -
51 for (i = 1; i < argc; i++) {
52 const char *arg = argv[i];
53 if (!strcmp(arg, "-p")) {
t/t1100-commit-tree-options.sh
+17
@@ -7,6 +7,9 @@ test_description='git commit-tree options test
7
8 This test checks that git commit-tree can create a specific commit
9 object by defining all environment variables that it understands.
10 +
11 +Also make sure that command line parser understands the normal
12 +"flags first and then non flag arguments" command line.
13 '
14
15 . ./test-lib.sh
@@ -42,4 +45,18 @@ test_expect_success \
45 'compare commit' \
46 'test_cmp expected commit'
47
48 +
49 +test_expect_success 'flags and then non flags' '
50 + echo comment text |
51 + git commit-tree $(cat treeid) >commitid &&
52 + echo comment text |
53 + git commit-tree $(cat treeid) -p $(cat commitid) >childid-1 &&
54 + echo comment text |
55 + git commit-tree -p $(cat commitid) $(cat treeid) >childid-2 &&
56 + test_cmp childid-1 childid-2 &&
57 + git commit-tree $(cat treeid) -m foo >childid-3 &&
58 + git commit-tree -m foo $(cat treeid) >childid-4 &&
59 + test_cmp childid-3 childid-4
60 +'
61 +
62 test_done