summaryrefslogtreecommitdiff
path: root/builtin-rev-list.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-04-18 21:46:17 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-04-18 21:46:17 (GMT)
commit9824a388e53ba0951e38f246038fa0ef6fda3397 (patch)
treeafae88c319c71b70dfd76de729222af8490f2dd0 /builtin-rev-list.c
parent5758b25da43c401cad33f3304f78084a0305d21c (diff)
parentcf2ab916afa4231f7e9db31796e7c0f712ff6ad1 (diff)
downloadgit-9824a388e53ba0951e38f246038fa0ef6fda3397.zip
git-9824a388e53ba0951e38f246038fa0ef6fda3397.tar.gz
git-9824a388e53ba0951e38f246038fa0ef6fda3397.tar.bz2
Merge branch 'lt/pack-object-memuse'
* lt/pack-object-memuse: show_object(): push path_name() call further down process_{tree,blob}: show objects without buffering Conflicts: builtin-pack-objects.c builtin-rev-list.c list-objects.c list-objects.h upload-pack.c
Diffstat (limited to 'builtin-rev-list.c')
-rw-r--r--builtin-rev-list.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/builtin-rev-list.c b/builtin-rev-list.c
index 193993c..38a8f23 100644
--- a/builtin-rev-list.c
+++ b/builtin-rev-list.c
@@ -156,27 +156,29 @@ static void finish_commit(struct commit *commit, void *data)
commit->buffer = NULL;
}
-static void finish_object(struct object_array_entry *p, void *data)
+static void finish_object(struct object *obj, const struct name_path *path, const char *name)
{
- if (p->item->type == OBJ_BLOB && !has_sha1_file(p->item->sha1))
- die("missing blob object '%s'", sha1_to_hex(p->item->sha1));
+ if (obj->type == OBJ_BLOB && !has_sha1_file(obj->sha1))
+ die("missing blob object '%s'", sha1_to_hex(obj->sha1));
}
-static void show_object(struct object_array_entry *p, void *data)
+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(p->name, '\n');
+ const char *ep = strchr(name, '\n');
- finish_object(p, data);
+ finish_object(obj, path, name);
if (ep) {
- printf("%s %.*s\n", sha1_to_hex(p->item->sha1),
- (int) (ep - p->name),
- p->name);
+ printf("%s %.*s\n", sha1_to_hex(obj->sha1),
+ (int) (ep - name),
+ name);
}
else
- printf("%s %s\n", sha1_to_hex(p->item->sha1), p->name);
+ printf("%s %s\n", sha1_to_hex(obj->sha1), name);
+ free(name);
}
static void show_edge(struct commit *commit)