Make merge-base a built-in.
authorJunio C Hamano <junkio@cox.net>
Tue, 9 Jan 2007 08:50:02 +0000 (00:50 -0800)
committerJunio C Hamano <junkio@cox.net>
Wed, 10 Jan 2007 01:57:03 +0000 (17:57 -0800)
Signed-off-by: Junio C Hamano <junkio@cox.net>
Makefile
builtin-merge-base.c [moved from merge-base.c with 79% similarity]
builtin.h
git.c

index 43113e9e16937899332bcd24a88a2ae78ce65c97..eb88860bc9bfa694e455f5dfc76dd02d49b52d79 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -194,7 +194,6 @@ SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \
 PROGRAMS = \
        git-convert-objects$X git-fetch-pack$X git-fsck-objects$X \
        git-hash-object$X git-index-pack$X git-local-fetch$X \
-       git-merge-base$X \
        git-daemon$X \
        git-merge-index$X git-mktag$X git-mktree$X git-patch-id$X \
        git-peek-remote$X git-receive-pack$X \
@@ -289,6 +288,7 @@ BUILTIN_OBJS = \
        builtin-ls-tree.o \
        builtin-mailinfo.o \
        builtin-mailsplit.o \
+       builtin-merge-base.o \
        builtin-merge-file.o \
        builtin-mv.o \
        builtin-name-rev.o \
similarity index 79%
rename from merge-base.c
rename to builtin-merge-base.c
index 385f4ba386ada3e43f962d9051cf4b651320fcd3..e35d362f2697ebc7e627f230283aedb8ed92857f 100644 (file)
@@ -1,9 +1,7 @@
 #include "cache.h"
 #include "commit.h"
 
-static int show_all;
-
-static int merge_base(struct commit *rev1, struct commit *rev2)
+static int show_merge_base(struct commit *rev1, struct commit *rev2, int show_all)
 {
        struct commit_list *result = get_merge_bases(rev1, rev2, 0);
 
@@ -23,16 +21,16 @@ static int merge_base(struct commit *rev1, struct commit *rev2)
 static const char merge_base_usage[] =
 "git-merge-base [--all] <commit-id> <commit-id>";
 
-int main(int argc, char **argv)
+int cmd_merge_base(int argc, const char **argv, const char *prefix)
 {
        struct commit *rev1, *rev2;
        unsigned char rev1key[20], rev2key[20];
+       int show_all = 0;
 
-       setup_git_directory();
        git_config(git_default_config);
 
        while (1 < argc && argv[1][0] == '-') {
-               char *arg = argv[1];
+               const char *arg = argv[1];
                if (!strcmp(arg, "-a") || !strcmp(arg, "--all"))
                        show_all = 1;
                else
@@ -49,5 +47,5 @@ int main(int argc, char **argv)
        rev2 = lookup_commit_reference(rev2key);
        if (!rev1 || !rev2)
                return 1;
-       return merge_base(rev1, rev2);
+       return show_merge_base(rev1, rev2, show_all);
 }
index df72d09447d0edd17d07eb97a9b3b36fa4b57531..ae32993ce945000018c38668eb33c8282c15400d 100644 (file)
--- a/builtin.h
+++ b/builtin.h
@@ -42,6 +42,7 @@ extern int cmd_ls_files(int argc, const char **argv, const char *prefix);
 extern int cmd_ls_tree(int argc, const char **argv, const char *prefix);
 extern int cmd_mailinfo(int argc, const char **argv, const char *prefix);
 extern int cmd_mailsplit(int argc, const char **argv, const char *prefix);
+extern int cmd_merge_base(int argc, const char **argv, const char *prefix);
 extern int cmd_merge_file(int argc, const char **argv, const char *prefix);
 extern int cmd_mv(int argc, const char **argv, const char *prefix);
 extern int cmd_name_rev(int argc, const char **argv, const char *prefix);
diff --git a/git.c b/git.c
index bf55499dc3d555dfaa853b0c6e4aec5439c3532e..e7bc79af936190e527698df922b7b8e4cb37095f 100644 (file)
--- a/git.c
+++ b/git.c
@@ -238,6 +238,7 @@ static void handle_internal_command(int argc, const char **argv, char **envp)
                { "ls-tree", cmd_ls_tree, RUN_SETUP },
                { "mailinfo", cmd_mailinfo },
                { "mailsplit", cmd_mailsplit },
+               { "merge-base", cmd_merge_base, RUN_SETUP },
                { "merge-file", cmd_merge_file },
                { "mv", cmd_mv, RUN_SETUP },
                { "name-rev", cmd_name_rev, RUN_SETUP },