summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5f25b62)
raw | patch | inline | side by side (parent: 5f25b62)
author | Junio C Hamano <gitster@pobox.com> | |
Wed, 17 Aug 2011 21:30:34 +0000 (14:30 -0700) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Mon, 22 Aug 2011 18:34:55 +0000 (11:34 -0700) |
There are two copies of traverse_commit_list callback that show the object
name followed by pathname the object was found, to produce output similar
to "rev-list --objects".
Unify them.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
name followed by pathname the object was found, to produce output similar
to "rev-list --objects".
Unify them.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/rev-list.c | patch | blob | history | |
revision.c | patch | blob | history | |
revision.h | patch | blob | history | |
upload-pack.c | patch | blob | history |
diff --git a/builtin/rev-list.c b/builtin/rev-list.c
index d789279309ed544dd31520fffea55494f4cc9eff..f5ce4873e339ac748065e372c1c5e4830062320f 100644 (file)
--- a/builtin/rev-list.c
+++ b/builtin/rev-list.c
@@ -176,21 +176,8 @@ static void finish_object(struct object *obj, const struct name_path *path, cons
static void show_object(struct object *obj, const struct name_path *path, const char *component)
{
- char *name = path_name(path, component);
- /* An object with name "foo\n0000000..." can be used to
- * confuse downstream "git pack-objects" very badly.
- */
- const char *ep = strchr(name, '\n');
-
finish_object(obj, path, component);
- if (ep) {
- printf("%s %.*s\n", sha1_to_hex(obj->sha1),
- (int) (ep - name),
- name);
- }
- else
- printf("%s %s\n", sha1_to_hex(obj->sha1), name);
- free(name);
+ show_object_with_name(stdout, obj, path, component);
}
static void show_edge(struct commit *commit)
diff --git a/revision.c b/revision.c
index c46cfaa3e4d2f06fd67ccd71c7ba47891796fd60..c5b38cc1174356c15d6b544ab8eab4391a4621a7 100644 (file)
--- a/revision.c
+++ b/revision.c
return n;
}
+void show_object_with_name(FILE *out, struct object *obj, const struct name_path *path, const char *component)
+{
+ char *name = path_name(path, component);
+ const char *ep = strchr(name, '\n');
+
+ /*
+ * An object with name "foo\n0000000..." can be used to
+ * confuse downstream "git pack-objects" very badly.
+ */
+ if (ep) {
+ fprintf(out, "%s %.*s\n", sha1_to_hex(obj->sha1),
+ (int) (ep - name),
+ name);
+ }
+ else
+ fprintf(out, "%s %s\n", sha1_to_hex(obj->sha1), name);
+ free(name);
+}
+
void add_object(struct object *obj,
struct object_array *p,
struct name_path *path,
diff --git a/revision.h b/revision.h
index 3d64adad18e2c889b7a7b7367f99c239f958dc70..da00a58fa5ff600e4c47f698d51db5bb7d4d5e5b 100644 (file)
--- a/revision.h
+++ b/revision.h
char *path_name(const struct name_path *path, const char *name);
+extern void show_object_with_name(FILE *, struct object *, const struct name_path *, const char *);
+
extern void add_object(struct object *obj,
struct object_array *p,
struct name_path *path,
diff --git a/upload-pack.c b/upload-pack.c
index ce5cbbea6be45a6dfa79bcc8c8244ae0b99c7ca3..970a1eba137828511456c5dc67e6d6001ef609a4 100644 (file)
--- a/upload-pack.c
+++ b/upload-pack.c
static void show_object(struct object *obj, const struct name_path *path, const char *component)
{
- /* An object with name "foo\n0000000..." can be used to
- * confuse downstream git-pack-objects very badly.
- */
- const char *name = path_name(path, component);
- const char *ep = strchr(name, '\n');
- if (ep) {
- fprintf(pack_pipe, "%s %.*s\n", sha1_to_hex(obj->sha1),
- (int) (ep - name),
- name);
- }
- else
- fprintf(pack_pipe, "%s %s\n",
- sha1_to_hex(obj->sha1), name);
- free((char *)name);
+ show_object_with_name(pack_pipe, obj, path, component);
}
static void show_edge(struct commit *commit)