diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-22 08:42:18 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-02-22 14:29:41 -0800 |
commit | 81b50f3ce40bfdd66e5d967bf82be001039a9a98 (patch) | |
tree | 7e86bb81e83c9fad73dcbdaa0ef33038137b4274 /builtin-merge-recursive.c | |
parent | 241b9254e1c8ff071d8054f8b6fbe1883b389d69 (diff) | |
download | git-81b50f3ce40bfdd66e5d967bf82be001039a9a98.tar.gz |
Move 'builtin-*' into a 'builtin/' subdirectory
This shrinks the top-level directory a bit, and makes it much more
pleasant to use auto-completion on the thing. Instead of
[torvalds@nehalem git]$ em buil<tab>
Display all 180 possibilities? (y or n)
[torvalds@nehalem git]$ em builtin-sh
builtin-shortlog.c builtin-show-branch.c builtin-show-ref.c
builtin-shortlog.o builtin-show-branch.o builtin-show-ref.o
[torvalds@nehalem git]$ em builtin-shor<tab>
builtin-shortlog.c builtin-shortlog.o
[torvalds@nehalem git]$ em builtin-shortlog.c
you get
[torvalds@nehalem git]$ em buil<tab> [type]
builtin/ builtin.h
[torvalds@nehalem git]$ em builtin [auto-completes to]
[torvalds@nehalem git]$ em builtin/sh<tab> [type]
shortlog.c shortlog.o show-branch.c show-branch.o show-ref.c show-ref.o
[torvalds@nehalem git]$ em builtin/sho [auto-completes to]
[torvalds@nehalem git]$ em builtin/shor<tab> [type]
shortlog.c shortlog.o
[torvalds@nehalem git]$ em builtin/shortlog.c
which doesn't seem all that different, but not having that annoying
break in "Display all 180 possibilities?" is quite a relief.
NOTE! If you do this in a clean tree (no object files etc), or using an
editor that has auto-completion rules that ignores '*.o' files, you
won't see that annoying 'Display all 180 possibilities?' message - it
will just show the choices instead. I think bash has some cut-off
around 100 choices or something.
So the reason I see this is that I'm using an odd editory, and thus
don't have the rules to cut down on auto-completion. But you can
simulate that by using 'ls' instead, or something similar.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-merge-recursive.c')
-rw-r--r-- | builtin-merge-recursive.c | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/builtin-merge-recursive.c b/builtin-merge-recursive.c deleted file mode 100644 index d8875d5892..0000000000 --- a/builtin-merge-recursive.c +++ /dev/null @@ -1,84 +0,0 @@ -#include "cache.h" -#include "commit.h" -#include "tag.h" -#include "merge-recursive.h" - -static const char *better_branch_name(const char *branch) -{ - static char githead_env[8 + 40 + 1]; - char *name; - - if (strlen(branch) != 40) - return branch; - sprintf(githead_env, "GITHEAD_%s", branch); - name = getenv(githead_env); - return name ? name : branch; -} - -int cmd_merge_recursive(int argc, const char **argv, const char *prefix) -{ - const unsigned char *bases[21]; - unsigned bases_count = 0; - int i, failed; - unsigned char h1[20], h2[20]; - struct merge_options o; - struct commit *result; - - init_merge_options(&o); - if (argv[0] && !suffixcmp(argv[0], "-subtree")) - o.subtree_shift = ""; - - if (argc < 4) - usagef("%s <base>... -- <head> <remote> ...", argv[0]); - - for (i = 1; i < argc; ++i) { - 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)) - die("Could not parse object '%s'", argv[i]); - bases[bases_count++] = sha; - } - else - warning("Cannot handle more than %d bases. " - "Ignoring %s.", - (int)ARRAY_SIZE(bases)-1, argv[i]); - } - if (argc - i != 3) /* "--" "<head>" "<remote>" */ - die("Not handling anything other than two heads merge."); - - o.branch1 = argv[++i]; - o.branch2 = argv[++i]; - - if (get_sha1(o.branch1, h1)) - die("Could not resolve ref '%s'", o.branch1); - if (get_sha1(o.branch2, h2)) - die("Could not resolve ref '%s'", o.branch2); - - o.branch1 = better_branch_name(o.branch1); - o.branch2 = better_branch_name(o.branch2); - - if (o.verbosity >= 3) - printf("Merging %s with %s\n", o.branch1, o.branch2); - - failed = merge_recursive_generic(&o, h1, h2, bases_count, bases, &result); - if (failed < 0) - return 128; /* die() error code */ - return failed; -} |