git-repack --max-pack-size: write_one() implements limits
PATCH 6/8 git-repack --max-pack-size: write_one() implements limits
If --max-pack-size (offset_limit) is specified, generate the appropriate write limit for each object and pass it to write_object(). Detect and return write "failure".
Signed-off-by Dana How <[email protected]>
--- builtin-pack-objects.c | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-)
builtin-pack-objects.c +10 -2
@@ -556,16 +556,24 @@ static off_t write_one(struct sha1file *f, struct object_entry *e, off_t offset) { +off_t result;if (e->offset || e->preferred_base)/* offset starts from header size and cannot be zero * if it is written already. */ return offset;/* if we are deltified, write out its base object first. */ -if (e->delta) +if (e->delta) { offset =write_one (f, e->delta, offset); +if (!offset) +return offset; + } +/* pass in write limit if limited packsize and not first object */ + result =write_object (f, e, offset_limit && nr_written ? offset_limit - offset :0 ); +if (!result) +return result; e->offset = offset; -return offset +write_object (f, e,0 ); +return offset + result; }/*
Signature · 1 line
1.5.1.89.g8abf0