From: Duy Nguyen <pclouds@gmail.com> To: Jeff King <peff@peff.net> Cc: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>, "Eric Wong" <e@80x24.org>, "Git Mailing List" <git@vger.kernel.org>, "Junio C Hamano" <gitster@pobox.com> Subject: Re: [PATCH v7 06/13] pack-objects: move in_pack out of struct object_entry Date: Sat, 31 Mar 2018 12:45:44 +0200 [thread overview] Message-ID: <20180331104544.GA16426@duynguyen.home> (raw) In-Reply-To: <20180331102007.GC32290@sigill.intra.peff.net> On Sat, Mar 31, 2018 at 06:20:07AM -0400, Jeff King wrote: > On Sat, Mar 31, 2018 at 06:51:10AM +0200, Duy Nguyen wrote: > > > >> +#define IN_PACK(obj) oe_in_pack(&to_pack, obj) > > > > > > How come this one gets a macro, but the earlier conversions don't? > > > > > > I guess the problem is that oe_in_pack() is defined in the generic > > > pack-objects.h, but &to_pack is only in builtin/pack-objects.c? > > > > > > I wonder if it would be that bad to just say oe_in_pack(&to_pack, obj) > > > everywhere. It's longer, but it makes the code slightly less magical to > > > read. > > > > Longer was exactly why I added these macros (with the hope that the > > macro upper case names already ring a "it's magical" bell). Should I > > drop all these macros? Some code becomes a lot more verbose though. > > I'm on the fence. I agree that the macro screams "magical". I just > sometimes see a macro and think something really weird and > unfunction-like is going on. But really we're just replacing a default > parameter. > > So I dunno. If you get rid of the macros and I look at it, I give even > odds that I'll say "yech, put them back!". :) It would look like this (on top of v8). I think the "&to_pack" part is most distracting when it's used as part of an expression (or a function argument). I probably went overboard with SET_ macros though. -- 8< -- diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index b5bba2c228..dec849b755 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -29,18 +29,6 @@ #include "list.h" #include "packfile.h" -#define IN_PACK(obj) oe_in_pack(&to_pack, obj) -#define SIZE(obj) oe_size(&to_pack, obj) -#define SET_SIZE(obj,size) oe_set_size(&to_pack, obj, size) -#define DELTA_SIZE(obj) oe_delta_size(&to_pack, obj) -#define DELTA(obj) oe_delta(&to_pack, obj) -#define DELTA_CHILD(obj) oe_delta_child(&to_pack, obj) -#define DELTA_SIBLING(obj) oe_delta_sibling(&to_pack, obj) -#define SET_DELTA(obj, val) oe_set_delta(&to_pack, obj, val) -#define SET_DELTA_SIZE(obj, val) oe_set_delta_size(&to_pack, obj, val) -#define SET_DELTA_CHILD(obj, val) oe_set_delta_child(&to_pack, obj, val) -#define SET_DELTA_SIBLING(obj, val) oe_set_delta_sibling(&to_pack, obj, val) - static const char *pack_usage[] = { N_("git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]"), N_("git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]"), @@ -137,14 +125,14 @@ static void *get_delta(struct object_entry *entry) buf = read_sha1_file(entry->idx.oid.hash, &type, &size); if (!buf) die("unable to read %s", oid_to_hex(&entry->idx.oid)); - base_buf = read_sha1_file(DELTA(entry)->idx.oid.hash, &type, + base_buf = read_sha1_file(oe_delta(&to_pack, entry)->idx.oid.hash, &type, &base_size); if (!base_buf) die("unable to read %s", - oid_to_hex(&DELTA(entry)->idx.oid)); + oid_to_hex(&oe_delta(&to_pack, entry)->idx.oid)); delta_buf = diff_delta(base_buf, base_size, buf, size, &delta_size, 0); - if (!delta_buf || delta_size != DELTA_SIZE(entry)) + if (!delta_buf || delta_size != oe_delta_size(&to_pack, entry)) die("delta size changed"); free(buf); free(base_buf); @@ -295,15 +283,15 @@ static unsigned long write_no_reuse_object(struct hashfile *f, struct object_ent FREE_AND_NULL(entry->delta_data); entry->z_delta_size = 0; } else if (entry->delta_data) { - size = DELTA_SIZE(entry); + size = oe_delta_size(&to_pack, entry); buf = entry->delta_data; entry->delta_data = NULL; - type = (allow_ofs_delta && DELTA(entry)->idx.offset) ? + type = (allow_ofs_delta && oe_delta(&to_pack, entry)->idx.offset) ? OBJ_OFS_DELTA : OBJ_REF_DELTA; } else { buf = get_delta(entry); - size = DELTA_SIZE(entry); - type = (allow_ofs_delta && DELTA(entry)->idx.offset) ? + size = oe_delta_size(&to_pack, entry); + type = (allow_ofs_delta && oe_delta(&to_pack, entry)->idx.offset) ? OBJ_OFS_DELTA : OBJ_REF_DELTA; } @@ -327,7 +315,7 @@ static unsigned long write_no_reuse_object(struct hashfile *f, struct object_ent * encoding of the relative offset for the delta * base from this object's position in the pack. */ - off_t ofs = entry->idx.offset - DELTA(entry)->idx.offset; + off_t ofs = entry->idx.offset - oe_delta(&to_pack, entry)->idx.offset; unsigned pos = sizeof(dheader) - 1; dheader[pos] = ofs & 127; while (ofs >>= 7) @@ -353,7 +341,7 @@ static unsigned long write_no_reuse_object(struct hashfile *f, struct object_ent return 0; } hashwrite(f, header, hdrlen); - hashwrite(f, DELTA(entry)->idx.oid.hash, 20); + hashwrite(f, oe_delta(&to_pack, entry)->idx.oid.hash, 20); hdrlen += 20; } else { if (limit && hdrlen + datalen + 20 >= limit) { @@ -379,7 +367,7 @@ static unsigned long write_no_reuse_object(struct hashfile *f, struct object_ent static off_t write_reuse_object(struct hashfile *f, struct object_entry *entry, unsigned long limit, int usable_delta) { - struct packed_git *p = IN_PACK(entry); + struct packed_git *p = oe_in_pack(&to_pack, entry); struct pack_window *w_curs = NULL; struct revindex_entry *revidx; off_t offset; @@ -388,10 +376,10 @@ static off_t write_reuse_object(struct hashfile *f, struct object_entry *entry, unsigned char header[MAX_PACK_OBJECT_HEADER], dheader[MAX_PACK_OBJECT_HEADER]; unsigned hdrlen; - unsigned long entry_size = SIZE(entry); + unsigned long entry_size = oe_size(&to_pack, entry); - if (DELTA(entry)) - type = (allow_ofs_delta && DELTA(entry)->idx.offset) ? + if (oe_delta(&to_pack, entry)) + type = (allow_ofs_delta && oe_delta(&to_pack, entry)->idx.offset) ? OBJ_OFS_DELTA : OBJ_REF_DELTA; hdrlen = encode_in_pack_object_header(header, sizeof(header), type, entry_size); @@ -419,7 +407,7 @@ static off_t write_reuse_object(struct hashfile *f, struct object_entry *entry, } if (type == OBJ_OFS_DELTA) { - off_t ofs = entry->idx.offset - DELTA(entry)->idx.offset; + off_t ofs = entry->idx.offset - oe_delta(&to_pack, entry)->idx.offset; unsigned pos = sizeof(dheader) - 1; dheader[pos] = ofs & 127; while (ofs >>= 7) @@ -438,7 +426,7 @@ static off_t write_reuse_object(struct hashfile *f, struct object_entry *entry, return 0; } hashwrite(f, header, hdrlen); - hashwrite(f, DELTA(entry)->idx.oid.hash, 20); + hashwrite(f, oe_delta(&to_pack, entry)->idx.oid.hash, 20); hdrlen += 20; reused_delta++; } else { @@ -478,20 +466,20 @@ static off_t write_object(struct hashfile *f, else limit = pack_size_limit - write_offset; - if (!DELTA(entry)) + if (!oe_delta(&to_pack, entry)) usable_delta = 0; /* no delta */ else if (!pack_size_limit) usable_delta = 1; /* unlimited packfile */ - else if (DELTA(entry)->idx.offset == (off_t)-1) + else if (oe_delta(&to_pack, entry)->idx.offset == (off_t)-1) usable_delta = 0; /* base was written to another pack */ - else if (DELTA(entry)->idx.offset) + else if (oe_delta(&to_pack, entry)->idx.offset) usable_delta = 1; /* base already exists in this pack */ else usable_delta = 0; /* base could end up in another pack */ if (!reuse_object) to_reuse = 0; /* explicit */ - else if (!IN_PACK(entry)) + else if (!oe_in_pack(&to_pack, entry)) to_reuse = 0; /* can't reuse what we don't have */ else if (oe_type(entry) == OBJ_REF_DELTA || oe_type(entry) == OBJ_OFS_DELTA) @@ -500,7 +488,7 @@ static off_t write_object(struct hashfile *f, /* ... but pack split may override that */ else if (oe_type(entry) != entry->in_pack_type) to_reuse = 0; /* pack has delta which is unusable */ - else if (DELTA(entry)) + else if (oe_delta(&to_pack, entry)) to_reuse = 0; /* we want to pack afresh */ else to_reuse = 1; /* we have it in-pack undeltified, @@ -552,12 +540,12 @@ static enum write_one_status write_one(struct hashfile *f, } /* if we are deltified, write out base object first. */ - if (DELTA(e)) { + if (oe_delta(&to_pack, e)) { e->idx.offset = 1; /* now recurse */ - switch (write_one(f, DELTA(e), offset)) { + switch (write_one(f, oe_delta(&to_pack, e), offset)) { case WRITE_ONE_RECURSIVE: /* we cannot depend on this one */ - SET_DELTA(e, NULL); + oe_set_delta(&to_pack, e, NULL); break; default: break; @@ -619,34 +607,34 @@ static void add_descendants_to_write_order(struct object_entry **wo, /* add this node... */ add_to_write_order(wo, endp, e); /* all its siblings... */ - for (s = DELTA_SIBLING(e); s; s = DELTA_SIBLING(s)) { + for (s = oe_delta_sibling(&to_pack, e); s; s = oe_delta_sibling(&to_pack, s)) { add_to_write_order(wo, endp, s); } } /* drop down a level to add left subtree nodes if possible */ - if (DELTA_CHILD(e)) { + if (oe_delta_child(&to_pack, e)) { add_to_order = 1; - e = DELTA_CHILD(e); + e = oe_delta_child(&to_pack, e); } else { add_to_order = 0; /* our sibling might have some children, it is next */ - if (DELTA_SIBLING(e)) { - e = DELTA_SIBLING(e); + if (oe_delta_sibling(&to_pack, e)) { + e = oe_delta_sibling(&to_pack, e); continue; } /* go back to our parent node */ - e = DELTA(e); - while (e && !DELTA_SIBLING(e)) { + e = oe_delta(&to_pack, e); + while (e && !oe_delta_sibling(&to_pack, e)) { /* we're on the right side of a subtree, keep * going up until we can go right again */ - e = DELTA(e); + e = oe_delta(&to_pack, e); } if (!e) { /* done- we hit our original root node */ return; } /* pass it off to sibling at this level */ - e = DELTA_SIBLING(e); + e = oe_delta_sibling(&to_pack, e); } }; } @@ -657,7 +645,7 @@ static void add_family_to_write_order(struct object_entry **wo, { struct object_entry *root; - for (root = e; DELTA(root); root = DELTA(root)) + for (root = e; oe_delta(&to_pack, root); root = oe_delta(&to_pack, root)) ; /* nothing */ add_descendants_to_write_order(wo, endp, root); } @@ -672,8 +660,8 @@ static struct object_entry **compute_write_order(void) for (i = 0; i < to_pack.nr_objects; i++) { objects[i].tagged = 0; objects[i].filled = 0; - SET_DELTA_CHILD(&objects[i], NULL); - SET_DELTA_SIBLING(&objects[i], NULL); + oe_set_delta_child(&to_pack, &objects[i], NULL); + oe_set_delta_size(&to_pack, &objects[i], NULL); } /* @@ -683,11 +671,11 @@ static struct object_entry **compute_write_order(void) */ for (i = to_pack.nr_objects; i > 0;) { struct object_entry *e = &objects[--i]; - if (!DELTA(e)) + if (!oe_delta(&to_pack, e)) continue; /* Mark me as the first child */ - e->delta_sibling_idx = DELTA(e)->delta_child_idx; - SET_DELTA_CHILD(DELTA(e), e); + e->delta_sibling_idx = oe_delta(&to_pack, e)->delta_child_idx; + oe_set_delta_child(&to_pack, oe_delta(&to_pack, e), e); } /* @@ -1414,8 +1402,8 @@ static void check_object(struct object_entry *entry) { unsigned long canonical_size; - if (IN_PACK(entry)) { - struct packed_git *p = IN_PACK(entry); + if (oe_in_pack(&to_pack, entry)) { + struct packed_git *p = oe_in_pack(&to_pack, entry); struct pack_window *w_curs = NULL; const unsigned char *base_ref = NULL; struct object_entry *base_entry; @@ -1451,7 +1439,7 @@ static void check_object(struct object_entry *entry) default: /* Not a delta hence we've already got all we need. */ oe_set_type(entry, entry->in_pack_type); - SET_SIZE(entry, in_pack_size); + oe_set_size(&to_pack, entry, in_pack_size); entry->in_pack_header_size = used; if (oe_type(entry) < OBJ_COMMIT || oe_type(entry) > OBJ_BLOB) goto give_up; @@ -1508,11 +1496,11 @@ static void check_object(struct object_entry *entry) * circular deltas. */ oe_set_type(entry, entry->in_pack_type); - SET_SIZE(entry, in_pack_size); /* delta size */ - SET_DELTA(entry, base_entry); - SET_DELTA_SIZE(entry, in_pack_size); + oe_set_size(&to_pack, entry, in_pack_size); /* delta size */ + oe_set_delta(&to_pack, entry, base_entry); + oe_set_delta_size(&to_pack, entry, in_pack_size); entry->delta_sibling_idx = base_entry->delta_child_idx; - SET_DELTA_CHILD(base_entry, entry); + oe_set_delta_child(&to_pack, base_entry, entry); unuse_pack(&w_curs); return; } @@ -1529,7 +1517,7 @@ static void check_object(struct object_entry *entry) canonical_size = get_size_from_delta(p, &w_curs, delta_pos); if (canonical_size == 0) goto give_up; - SET_SIZE(entry, canonical_size); + oe_set_size(&to_pack, entry, canonical_size); unuse_pack(&w_curs); return; } @@ -1546,7 +1534,7 @@ static void check_object(struct object_entry *entry) oe_set_type(entry, sha1_object_info(entry->idx.oid.hash, &canonical_size)); if (entry->type_valid) { - SET_SIZE(entry, canonical_size); + oe_set_size(&to_pack, entry, canonical_size); } else { /* * Bad object type is checked in prepare_pack(). This is @@ -1561,8 +1549,8 @@ static int pack_offset_sort(const void *_a, const void *_b) { const struct object_entry *a = *(struct object_entry **)_a; const struct object_entry *b = *(struct object_entry **)_b; - const struct packed_git *a_in_pack = IN_PACK(a); - const struct packed_git *b_in_pack = IN_PACK(b); + const struct packed_git *a_in_pack = oe_in_pack(&to_pack, a); + const struct packed_git *b_in_pack = oe_in_pack(&to_pack, b); /* avoid filesystem trashing with loose objects */ if (!a_in_pack && !b_in_pack) @@ -1604,12 +1592,12 @@ static void drop_reused_delta(struct object_entry *entry) else idx = &oe->delta_sibling_idx; } - SET_DELTA(entry, NULL); + oe_set_delta(&to_pack, entry, NULL); entry->depth = 0; oi.sizep = &size; oi.typep = &type; - if (packed_object_info(IN_PACK(entry), entry->in_pack_offset, &oi) < 0) { + if (packed_object_info(oe_in_pack(&to_pack, entry), entry->in_pack_offset, &oi) < 0) { /* * We failed to get the info from this pack for some reason; * fall back to sha1_object_info, which may find another copy. @@ -1621,7 +1609,7 @@ static void drop_reused_delta(struct object_entry *entry) } else { oe_set_type(entry, type); } - SET_SIZE(entry, size); + oe_set_size(&to_pack, entry, size); } /* @@ -1645,7 +1633,7 @@ static void break_delta_chains(struct object_entry *entry) for (cur = entry, total_depth = 0; cur; - cur = DELTA(cur), total_depth++) { + cur = oe_delta(&to_pack, cur), total_depth++) { if (cur->dfs_state == DFS_DONE) { /* * We've already seen this object and know it isn't @@ -1670,7 +1658,7 @@ static void break_delta_chains(struct object_entry *entry) * it's not a delta, we're done traversing, but we'll mark it * done to save time on future traversals. */ - if (!DELTA(cur)) { + if (!oe_delta(&to_pack, cur)) { cur->dfs_state = DFS_DONE; break; } @@ -1693,7 +1681,7 @@ static void break_delta_chains(struct object_entry *entry) * We keep all commits in the chain that we examined. */ cur->dfs_state = DFS_ACTIVE; - if (DELTA(cur)->dfs_state == DFS_ACTIVE) { + if (oe_delta(&to_pack, cur)->dfs_state == DFS_ACTIVE) { drop_reused_delta(cur); cur->dfs_state = DFS_DONE; break; @@ -1708,7 +1696,7 @@ static void break_delta_chains(struct object_entry *entry) * an extra "next" pointer to keep going after we reset cur->delta. */ for (cur = entry; cur; cur = next) { - next = DELTA(cur); + next = oe_delta(&to_pack, cur); /* * We should have a chain of zero or more ACTIVE states down to @@ -1791,8 +1779,8 @@ static int type_size_sort(const void *_a, const void *_b) const struct object_entry *b = *(struct object_entry **)_b; enum object_type a_type = oe_type(a); enum object_type b_type = oe_type(b); - unsigned long a_size = SIZE(a); - unsigned long b_size = SIZE(b); + unsigned long a_size = oe_size(&to_pack, a); + unsigned long b_size = oe_size(&to_pack, b); if (a_type > b_type) return -1; @@ -1923,8 +1911,8 @@ static int try_delta(struct unpacked *trg, struct unpacked *src, * it, we will still save the transfer cost, as we already know * the other side has it and we won't send src_entry at all. */ - if (reuse_delta && IN_PACK(trg_entry) && - IN_PACK(trg_entry) == IN_PACK(src_entry) && + if (reuse_delta && oe_in_pack(&to_pack, trg_entry) && + oe_in_pack(&to_pack, trg_entry) == oe_in_pack(&to_pack, src_entry) && !src_entry->preferred_base && trg_entry->in_pack_type != OBJ_REF_DELTA && trg_entry->in_pack_type != OBJ_OFS_DELTA) @@ -1935,19 +1923,19 @@ static int try_delta(struct unpacked *trg, struct unpacked *src, return 0; /* Now some size filtering heuristics. */ - trg_size = SIZE(trg_entry); - if (!DELTA(trg_entry)) { + trg_size = oe_size(&to_pack, trg_entry); + if (!oe_delta(&to_pack, trg_entry)) { max_size = trg_size/2 - 20; ref_depth = 1; } else { - max_size = DELTA_SIZE(trg_entry); + max_size = oe_delta_size(&to_pack, trg_entry); ref_depth = trg->depth; } max_size = (uint64_t)max_size * (max_depth - src->depth) / (max_depth - ref_depth + 1); if (max_size == 0) return 0; - src_size = SIZE(src_entry); + src_size = oe_size(&to_pack, src_entry); sizediff = src_size < trg_size ? trg_size - src_size : 0; if (sizediff >= max_size) return 0; @@ -2016,9 +2004,9 @@ static int try_delta(struct unpacked *trg, struct unpacked *src, return 0; } - if (DELTA(trg_entry)) { + if (oe_delta(&to_pack, trg_entry)) { /* Prefer only shallower same-sized deltas. */ - if (delta_size == DELTA_SIZE(trg_entry) && + if (delta_size == oe_delta_size(&to_pack, trg_entry) && src->depth + 1 >= trg->depth) { free(delta_buf); return 0; @@ -2033,7 +2021,7 @@ static int try_delta(struct unpacked *trg, struct unpacked *src, free(trg_entry->delta_data); cache_lock(); if (trg_entry->delta_data) { - delta_cache_size -= DELTA_SIZE(trg_entry); + delta_cache_size -= oe_delta_size(&to_pack, trg_entry); trg_entry->delta_data = NULL; } if (delta_cacheable(src_size, trg_size, delta_size)) { @@ -2045,8 +2033,8 @@ static int try_delta(struct unpacked *trg, struct unpacked *src, free(delta_buf); } - SET_DELTA(trg_entry, src_entry); - SET_DELTA_SIZE(trg_entry, delta_size); + oe_set_delta(&to_pack, trg_entry, src_entry); + oe_set_delta_size(&to_pack, trg_entry, delta_size); trg->depth = src->depth + 1; return 1; @@ -2054,13 +2042,13 @@ static int try_delta(struct unpacked *trg, struct unpacked *src, static unsigned int check_delta_limit(struct object_entry *me, unsigned int n) { - struct object_entry *child = DELTA_CHILD(me); + struct object_entry *child = oe_delta_child(&to_pack, me); unsigned int m = n; while (child) { unsigned int c = check_delta_limit(child, n + 1); if (m < c) m = c; - child = DELTA_SIBLING(child); + child = oe_delta_sibling(&to_pack, child); } return m; } @@ -2071,7 +2059,7 @@ static unsigned long free_unpacked(struct unpacked *n) free_delta_index(n->index); n->index = NULL; if (n->data) { - freed_mem += SIZE(n->entry); + freed_mem += oe_size(&to_pack, n->entry); FREE_AND_NULL(n->data); } n->entry = NULL; @@ -2129,7 +2117,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size, * otherwise they would become too deep. */ max_depth = depth; - if (DELTA_CHILD(entry)) { + if (oe_delta_child(&to_pack, entry)) { max_depth -= check_delta_limit(entry, 0); if (max_depth <= 0) goto next; @@ -2169,11 +2157,11 @@ static void find_deltas(struct object_entry **list, unsigned *list_size, if (entry->delta_data && !pack_to_stdout) { unsigned long size; - size = do_compress(&entry->delta_data, DELTA_SIZE(entry)); + size = do_compress(&entry->delta_data, oe_delta_size(&to_pack, entry)); if (size < (1U << OE_Z_DELTA_BITS)) { entry->z_delta_size = size; cache_lock(); - delta_cache_size -= DELTA_SIZE(entry); + delta_cache_size -= oe_delta_size(&to_pack, entry); delta_cache_size += entry->z_delta_size; cache_unlock(); } else { @@ -2186,7 +2174,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size, * depth, leaving it in the window is pointless. we * should evict it first. */ - if (DELTA(entry) && max_depth <= n->depth) + if (oe_delta(&to_pack, entry) && max_depth <= n->depth) continue; /* @@ -2194,7 +2182,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size, * currently deltified object, to keep it longer. It will * be the first base object to be attempted next. */ - if (DELTA(entry)) { + if (oe_delta(&to_pack, entry)) { struct unpacked swap = array[best_base]; int dist = (window + idx - best_base) % window; int dst = best_base; @@ -2515,7 +2503,7 @@ static void prepare_pack(int window, int depth) for (i = 0; i < to_pack.nr_objects; i++) { struct object_entry *entry = to_pack.objects + i; - if (DELTA(entry)) + if (oe_delta(&to_pack, entry)) /* This happens if we decided to reuse existing * delta from a pack. "reuse_delta &&" is implied. */ -- 8< --
next prev parent reply other threads:[~2018-03-31 10:45 UTC|newest] Thread overview: 273+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-02-28 9:27 Reduce pack-objects memory footprint? Duy Nguyen 2018-02-28 10:17 ` Jeff King 2018-02-28 10:58 ` Duy Nguyen 2018-02-28 11:11 ` Jeff King 2018-02-28 11:24 ` Duy Nguyen 2018-02-28 18:22 ` Eric Wong 2018-03-01 9:00 ` Duy Nguyen 2018-03-01 9:10 ` [PATCH 00/11] Reduce pack-objects memory footprint Nguyễn Thái Ngọc Duy 2018-03-01 9:10 ` [PATCH 01/11] pack-objects: document holes in struct object_entry.h Nguyễn Thái Ngọc Duy 2018-03-01 9:10 ` [PATCH 02/11] pack-objects: turn type and in_pack_type to bitfields Nguyễn Thái Ngọc Duy 2018-03-01 9:10 ` [PATCH 03/11] pack-objects: use bitfield for object_entry::dfs_state Nguyễn Thái Ngọc Duy 2018-03-01 9:10 ` [PATCH 04/11] pack-objects: use bitfield for object_entry::depth Nguyễn Thái Ngọc Duy 2018-03-01 18:00 ` Junio C Hamano 2018-03-01 9:10 ` [PATCH 05/11] pack-objects: note about in_pack_header_size Nguyễn Thái Ngọc Duy 2018-03-01 9:10 ` [PATCH 06/11] pack-objects: move in_pack_pos out of struct object_entry Nguyễn Thái Ngọc Duy 2018-03-01 9:10 ` [PATCH 07/11] pack-objects: move in_pack " Nguyễn Thái Ngọc Duy 2018-03-01 12:37 ` Ævar Arnfjörð Bjarmason 2018-03-01 14:49 ` Jeff King 2018-03-02 0:02 ` Duy Nguyen 2018-03-01 18:05 ` Junio C Hamano 2018-03-01 9:10 ` [PATCH 08/11] pack-objects: faster reverse packed_git lookup Nguyễn Thái Ngọc Duy 2018-03-01 9:10 ` [PATCH 09/11] pack-objects: refer to delta objects by index instead of pointer Nguyễn Thái Ngọc Duy 2018-03-01 18:08 ` Junio C Hamano 2018-03-01 9:10 ` [PATCH 10/11] pack-objects: reorder 'hash' to pack struct object_entry Nguyễn Thái Ngọc Duy 2018-03-01 9:10 ` [PATCH 11/11] pack-objects: increase pack file limit to 4096 Nguyễn Thái Ngọc Duy 2018-03-01 13:33 ` [PATCH 00/11] Reduce pack-objects memory footprint Ævar Arnfjörð Bjarmason 2018-03-02 0:14 ` Duy Nguyen 2018-03-02 10:57 ` Jeff King 2018-03-03 2:46 ` [PATCH/RFC v2 0/9] " Nguyễn Thái Ngọc Duy 2018-03-03 2:46 ` [PATCH/RFC v2 1/9] pack-objects: document holes in struct object_entry.h Nguyễn Thái Ngọc Duy 2018-03-03 2:46 ` [PATCH/RFC v2 2/9] pack-objects: turn type and in_pack_type to bitfields Nguyễn Thái Ngọc Duy 2018-03-03 2:47 ` [PATCH/RFC v2 3/9] pack-objects: use bitfield for object_entry::dfs_state Nguyễn Thái Ngọc Duy 2018-03-03 2:47 ` [PATCH/RFC v2 4/9] pack-objects: use bitfield for object_entry::depth Nguyễn Thái Ngọc Duy 2018-03-03 2:47 ` [PATCH/RFC v2 5/9] pack-objects: note about in_pack_header_size Nguyễn Thái Ngọc Duy 2018-03-03 2:47 ` [PATCH/RFC v2 6/9] pack-objects: move in_pack_pos out of struct object_entry Nguyễn Thái Ngọc Duy 2018-03-03 2:47 ` [PATCH/RFC v2 7/9] pack-objects: move in_pack " Nguyễn Thái Ngọc Duy 2018-03-03 2:47 ` [PATCH/RFC v2 8/9] pack-objects: refer to delta objects by index instead of pointer Nguyễn Thái Ngọc Duy 2018-03-03 2:47 ` [PATCH/RFC v2 9/9] pack-objects: reorder 'hash' to pack struct object_entry Nguyễn Thái Ngọc Duy 2018-03-05 9:28 ` [PATCH/RFC v2 0/9] Reduce pack-objects memory footprint Duy Nguyen 2018-03-08 11:42 ` [PATCH/RFC v3 00/12] " Nguyễn Thái Ngọc Duy 2018-03-08 11:42 ` [PATCH/RFC v3 01/12] pack-objects: a bit of document about struct object_entry Nguyễn Thái Ngọc Duy 2018-03-09 22:34 ` Junio C Hamano 2018-03-08 11:42 ` [PATCH/RFC v3 02/12] pack-objects: turn type and in_pack_type to bitfields Nguyễn Thái Ngọc Duy 2018-03-09 22:54 ` Junio C Hamano 2018-03-12 17:51 ` Duy Nguyen 2018-03-08 11:42 ` [PATCH/RFC v3 03/12] pack-objects: use bitfield for object_entry::dfs_state Nguyễn Thái Ngọc Duy 2018-03-08 11:42 ` [PATCH/RFC v3 04/12] pack-objects: use bitfield for object_entry::depth Nguyễn Thái Ngọc Duy 2018-03-09 23:07 ` Junio C Hamano 2018-03-08 11:42 ` [PATCH/RFC v3 05/12] pack-objects: note about in_pack_header_size Nguyễn Thái Ngọc Duy 2018-03-08 11:42 ` [PATCH/RFC v3 06/12] pack-objects: move in_pack_pos out of struct object_entry Nguyễn Thái Ngọc Duy 2018-03-08 11:42 ` [PATCH/RFC v3 07/12] pack-objects: move in_pack " Nguyễn Thái Ngọc Duy 2018-03-09 23:21 ` Junio C Hamano 2018-03-08 11:42 ` [PATCH/RFC v3 08/12] pack-objects: refer to delta objects by index instead of pointer Nguyễn Thái Ngọc Duy 2018-03-14 16:18 ` Junio C Hamano 2018-03-08 11:42 ` [PATCH/RFC v3 09/12] pack-objects: reorder 'hash' to pack struct object_entry Nguyễn Thái Ngọc Duy 2018-03-08 11:42 ` [PATCH/RFC v3 10/12] pack-objects: shrink z_delta_size field in " Nguyễn Thái Ngọc Duy 2018-03-08 11:42 ` [PATCH/RFC v3 11/12] pack-objects: shrink size " Nguyễn Thái Ngọc Duy 2018-03-08 11:42 ` [PATCH/RFC v3 12/12] pack-objects: shrink delta_size " Nguyễn Thái Ngọc Duy 2018-03-16 18:31 ` [PATCH v4 00/11] nd/pack-objects-pack-struct updates Nguyễn Thái Ngọc Duy 2018-03-16 18:31 ` [PATCH v4 01/11] pack-objects: a bit of document about struct object_entry Nguyễn Thái Ngọc Duy 2018-03-16 20:32 ` Junio C Hamano 2018-03-17 11:59 ` Duy Nguyen 2018-03-16 18:31 ` [PATCH v4 02/11] pack-objects: turn type and in_pack_type to bitfields Nguyễn Thái Ngọc Duy 2018-03-16 20:49 ` Junio C Hamano 2018-03-16 18:31 ` [PATCH v4 03/11] pack-objects: use bitfield for object_entry::dfs_state Nguyễn Thái Ngọc Duy 2018-03-16 18:31 ` [PATCH v4 04/11] pack-objects: use bitfield for object_entry::depth Nguyễn Thái Ngọc Duy 2018-03-16 18:31 ` [PATCH v4 05/11] pack-objects: move in_pack_pos out of struct object_entry Nguyễn Thái Ngọc Duy 2018-03-16 18:31 ` [PATCH v4 06/11] pack-objects: move in_pack " Nguyễn Thái Ngọc Duy 2018-03-26 20:39 ` Stefan Beller 2018-03-16 18:31 ` [PATCH v4 07/11] pack-objects: refer to delta objects by index instead of pointer Nguyễn Thái Ngọc Duy 2018-03-16 20:59 ` Junio C Hamano 2018-03-16 18:31 ` [PATCH v4 08/11] pack-objects: shrink z_delta_size field in struct object_entry Nguyễn Thái Ngọc Duy 2018-03-16 19:40 ` Junio C Hamano 2018-03-16 18:31 ` [PATCH v4 09/11] pack-objects: shrink size " Nguyễn Thái Ngọc Duy 2018-03-16 19:49 ` Junio C Hamano 2018-03-16 21:34 ` Junio C Hamano 2018-03-16 18:31 ` [PATCH v4 10/11] pack-objects: shrink delta_size " Nguyễn Thái Ngọc Duy 2018-03-16 18:32 ` [PATCH v4 11/11] pack-objects.h: reorder members to shrink " Nguyễn Thái Ngọc Duy 2018-03-16 21:02 ` Junio C Hamano 2018-03-17 12:07 ` Duy Nguyen 2018-03-17 14:10 ` [PATCH v5 00/11] nd/pack-objects-pack-struct updates Nguyễn Thái Ngọc Duy 2018-03-17 14:10 ` [PATCH v5 01/11] pack-objects: a bit of document about struct object_entry Nguyễn Thái Ngọc Duy 2018-03-17 14:10 ` [PATCH v5 02/11] pack-objects: turn type and in_pack_type to bitfields Nguyễn Thái Ngọc Duy 2018-03-17 14:10 ` [PATCH v5 03/11] pack-objects: use bitfield for object_entry::dfs_state Nguyễn Thái Ngọc Duy 2018-03-17 14:10 ` [PATCH v5 04/11] pack-objects: use bitfield for object_entry::depth Nguyễn Thái Ngọc Duy 2018-03-17 21:26 ` Ævar Arnfjörð Bjarmason 2018-03-17 14:10 ` [PATCH v5 05/11] pack-objects: move in_pack_pos out of struct object_entry Nguyễn Thái Ngọc Duy 2018-03-17 14:10 ` [PATCH v5 06/11] pack-objects: move in_pack " Nguyễn Thái Ngọc Duy 2018-03-17 14:10 ` [PATCH v5 07/11] pack-objects: refer to delta objects by index instead of pointer Nguyễn Thái Ngọc Duy 2018-03-17 14:10 ` [PATCH v5 08/11] pack-objects: shrink z_delta_size field in struct object_entry Nguyễn Thái Ngọc Duy 2018-03-17 14:10 ` [PATCH v5 09/11] pack-objects: shrink size " Nguyễn Thái Ngọc Duy 2018-03-17 19:57 ` Ævar Arnfjörð Bjarmason 2018-03-18 5:09 ` Junio C Hamano 2018-03-18 8:23 ` Duy Nguyen 2018-03-17 14:10 ` [PATCH v5 10/11] pack-objects: shrink delta_size " Nguyễn Thái Ngọc Duy 2018-03-17 14:10 ` [PATCH v5 11/11] pack-objects.h: reorder members to shrink " Nguyễn Thái Ngọc Duy 2018-03-17 19:53 ` Ævar Arnfjörð Bjarmason 2018-03-18 8:49 ` Duy Nguyen 2018-03-17 19:45 ` [PATCH v5 00/11] nd/pack-objects-pack-struct updates Ævar Arnfjörð Bjarmason 2018-03-17 19:47 ` Ævar Arnfjörð Bjarmason 2018-03-18 14:25 ` [PATCH v6 " Nguyễn Thái Ngọc Duy 2018-03-18 14:25 ` [PATCH v6 01/11] pack-objects: a bit of document about struct object_entry Nguyễn Thái Ngọc Duy 2018-03-18 14:25 ` [PATCH v6 02/11] pack-objects: turn type and in_pack_type to bitfields Nguyễn Thái Ngọc Duy 2018-03-18 14:25 ` [PATCH v6 03/11] pack-objects: use bitfield for object_entry::dfs_state Nguyễn Thái Ngọc Duy 2018-03-18 14:25 ` [PATCH v6 04/11] pack-objects: use bitfield for object_entry::depth Nguyễn Thái Ngọc Duy 2018-03-18 14:25 ` [PATCH v6 05/11] pack-objects: move in_pack_pos out of struct object_entry Nguyễn Thái Ngọc Duy 2018-03-18 14:25 ` [PATCH v6 06/11] pack-objects: move in_pack " Nguyễn Thái Ngọc Duy 2018-03-18 14:25 ` [PATCH v6 07/11] pack-objects: refer to delta objects by index instead of pointer Nguyễn Thái Ngọc Duy 2018-03-18 14:25 ` [PATCH v6 08/11] pack-objects: shrink z_delta_size field in struct object_entry Nguyễn Thái Ngọc Duy 2018-03-18 14:25 ` [PATCH v6 09/11] pack-objects: shrink size " Nguyễn Thái Ngọc Duy 2018-03-18 14:49 ` Ævar Arnfjörð Bjarmason 2018-03-19 16:19 ` Junio C Hamano 2018-03-19 16:23 ` Duy Nguyen 2018-03-19 16:43 ` Junio C Hamano 2018-03-19 16:54 ` Duy Nguyen 2018-03-19 18:29 ` Junio C Hamano 2018-03-19 18:45 ` Duy Nguyen 2018-03-19 20:10 ` Junio C Hamano 2018-03-20 18:08 ` Duy Nguyen 2018-03-20 18:22 ` Junio C Hamano 2018-03-21 8:03 ` Jeff King 2018-03-21 16:12 ` Duy Nguyen 2018-03-20 18:17 ` Duy Nguyen 2018-03-18 14:25 ` [PATCH v6 10/11] pack-objects: shrink delta_size " Nguyễn Thái Ngọc Duy 2018-03-18 14:25 ` [PATCH v6 11/11] pack-objects: reorder members to shrink " Nguyễn Thái Ngọc Duy 2018-03-18 14:51 ` [PATCH v6 00/11] nd/pack-objects-pack-struct updates Ævar Arnfjörð Bjarmason 2018-03-21 8:24 ` Jeff King 2018-03-21 15:59 ` Duy Nguyen 2018-03-21 16:17 ` Ævar Arnfjörð Bjarmason 2018-03-21 16:22 ` Duy Nguyen 2018-03-21 16:46 ` Duy Nguyen 2018-03-21 19:11 ` Junio C Hamano 2018-03-22 9:32 ` Jeff King 2018-03-22 9:46 ` Jeff King 2018-03-22 10:57 ` Duy Nguyen 2018-03-22 11:52 ` Jeff King 2018-03-22 17:04 ` Duy Nguyen 2018-03-23 1:28 ` Ramsay Jones 2018-03-23 2:46 ` Jeff King 2018-03-23 5:50 ` Jeff King 2018-03-23 16:01 ` Ramsay Jones 2018-03-24 6:40 ` Jeff King 2018-03-23 7:05 ` Duy Nguyen 2018-03-23 14:03 ` Ramsay Jones 2018-03-21 16:31 ` Ævar Arnfjörð Bjarmason 2018-03-21 16:53 ` Junio C Hamano 2018-03-21 17:00 ` Duy Nguyen 2018-03-22 8:07 ` Jeff King 2018-03-22 8:23 ` Duy Nguyen 2018-03-22 10:01 ` Jeff King 2018-03-24 6:33 ` [PATCH v7 00/13] " Nguyễn Thái Ngọc Duy 2018-03-24 6:33 ` [PATCH v7 01/13] pack-objects: a bit of document about struct object_entry Nguyễn Thái Ngọc Duy 2018-03-24 6:33 ` [PATCH v7 02/13] pack-objects: turn type and in_pack_type to bitfields Nguyễn Thái Ngọc Duy 2018-03-30 20:18 ` Jeff King 2018-03-24 6:33 ` [PATCH v7 03/13] pack-objects: use bitfield for object_entry::dfs_state Nguyễn Thái Ngọc Duy 2018-03-30 20:23 ` Jeff King 2018-03-24 6:33 ` [PATCH v7 04/13] pack-objects: use bitfield for object_entry::depth Nguyễn Thái Ngọc Duy 2018-03-30 20:26 ` Jeff King 2018-03-24 6:33 ` [PATCH v7 05/13] pack-objects: move in_pack_pos out of struct object_entry Nguyễn Thái Ngọc Duy 2018-03-30 20:30 ` Jeff King 2018-03-24 6:33 ` [PATCH v7 06/13] pack-objects: move in_pack " Nguyễn Thái Ngọc Duy 2018-03-24 9:42 ` Ævar Arnfjörð Bjarmason 2018-03-24 12:26 ` Duy Nguyen 2018-03-24 12:13 ` Ævar Arnfjörð Bjarmason 2018-03-30 20:48 ` Jeff King 2018-03-31 4:51 ` Duy Nguyen 2018-03-31 10:20 ` Jeff King 2018-03-31 10:45 ` Duy Nguyen [this message] 2018-03-24 6:33 ` [PATCH v7 07/13] pack-objects: refer to delta objects by index instead of pointer Nguyễn Thái Ngọc Duy 2018-03-30 20:53 ` Jeff King 2018-03-24 6:33 ` [PATCH v7 08/13] pack-objects: shrink z_delta_size field in struct object_entry Nguyễn Thái Ngọc Duy 2018-03-30 20:59 ` Jeff King 2018-03-31 4:40 ` Duy Nguyen 2018-03-31 10:17 ` Jeff King 2018-03-24 6:33 ` [PATCH v7 09/13] pack-objects: don't check size when the object is bad Nguyễn Thái Ngọc Duy 2018-03-24 6:33 ` [PATCH v7 10/13] pack-objects: clarify the use of object_entry::size Nguyễn Thái Ngọc Duy 2018-03-30 21:04 ` Jeff King 2018-03-31 4:35 ` Duy Nguyen 2018-03-31 10:13 ` Jeff King 2018-03-24 6:33 ` [PATCH v7 11/13] pack-objects: shrink size field in struct object_entry Nguyễn Thái Ngọc Duy 2018-03-30 21:18 ` Jeff King 2018-03-24 6:33 ` [PATCH v7 12/13] pack-objects: shrink delta_size " Nguyễn Thái Ngọc Duy 2018-03-30 21:24 ` Jeff King 2018-03-31 4:21 ` Duy Nguyen 2018-03-31 9:10 ` Duy Nguyen 2018-03-24 6:33 ` [PATCH v7 13/13] pack-objects: reorder members to shrink " Nguyễn Thái Ngọc Duy 2018-03-30 21:26 ` Jeff King 2018-03-31 4:10 ` Duy Nguyen 2018-03-26 15:13 ` [PATCH v7 00/13] nd/pack-objects-pack-struct updates Jeff King 2018-03-26 17:04 ` Duy Nguyen 2018-03-27 16:53 ` Jeff King 2018-03-31 10:02 ` [PATCH v8 00/15] " Nguyễn Thái Ngọc Duy 2018-03-31 10:02 ` [PATCH v8 01/15] t/README: mention about running the test suite in special modes Nguyễn Thái Ngọc Duy 2018-03-31 10:02 ` [PATCH v8 02/15] pack-objects: a bit of document about struct object_entry Nguyễn Thái Ngọc Duy 2018-03-31 10:02 ` [PATCH v8 03/15] pack-objects: turn type and in_pack_type to bitfields Nguyễn Thái Ngọc Duy 2018-03-31 10:03 ` [PATCH v8 04/15] pack-objects: use bitfield for object_entry::dfs_state Nguyễn Thái Ngọc Duy 2018-03-31 10:03 ` [PATCH v8 05/15] pack-objects: use bitfield for object_entry::depth Nguyễn Thái Ngọc Duy 2018-03-31 10:03 ` [PATCH v8 06/15] pack-objects: move in_pack_pos out of struct object_entry Nguyễn Thái Ngọc Duy 2018-03-31 10:03 ` [PATCH v8 07/15] pack-objects: move in_pack " Nguyễn Thái Ngọc Duy 2018-03-31 10:03 ` [PATCH v8 08/15] pack-objects: refer to delta objects by index instead of pointer Nguyễn Thái Ngọc Duy 2018-03-31 10:03 ` [PATCH v8 09/15] pack-objects: shrink z_delta_size field in struct object_entry Nguyễn Thái Ngọc Duy 2018-03-31 10:03 ` [PATCH v8 10/15] pack-objects: don't check size when the object is bad Nguyễn Thái Ngọc Duy 2018-03-31 10:03 ` [PATCH v8 11/15] pack-objects: clarify the use of object_entry::size Nguyễn Thái Ngọc Duy 2018-03-31 10:03 ` [PATCH v8 12/15] pack-objects: shrink size field in struct object_entry Nguyễn Thái Ngọc Duy 2018-03-31 10:03 ` [PATCH v8 13/15] pack-objects: shrink delta_size " Nguyễn Thái Ngọc Duy 2018-03-31 10:03 ` [PATCH v8 14/15] pack-objects: reorder members to shrink " Nguyễn Thái Ngọc Duy 2018-03-31 10:03 ` [PATCH v8 15/15] ci: exercise the whole test suite with uncommon code in pack-objects Nguyễn Thái Ngọc Duy 2018-03-31 11:36 ` [PATCH v8 00/15] nd/pack-objects-pack-struct updates Ævar Arnfjörð Bjarmason 2018-03-31 12:08 ` Duy Nguyen 2018-03-31 15:43 ` Ævar Arnfjörð Bjarmason 2018-04-06 21:47 ` Jeff King 2018-03-01 9:20 ` [PATCH/RFC 0/1] Avoid expensive 'repack -ad' in gc --auto Nguyễn Thái Ngọc Duy 2018-03-01 9:20 ` [PATCH/RFC 1/1] gc --auto: exclude the largest giant pack in low-memory config Nguyễn Thái Ngọc Duy 2018-03-01 18:14 ` Junio C Hamano 2018-03-02 0:00 ` Duy Nguyen 2018-03-05 14:00 ` Ævar Arnfjörð Bjarmason 2018-03-06 10:41 ` [PATCH v2 0/5] Avoid expensive 'repack -ad' in gc --auto Nguyễn Thái Ngọc Duy 2018-03-06 10:41 ` [PATCH v2 1/5] fixup! Add a test showing that 'git repack' throws away grafted-away parents Nguyễn Thái Ngọc Duy 2018-03-06 18:01 ` Junio C Hamano 2018-03-06 10:41 ` [PATCH v2 2/5] repack: add --keep-pack option Nguyễn Thái Ngọc Duy 2018-03-06 18:25 ` Junio C Hamano 2018-03-07 10:19 ` Duy Nguyen 2018-03-06 10:41 ` [PATCH v2 3/5] gc --auto: exclude base pack if not enough mem to "repack -ad" Nguyễn Thái Ngọc Duy 2018-03-06 19:19 ` Junio C Hamano 2018-03-07 10:48 ` Duy Nguyen 2018-03-07 18:38 ` Junio C Hamano 2018-03-12 18:56 ` Ævar Arnfjörð Bjarmason 2018-03-12 21:16 ` Junio C Hamano 2018-03-12 22:01 ` Ævar Arnfjörð Bjarmason 2018-03-15 16:48 ` Duy Nguyen 2018-03-07 10:48 ` Johannes Schindelin 2018-03-07 18:40 ` Junio C Hamano 2018-03-12 19:30 ` Ævar Arnfjörð Bjarmason 2018-03-15 17:00 ` Duy Nguyen 2018-03-15 19:21 ` Ævar Arnfjörð Bjarmason 2018-03-16 17:47 ` Duy Nguyen 2018-03-06 10:41 ` [PATCH v2 4/5] pack-objects: show some progress when counting kept objects Nguyễn Thái Ngọc Duy 2018-03-12 18:32 ` Ævar Arnfjörð Bjarmason 2018-03-16 19:14 ` Duy Nguyen 2018-03-16 20:13 ` Duy Nguyen 2018-03-06 10:41 ` [PATCH v2 5/5] pack-objects: display progress in get_object_details() Nguyễn Thái Ngọc Duy 2018-03-06 17:49 ` [PATCH v2 0/5] Avoid expensive 'repack -ad' in gc --auto Junio C Hamano 2018-03-16 19:27 ` [PATCH v3 0/7] nd/repack-keep-pack updates Nguyễn Thái Ngọc Duy 2018-03-16 19:27 ` [PATCH v3 1/7] repack: add --keep-pack option Nguyễn Thái Ngọc Duy 2018-03-16 19:27 ` [PATCH v3 2/7] gc: add --keep-base-pack Nguyễn Thái Ngọc Duy 2018-03-16 21:05 ` Ævar Arnfjörð Bjarmason 2018-03-19 17:26 ` Duy Nguyen 2018-03-19 19:04 ` Ævar Arnfjörð Bjarmason 2018-03-16 21:25 ` Ævar Arnfjörð Bjarmason 2018-03-16 19:27 ` [PATCH v3 3/7] gc: detect base packs based on gc.bigPackThreshold config Nguyễn Thái Ngọc Duy 2018-03-16 21:02 ` Ævar Arnfjörð Bjarmason 2018-03-16 19:27 ` [PATCH v3 4/7] gc --auto: exclude base pack if not enough mem to "repack -ad" Nguyễn Thái Ngọc Duy 2018-03-16 21:14 ` Ævar Arnfjörð Bjarmason 2018-03-16 19:27 ` [PATCH v3 5/7] gc: handle a corner case in gc.bigPackThreshold Nguyễn Thái Ngọc Duy 2018-03-16 21:10 ` Ævar Arnfjörð Bjarmason 2018-03-16 19:27 ` [PATCH v3 6/7] pack-objects: show some progress when counting kept objects Nguyễn Thái Ngọc Duy 2018-03-16 19:27 ` [PATCH v3 7/7] pack-objects: display progress in get_object_details() Nguyễn Thái Ngọc Duy 2018-03-24 7:25 ` [PATCH v4 0/7] nd/repack-keep-pack updates Nguyễn Thái Ngọc Duy 2018-03-24 7:25 ` [PATCH v4 1/7] t7700: have closing quote of a test at the beginning of line Nguyễn Thái Ngọc Duy 2018-03-24 7:25 ` [PATCH v4 2/7] repack: add --keep-pack option Nguyễn Thái Ngọc Duy 2018-03-24 7:25 ` [PATCH v4 3/7] gc: add --keep-largest-pack option Nguyễn Thái Ngọc Duy 2018-03-24 7:25 ` [PATCH v4 4/7] gc: add gc.bigPackThreshold config Nguyễn Thái Ngọc Duy 2018-03-24 7:25 ` [PATCH v4 5/7] gc: handle a corner case in gc.bigPackThreshold Nguyễn Thái Ngọc Duy 2018-03-24 7:25 ` [PATCH v4 6/7] gc --auto: exclude base pack if not enough mem to "repack -ad" Nguyễn Thái Ngọc Duy 2018-03-24 7:25 ` [PATCH v4 7/7] pack-objects: show some progress when counting kept objects Nguyễn Thái Ngọc Duy 2018-03-02 10:18 ` Reduce pack-objects memory footprint? Duy Nguyen 2018-03-02 10:37 ` Eric Wong 2018-03-02 10:54 ` Jeff King 2018-03-02 10:55 ` Duy Nguyen 2018-03-02 14:38 ` Duy Nguyen 2018-03-17 22:05 ` Why does pack-objects use so much memory on incremental packing? Ævar Arnfjörð Bjarmason 2018-03-18 8:37 ` Duy Nguyen 2018-03-20 5:28 ` Jeff King
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180331104544.GA16426@duynguyen.home \ --to=pclouds@gmail.com \ --cc=avarab@gmail.com \ --cc=e@80x24.org \ --cc=git@vger.kernel.org \ --cc=gitster@pobox.com \ --cc=peff@peff.net \ --subject='Re: [PATCH v7 06/13] pack-objects: move in_pack out of struct object_entry' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://80x24.org/mirrors/git.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).