diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-08-17 14:30:34 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-08-22 11:34:55 -0700 |
commit | 91f175165aba17903ab928da543052ea335fc924 (patch) | |
tree | 6cf82414eee956998260894e995f621e8892e818 /revision.c | |
parent | 5f25b6299d3e9853cf1f43734228d6e25d8f3415 (diff) | |
download | git-91f175165aba17903ab928da543052ea335fc924.tar.gz |
revision.c: add show_object_with_name() helper function
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>
Diffstat (limited to 'revision.c')
-rw-r--r-- | revision.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/revision.c b/revision.c index c46cfaa3e4..c5b38cc117 100644 --- a/revision.c +++ b/revision.c @@ -40,6 +40,25 @@ char *path_name(const struct name_path *path, const char *name) 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, |