X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=builtin-merge-recursive.c;h=d8875d589240e0c78a9e241a7d2bdde1d10ab800;hb=712d352577012d5035da69bbf49ea0f0df8bb7da;hp=d26a96e486f2a84fdfc54527d15b9acdf7ea34bb;hpb=814035c12a07927ea03350184a14f869cdce7276;p=git.git diff --git a/builtin-merge-recursive.c b/builtin-merge-recursive.c index d26a96e48..d8875d589 100644 --- a/builtin-merge-recursive.c +++ b/builtin-merge-recursive.c @@ -25,19 +25,30 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix) struct commit *result; init_merge_options(&o); - if (argv[0]) { - int namelen = strlen(argv[0]); - if (8 < namelen && - !strcmp(argv[0] + namelen - 8, "-subtree")) - o.subtree_merge = 1; - } + if (argv[0] && !suffixcmp(argv[0], "-subtree")) + o.subtree_shift = ""; if (argc < 4) - die("Usage: %s ... -- ...", argv[0]); + usagef("%s ... -- ...", argv[0]); for (i = 1; i < argc; ++i) { - if (!strcmp(argv[i], "--")) - break; + const char *arg = argv[i]; + + if (!prefixcmp(arg, "--")) { + if (!arg[2]) + break; + if (!strcmp(arg+2, "ours")) + o.recursive_variant = MERGE_RECURSIVE_OURS; + else if (!strcmp(arg+2, "theirs")) + o.recursive_variant = MERGE_RECURSIVE_THEIRS; + else if (!strcmp(arg+2, "subtree")) + o.subtree_shift = ""; + else if (!prefixcmp(arg+2, "subtree=")) + o.subtree_shift = arg + 10; + else + die("Unknown option %s", arg); + continue; + } if (bases_count < ARRAY_SIZE(bases)-1) { unsigned char *sha = xmalloc(20); if (get_sha1(argv[i], sha))