From d6b64ed0f3549f56c4d948dc2c0f12abc52fd6c9 Mon Sep 17 00:00:00 2001
From: Matthias Kestenholz <matthias@spinlock.ch>
Date: Thu, 3 Aug 2006 17:24:35 +0200
Subject: [PATCH] Make git-name-rev a builtin

Signed-off-by: Matthias Kestenholz <matthias@spinlock.ch>
Signed-off-by: Junio C Hamano <junkio@cox.net>
---
 Makefile                         | 7 ++++---
 name-rev.c => builtin-name-rev.c | 4 ++--
 builtin.h                        | 1 +
 git.c                            | 1 +
 4 files changed, 8 insertions(+), 5 deletions(-)
 rename name-rev.c => builtin-name-rev.c (98%)

diff --git a/Makefile b/Makefile
index 700c77f564..132c9cf012 100644
--- a/Makefile
+++ b/Makefile
@@ -185,7 +185,7 @@ PROGRAMS = \
 	git-unpack-objects$X git-update-server-info$X \
 	git-upload-pack$X git-verify-pack$X \
 	git-symbolic-ref$X \
-	git-name-rev$X git-pack-redundant$X git-var$X \
+	git-pack-redundant$X git-var$X \
 	git-describe$X git-merge-tree$X git-blame$X git-imap-send$X
 
 BUILT_INS = git-log$X git-whatchanged$X git-show$X git-update-ref$X \
@@ -198,7 +198,7 @@ BUILT_INS = git-log$X git-whatchanged$X git-show$X git-update-ref$X \
 	git-apply$X git-show-branch$X git-diff-files$X git-update-index$X \
 	git-diff-index$X git-diff-stages$X git-diff-tree$X git-cat-file$X \
 	git-fmt-merge-msg$X git-prune$X git-mv$X git-prune-packed$X \
-	git-repo-config$X
+	git-repo-config$X git-name-rev$X
 
 # what 'all' will build and 'install' will install, in gitexecdir
 ALL_PROGRAMS = $(PROGRAMS) $(SIMPLE_PROGRAMS) $(SCRIPTS)
@@ -255,7 +255,8 @@ BUILTIN_OBJS = \
 	builtin-diff-index.o builtin-diff-stages.o builtin-diff-tree.o \
 	builtin-cat-file.o builtin-mailsplit.o builtin-stripspace.o \
 	builtin-update-ref.o builtin-fmt-merge-msg.o builtin-prune.o \
-	builtin-mv.o builtin-prune-packed.o builtin-repo-config.o
+	builtin-mv.o builtin-prune-packed.o builtin-repo-config.o \
+	builtin-name-rev.o
 
 GITLIBS = $(LIB_FILE) $(XDIFF_LIB)
 LIBS = $(GITLIBS) -lz
diff --git a/name-rev.c b/builtin-name-rev.c
similarity index 98%
rename from name-rev.c
rename to builtin-name-rev.c
index f92f14e32f..571bba4817 100644
--- a/name-rev.c
+++ b/builtin-name-rev.c
@@ -1,4 +1,5 @@
 #include <stdlib.h>
+#include "builtin.h"
 #include "cache.h"
 #include "commit.h"
 #include "tag.h"
@@ -126,12 +127,11 @@ static const char* get_rev_name(struct object *o)
 	return buffer;
 }
 
-int main(int argc, char **argv)
+int cmd_name_rev(int argc, const char **argv, const char *prefix)
 {
 	struct object_array revs = { 0, 0, NULL };
 	int as_is = 0, all = 0, transform_stdin = 0;
 
-	setup_git_directory();
 	git_config(git_default_config);
 
 	if (argc < 2)
diff --git a/builtin.h b/builtin.h
index 26ebcaf213..d1d9dc14f9 100644
--- a/builtin.h
+++ b/builtin.h
@@ -49,6 +49,7 @@ extern int cmd_update_ref(int argc, const char **argv, const char *prefix);
 extern int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix);
 extern int cmd_mv(int argc, const char **argv, const char *prefix);
 extern int cmd_repo_config(int argc, const char **argv, const char *prefix);
+extern int cmd_name_rev(int argc, const char **argv, const char *prefix);
 
 extern int cmd_write_tree(int argc, const char **argv, const char *prefix);
 extern int write_tree(unsigned char *sha1, int missing_ok, const char *prefix);
diff --git a/git.c b/git.c
index 6e72a893b7..501a7815fc 100644
--- a/git.c
+++ b/git.c
@@ -265,6 +265,7 @@ static void handle_internal_command(int argc, const char **argv, char **envp)
 		{ "mv", cmd_mv, NEEDS_PREFIX },
 		{ "prune-packed", cmd_prune_packed, NEEDS_PREFIX },
 		{ "repo-config", cmd_repo_config },
+		{ "name-rev", cmd_name_rev, NEEDS_PREFIX },
 	};
 	int i;