Merge branch 'lt/pack-object-memuse' into maint
* lt/pack-object-memuse:
show_object(): push path_name() call further down
process_{tree,blob}: show objects without buffering
This commit is contained in:
@ -78,20 +78,22 @@ static void show_commit(struct commit *commit)
|
||||
commit->buffer = NULL;
|
||||
}
|
||||
|
||||
static void show_object(struct object_array_entry *p)
|
||||
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 *ep = strchr(p->name, '\n');
|
||||
const char *name = path_name(path, component);
|
||||
const char *ep = strchr(name, '\n');
|
||||
if (ep) {
|
||||
fprintf(pack_pipe, "%s %.*s\n", sha1_to_hex(p->item->sha1),
|
||||
(int) (ep - p->name),
|
||||
p->name);
|
||||
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(p->item->sha1), p->name);
|
||||
sha1_to_hex(obj->sha1), name);
|
||||
free((char *)name);
|
||||
}
|
||||
|
||||
static void show_edge(struct commit *commit)
|
||||
|
||||
Reference in New Issue
Block a user