Re: [PATCH 2/2] repack: repack promisor objects if -a or -A is set

2018-08-08 Thread Jonathan Tan
> But what to delta against what else is determined by the pathname > info, which is now lost by enumerating objects without tree/history > walking. By giving phoney pathnames to objects while enumerating > them in offset order and giving similar pathnames to objects closer > to each other, I was

Re: [PATCH 2/2] repack: repack promisor objects if -a or -A is set

2018-08-08 Thread Junio C Hamano
Jonathan Tan writes: >> Just a note (and a request-for-sanity-check) and not meant to be a >> request to update the code, but with a still-in-pu 4b757a40 ("Use >> remote_odb_get_direct() and has_remote_odb()", 2018-08-02) in >> flight, repository_format_partial_clone is now gone. >> ... > Thanks

Re: [PATCH 2/2] repack: repack promisor objects if -a or -A is set

2018-08-08 Thread Junio C Hamano
Jeff King writes: > I think that the for_each_packed_object() interface should visit items > in pack order. Yeah, that may make more sense. Any order is more logical than the object name order (which by definition is random, so useful only when you want them in a random order), and pack order

Re: [PATCH 2/2] repack: repack promisor objects if -a or -A is set

2018-08-08 Thread Jeff King
On Tue, Aug 07, 2018 at 04:23:04PM -0700, Jonathan Tan wrote: > > Do we already have an access to the in-core reverse index for the > > pack at this point in the code? > > As far as I can tell, no. These patches construct the list of promisor > objects in repack.c (which does not use the

Re: [PATCH 2/2] repack: repack promisor objects if -a or -A is set

2018-08-07 Thread Junio C Hamano
Jonathan Tan writes: >> each other [*1*], so listing them in the offset order (with made-up >> pathname information to _force_ that objects that live close >> together in the original pack are grouped together by getting >> similar names) might give us a better than horrible deltification. >> I

Re: [PATCH 2/2] repack: repack promisor objects if -a or -A is set

2018-08-07 Thread Jonathan Tan
> Just a note (and a request-for-sanity-check) and not meant to be a > request to update the code, but with a still-in-pu 4b757a40 ("Use > remote_odb_get_direct() and has_remote_odb()", 2018-08-02) in > flight, repository_format_partial_clone is now gone. > > I've tentatively resolved the above

Re: [PATCH 2/2] repack: repack promisor objects if -a or -A is set

2018-08-07 Thread Jonathan Tan
> for_each_object_in_pack() is a fine way to make sure that you list > everythning in a pack, but I suspect it is a horrible way to feed a > list of objects to pack-objects, as it goes by the .idx order, which > is by definition a way to enumerate objects in a randomly useless > order. That's

Re: [PATCH 2/2] repack: repack promisor objects if -a or -A is set

2018-08-07 Thread Junio C Hamano
Jonathan Tan writes: > @@ -293,6 +346,9 @@ int cmd_repack(int argc, const char **argv, const char > *prefix) > if (pack_everything & ALL_INTO_ONE) { > get_non_kept_pack_filenames(_packs, _pack_list); > > + if (repository_format_partial_clone) > +

Re: [PATCH 2/2] repack: repack promisor objects if -a or -A is set

2018-08-07 Thread Junio C Hamano
Jonathan Tan writes: > +static int write_oid(const struct object_id *oid, struct packed_git *pack, > + uint32_t pos, void *data) > +{ > + int fd = *(int *)data; > + > + xwrite(fd, oid_to_hex(oid), GIT_SHA1_HEXSZ); > + xwrite(fd, "\n", 1); > + return 0; > +} > + >

[PATCH 2/2] repack: repack promisor objects if -a or -A is set

2018-08-07 Thread Jonathan Tan
Currently, repack does not touch promisor packfiles at all, potentially causing the performance of repositories that have many such packfiles to drop. Therefore, repack all promisor objects if invoked with -a or -A. This is done by an additional invocation of pack-objects on all promisor objects