git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v7 00/13] nd/pack-objects-pack-struct updates

From
Jeff King <peff@peff.net>
Date
Mar 26, 2018, 15:13 UTC
Message-ID
<20180326151317.GA24425@sigill.intra.peff.net>
In-Reply-To
<20180324063353.24722-1-pclouds@gmail.com>
On Sat, Mar 24, 2018 at 07:33:40AM +0100, Nguyễn Thái Ngọc Duy wrote:
Show 34 quoted lines
> +unsigned long oe_get_size_slow(struct packing_data *pack,
> +			       const struct object_entry *e)
> +{
> +	struct packed_git *p;
> +	struct pack_window *w_curs;
> +	unsigned char *buf;
> +	enum object_type type;
> +	unsigned long used, avail, size;
> +
> +	if (e->type_ != OBJ_OFS_DELTA && e->type_ != OBJ_REF_DELTA) {
> +		read_lock();
> +		if (sha1_object_info(e->idx.oid.hash, &size) < 0)
> +			die(_("unable to get size of %s"),
> +			    oid_to_hex(&e->idx.oid));
> +		read_unlock();
> +		return size;
> +	}
> +
> +	p = oe_in_pack(pack, e);
> +	if (!p)
> +		die("BUG: when e->type is a delta, it must belong to a pack");
> +
> +	read_lock();
> +	w_curs = NULL;
> +	buf = use_pack(p, &w_curs, e->in_pack_offset, &avail);
> +	used = unpack_object_header_buffer(buf, avail, &type, &size);
> +	if (used == 0)
> +		die(_("unable to parse object header of %s"),
> +		    oid_to_hex(&e->idx.oid));
> +
> +	unuse_pack(&w_curs);
> +	read_unlock();
> +	return size;
> +}

It took me a while to figure out why this treated deltas and non-deltas differently. At first I thought it was an optimization (since we can find non-delta sizes quickly by looking at the headers). But I think it's just that you want to know the size of the actual _delta_, not the reconstructed object. And there's no way to ask sha1_object_info() for that.

Perhaps the _extended version of that function should learn an OBJECT_INFO_NO_DEREF flag or something to tell it return the true delta type and size. Then this whole function could just become a single call.

But short of that, it's probably worth a comment explaining what's going on.

Show 12 quoted lines
> +static void prepare_in_pack_by_idx(struct packing_data *pdata)
> +{
> +	struct packed_git **mapping, *p;
> +	int cnt = 0, nr = 1 << OE_IN_PACK_BITS;
> +
> +	if (getenv("GIT_TEST_FULL_IN_PACK_ARRAY")) {
> +		/*
> +		 * leave in_pack_by_idx NULL to force in_pack[] to be
> +		 * used instead
> +		 */
> +		return;
> +	}

Minor nit, but can we use git_env_bool() here? It's just as easy, and it's less surprising in some corner cases.

Show 15 quoted lines
>  struct object_entry *packlist_alloc(struct packing_data *pdata,
>  				    const unsigned char *sha1,
>  				    uint32_t index_pos)
>  {
>  	struct object_entry *new_entry;
>  
> +	if (!pdata->nr_objects) {
> +		prepare_in_pack_by_idx(pdata);
> +		if (getenv("GIT_TEST_OE_SIZE_BITS")) {
> +			int bits = atoi(getenv("GIT_TEST_OE_SIZE_BITS"));;
> +			pdata->oe_size_limit = 1 << bits;
> +		}
> +		if (!pdata->oe_size_limit)
> +			pdata->oe_size_limit = 1 << OE_SIZE_BITS;
> +	}
Ditto here; I think this could just be:
  pdata->oe_size_limit = git_env_ulong("GIT_TEST_OE_SIZE_BITS",
                                       (1 << OE_SIZE_BITS));
Show 7 quoted lines
>  	if (pdata->nr_objects >= pdata->nr_alloc) {
>  		pdata->nr_alloc = (pdata->nr_alloc  + 1024) * 3 / 2;
>  		REALLOC_ARRAY(pdata->objects, pdata->nr_alloc);
> +
> +		if (!pdata->in_pack_by_idx)
> +			REALLOC_ARRAY(pdata->in_pack, pdata->nr_alloc);
>  	}

I was going to complain that we don't use ALLOC_GROW() here, but actually that part is in the context. ;)

Show 8 quoted lines
> @@ -35,7 +36,9 @@ enum dfs_state {
>   *
>   * "size" is the uncompressed object size. Compressed size of the raw
>   * data for an object in a pack is not stored anywhere but is computed
> - * and made available when reverse .idx is made.
> + * and made available when reverse .idx is made. Note that when an
> + * delta is reused, "size" is the uncompressed _delta_ size, not the
> + * canonical one after the delta has been applied.
s/an delta/a delta/
Show 19 quoted lines
> +Running tests with special setups
> +---------------------------------
> +
> +The whole test suite could be run to test some special features
> +that cannot be easily covered by a few specific test cases. These
> +could be enabled by running the test suite with correct GIT_TEST_
> +environment set.
> +
> +GIT_TEST_SPLIT_INDEX forces split-index mode on the whole test suite.
> +
> +GIT_TEST_FULL_IN_PACK_ARRAY exercises the uncommon pack-objects code
> +path where there are more than 1024 packs even if the actual number of
> +packs in repository is below this limit.
> +
> +GIT_TEST_OE_SIZE_BITS=<bits> exercises the uncommon pack-objects
> +code path where we do not cache objecct size in memory and read it
> +from existing packs on demand. This normally only happens when the
> +object size is over 2GB. This variable forces the code path on any
> +object larger than 2^<bits> bytes.

It's nice to have these available to test the uncommon cases. But I have a feeling nobody will ever run them, since it requires extra effort (and takes a full test run).

I see there's a one-off test for GIT_TEST_FULL_IN_PACK_ARRAY, which I think is a good idea, since it makes sure the code is exercised in a normal test suite run. Should we do the same for GIT_TEST_OE_SIZE_BITS?

Also, s/objecct/object/. :)
> [...]

I haven't done an in-depth read of each patch yet; this was just what jumped out at me from reading the interdiff.

-Peff
Previous: Jeff KingNext: Duy Nguyen
Message 189 of 273 in “Reduce pack-objects memory footprint?”
  1. Duy NguyenFeb 28, 2018
  2. Jeff KingFeb 28, 2018
  3. Duy NguyenFeb 28, 2018
  4. Jeff KingFeb 28, 2018
  5. Duy NguyenFeb 28, 2018
  6. Eric WongFeb 28, 2018
  7. Duy NguyenMar 1, 2018
  8. 00/11 Reduce pack-objects memory footprintNguyễn Thái Ngọc Duy, Mar 1, 2018
  9. 01/11 pack-objects: document holes in struct object_entry.hNguyễn Thái Ngọc Duy, Mar 1, 2018
  10. 02/11 pack-objects: turn type and in_pack_type to bitfieldsNguyễn Thái Ngọc Duy, Mar 1, 2018
  11. 03/11 pack-objects: use bitfield for object_entry::dfs_stateNguyễn Thái Ngọc Duy, Mar 1, 2018
  12. 04/11 pack-objects: use bitfield for object_entry::depthNguyễn Thái Ngọc Duy, Mar 1, 2018
  13. Junio C HamanoMar 1, 2018
  14. 06/11 pack-objects: move in_pack_pos out of struct object_entryNguyễn Thái Ngọc Duy, Mar 1, 2018
  15. 08/11 pack-objects: faster reverse packed_git lookupNguyễn Thái Ngọc Duy, Mar 1, 2018
  16. 05/11 pack-objects: note about in_pack_header_sizeNguyễn Thái Ngọc Duy, Mar 1, 2018
  17. 07/11 pack-objects: move in_pack out of struct object_entryNguyễn Thái Ngọc Duy, Mar 1, 2018
  18. Ævar Arnfjörð BjarmasonMar 1, 2018
  19. Jeff KingMar 1, 2018
  20. Duy NguyenMar 2, 2018
  21. Junio C HamanoMar 1, 2018
  22. 09/11 pack-objects: refer to delta objects by index instead of pointerNguyễn Thái Ngọc Duy, Mar 1, 2018
  23. Junio C HamanoMar 1, 2018
  24. 10/11 pack-objects: reorder 'hash' to pack struct object_entryNguyễn Thái Ngọc Duy, Mar 1, 2018
  25. 11/11 pack-objects: increase pack file limit to 4096Nguyễn Thái Ngọc Duy, Mar 1, 2018
  26. Ævar Arnfjörð BjarmasonMar 1, 2018
  27. Duy NguyenMar 2, 2018
  28. Jeff KingMar 2, 2018
  29. 0/9 Reduce pack-objects memory footprintNguyễn Thái Ngọc Duy, Mar 3, 2018
  30. 1/9 pack-objects: document holes in struct object_entry.hNguyễn Thái Ngọc Duy, Mar 3, 2018
  31. 2/9 pack-objects: turn type and in_pack_type to bitfieldsNguyễn Thái Ngọc Duy, Mar 3, 2018
  32. 3/9 pack-objects: use bitfield for object_entry::dfs_stateNguyễn Thái Ngọc Duy, Mar 3, 2018
  33. 4/9 pack-objects: use bitfield for object_entry::depthNguyễn Thái Ngọc Duy, Mar 3, 2018
  34. 5/9 pack-objects: note about in_pack_header_sizeNguyễn Thái Ngọc Duy, Mar 3, 2018
  35. 6/9 pack-objects: move in_pack_pos out of struct object_entryNguyễn Thái Ngọc Duy, Mar 3, 2018
  36. 7/9 pack-objects: move in_pack out of struct object_entryNguyễn Thái Ngọc Duy, Mar 3, 2018
  37. 8/9 pack-objects: refer to delta objects by index instead of pointerNguyễn Thái Ngọc Duy, Mar 3, 2018
  38. 9/9 pack-objects: reorder 'hash' to pack struct object_entryNguyễn Thái Ngọc Duy, Mar 3, 2018
  39. Duy NguyenMar 5, 2018
  40. 00/12 Reduce pack-objects memory footprintNguyễn Thái Ngọc Duy, Mar 8, 2018
  41. 01/12 pack-objects: a bit of document about struct object_entryNguyễn Thái Ngọc Duy, Mar 8, 2018
  42. Junio C HamanoMar 9, 2018
  43. 02/12 pack-objects: turn type and in_pack_type to bitfieldsNguyễn Thái Ngọc Duy, Mar 8, 2018
  44. Junio C HamanoMar 9, 2018
  45. Duy NguyenMar 12, 2018
  46. 03/12 pack-objects: use bitfield for object_entry::dfs_stateNguyễn Thái Ngọc Duy, Mar 8, 2018
  47. 04/12 pack-objects: use bitfield for object_entry::depthNguyễn Thái Ngọc Duy, Mar 8, 2018
  48. Junio C HamanoMar 9, 2018
  49. 05/12 pack-objects: note about in_pack_header_sizeNguyễn Thái Ngọc Duy, Mar 8, 2018
  50. 06/12 pack-objects: move in_pack_pos out of struct object_entryNguyễn Thái Ngọc Duy, Mar 8, 2018
  51. 07/12 pack-objects: move in_pack out of struct object_entryNguyễn Thái Ngọc Duy, Mar 8, 2018
  52. Junio C HamanoMar 9, 2018
  53. 08/12 pack-objects: refer to delta objects by index instead of pointerNguyễn Thái Ngọc Duy, Mar 8, 2018
  54. Junio C HamanoMar 14, 2018
  55. 09/12 pack-objects: reorder 'hash' to pack struct object_entryNguyễn Thái Ngọc Duy, Mar 8, 2018
  56. 10/12 pack-objects: shrink z_delta_size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 8, 2018
  57. 11/12 pack-objects: shrink size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 8, 2018
  58. 12/12 pack-objects: shrink delta_size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 8, 2018
  59. 00/11 nd/pack-objects-pack-struct updatesNguyễn Thái Ngọc Duy, Mar 16, 2018
  60. 01/11 pack-objects: a bit of document about struct object_entryNguyễn Thái Ngọc Duy, Mar 16, 2018
  61. Junio C HamanoMar 16, 2018
  62. Duy NguyenMar 17, 2018
  63. 02/11 pack-objects: turn type and in_pack_type to bitfieldsNguyễn Thái Ngọc Duy, Mar 16, 2018
  64. Junio C HamanoMar 16, 2018
  65. 04/11 pack-objects: use bitfield for object_entry::depthNguyễn Thái Ngọc Duy, Mar 16, 2018
  66. 05/11 pack-objects: move in_pack_pos out of struct object_entryNguyễn Thái Ngọc Duy, Mar 16, 2018
  67. 03/11 pack-objects: use bitfield for object_entry::dfs_stateNguyễn Thái Ngọc Duy, Mar 16, 2018
  68. 08/11 pack-objects: shrink z_delta_size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 16, 2018
  69. Junio C HamanoMar 16, 2018
  70. 11/11 pack-objects.h: reorder members to shrink struct object_entryNguyễn Thái Ngọc Duy, Mar 16, 2018
  71. Junio C HamanoMar 16, 2018
  72. Duy NguyenMar 17, 2018
  73. 07/11 pack-objects: refer to delta objects by index instead of pointerNguyễn Thái Ngọc Duy, Mar 16, 2018
  74. Junio C HamanoMar 16, 2018
  75. 10/11 pack-objects: shrink delta_size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 16, 2018
  76. 06/11 pack-objects: move in_pack out of struct object_entryNguyễn Thái Ngọc Duy, Mar 16, 2018
  77. Stefan BellerMar 26, 2018
  78. 09/11 pack-objects: shrink size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 16, 2018
  79. Junio C HamanoMar 16, 2018
  80. Junio C HamanoMar 16, 2018
  81. 00/11 nd/pack-objects-pack-struct updatesNguyễn Thái Ngọc Duy, Mar 17, 2018
  82. 01/11 pack-objects: a bit of document about struct object_entryNguyễn Thái Ngọc Duy, Mar 17, 2018
  83. 03/11 pack-objects: use bitfield for object_entry::dfs_stateNguyễn Thái Ngọc Duy, Mar 17, 2018
  84. 04/11 pack-objects: use bitfield for object_entry::depthNguyễn Thái Ngọc Duy, Mar 17, 2018
  85. Ævar Arnfjörð BjarmasonMar 17, 2018
  86. 07/11 pack-objects: refer to delta objects by index instead of pointerNguyễn Thái Ngọc Duy, Mar 17, 2018
  87. 08/11 pack-objects: shrink z_delta_size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 17, 2018
  88. 09/11 pack-objects: shrink size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 17, 2018
  89. Ævar Arnfjörð BjarmasonMar 17, 2018
  90. Junio C HamanoMar 18, 2018
  91. Duy NguyenMar 18, 2018
  92. 11/11 pack-objects.h: reorder members to shrink struct object_entryNguyễn Thái Ngọc Duy, Mar 17, 2018
  93. Ævar Arnfjörð BjarmasonMar 17, 2018
  94. Duy NguyenMar 18, 2018
  95. 10/11 pack-objects: shrink delta_size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 17, 2018
  96. 02/11 pack-objects: turn type and in_pack_type to bitfieldsNguyễn Thái Ngọc Duy, Mar 17, 2018
  97. 05/11 pack-objects: move in_pack_pos out of struct object_entryNguyễn Thái Ngọc Duy, Mar 17, 2018
  98. 06/11 pack-objects: move in_pack out of struct object_entryNguyễn Thái Ngọc Duy, Mar 17, 2018
  99. Ævar Arnfjörð BjarmasonMar 17, 2018
  100. Ævar Arnfjörð BjarmasonMar 17, 2018
  101. 00/11 nd/pack-objects-pack-struct updatesNguyễn Thái Ngọc Duy, Mar 18, 2018
  102. 01/11 pack-objects: a bit of document about struct object_entryNguyễn Thái Ngọc Duy, Mar 18, 2018
  103. 02/11 pack-objects: turn type and in_pack_type to bitfieldsNguyễn Thái Ngọc Duy, Mar 18, 2018
  104. 03/11 pack-objects: use bitfield for object_entry::dfs_stateNguyễn Thái Ngọc Duy, Mar 18, 2018
  105. 04/11 pack-objects: use bitfield for object_entry::depthNguyễn Thái Ngọc Duy, Mar 18, 2018
  106. 05/11 pack-objects: move in_pack_pos out of struct object_entryNguyễn Thái Ngọc Duy, Mar 18, 2018
  107. 08/11 pack-objects: shrink z_delta_size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 18, 2018
  108. 06/11 pack-objects: move in_pack out of struct object_entryNguyễn Thái Ngọc Duy, Mar 18, 2018
  109. 07/11 pack-objects: refer to delta objects by index instead of pointerNguyễn Thái Ngọc Duy, Mar 18, 2018
  110. 11/11 pack-objects: reorder members to shrink struct object_entryNguyễn Thái Ngọc Duy, Mar 18, 2018
  111. 09/11 pack-objects: shrink size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 18, 2018
  112. Ævar Arnfjörð BjarmasonMar 18, 2018
  113. Junio C HamanoMar 19, 2018
  114. Duy NguyenMar 19, 2018
  115. Junio C HamanoMar 19, 2018
  116. Duy NguyenMar 19, 2018
  117. Junio C HamanoMar 19, 2018
  118. Duy NguyenMar 19, 2018
  119. Junio C HamanoMar 19, 2018
  120. Duy NguyenMar 20, 2018
  121. Junio C HamanoMar 20, 2018
  122. Jeff KingMar 21, 2018
  123. Duy NguyenMar 21, 2018
  124. Duy NguyenMar 20, 2018
  125. 10/11 pack-objects: shrink delta_size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 18, 2018
  126. Ævar Arnfjörð BjarmasonMar 18, 2018
  127. Jeff KingMar 21, 2018
  128. Duy NguyenMar 21, 2018
  129. Ævar Arnfjörð BjarmasonMar 21, 2018
  130. Duy NguyenMar 21, 2018
  131. Duy NguyenMar 21, 2018
  132. Junio C HamanoMar 21, 2018
  133. Jeff KingMar 22, 2018
  134. Jeff KingMar 22, 2018
  135. Duy NguyenMar 22, 2018
  136. Jeff KingMar 22, 2018
  137. Duy NguyenMar 22, 2018
  138. Ramsay JonesMar 23, 2018
  139. Jeff KingMar 23, 2018
  140. Jeff KingMar 23, 2018
  141. Ramsay JonesMar 23, 2018
  142. Jeff KingMar 24, 2018
  143. Duy NguyenMar 23, 2018
  144. Ramsay JonesMar 23, 2018
  145. Ævar Arnfjörð BjarmasonMar 21, 2018
  146. Junio C HamanoMar 21, 2018
  147. Duy NguyenMar 21, 2018
  148. Jeff KingMar 22, 2018
  149. Duy NguyenMar 22, 2018
  150. Jeff KingMar 22, 2018
  151. 00/13 nd/pack-objects-pack-struct updatesNguyễn Thái Ngọc Duy, Mar 24, 2018
  152. 01/13 pack-objects: a bit of document about struct object_entryNguyễn Thái Ngọc Duy, Mar 24, 2018
  153. 03/13 pack-objects: use bitfield for object_entry::dfs_stateNguyễn Thái Ngọc Duy, Mar 24, 2018
  154. Jeff KingMar 30, 2018
  155. 04/13 pack-objects: use bitfield for object_entry::depthNguyễn Thái Ngọc Duy, Mar 24, 2018
  156. Jeff KingMar 30, 2018
  157. 13/13 pack-objects: reorder members to shrink struct object_entryNguyễn Thái Ngọc Duy, Mar 24, 2018
  158. Jeff KingMar 30, 2018
  159. Duy NguyenMar 31, 2018
  160. 11/13 pack-objects: shrink size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 24, 2018
  161. Jeff KingMar 30, 2018
  162. 02/13 pack-objects: turn type and in_pack_type to bitfieldsNguyễn Thái Ngọc Duy, Mar 24, 2018
  163. Jeff KingMar 30, 2018
  164. 12/13 pack-objects: shrink delta_size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 24, 2018
  165. Jeff KingMar 30, 2018
  166. Duy NguyenMar 31, 2018
  167. Duy NguyenMar 31, 2018
  168. 06/13 pack-objects: move in_pack out of struct object_entryNguyễn Thái Ngọc Duy, Mar 24, 2018
  169. Ævar Arnfjörð BjarmasonMar 24, 2018
  170. Duy NguyenMar 24, 2018
  171. Ævar Arnfjörð BjarmasonMar 24, 2018
  172. Jeff KingMar 30, 2018
  173. Duy NguyenMar 31, 2018
  174. Jeff KingMar 31, 2018
  175. Duy NguyenMar 31, 2018
  176. 05/13 pack-objects: move in_pack_pos out of struct object_entryNguyễn Thái Ngọc Duy, Mar 24, 2018
  177. Jeff KingMar 30, 2018
  178. 10/13 pack-objects: clarify the use of object_entry::sizeNguyễn Thái Ngọc Duy, Mar 24, 2018
  179. Jeff KingMar 30, 2018
  180. Duy NguyenMar 31, 2018
  181. Jeff KingMar 31, 2018
  182. 09/13 pack-objects: don't check size when the object is badNguyễn Thái Ngọc Duy, Mar 24, 2018
  183. 07/13 pack-objects: refer to delta objects by index instead of pointerNguyễn Thái Ngọc Duy, Mar 24, 2018
  184. Jeff KingMar 30, 2018
  185. 08/13 pack-objects: shrink z_delta_size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 24, 2018
  186. Jeff KingMar 30, 2018
  187. Duy NguyenMar 31, 2018
  188. Jeff KingMar 31, 2018
  189. Jeff KingMar 26, 2018
  190. Duy NguyenMar 26, 2018
  191. Jeff KingMar 27, 2018
  192. 00/15 nd/pack-objects-pack-struct updatesNguyễn Thái Ngọc Duy, Mar 31, 2018
  193. 01/15 t/README: mention about running the test suite in special modesNguyễn Thái Ngọc Duy, Mar 31, 2018
  194. 02/15 pack-objects: a bit of document about struct object_entryNguyễn Thái Ngọc Duy, Mar 31, 2018
  195. 07/15 pack-objects: move in_pack out of struct object_entryNguyễn Thái Ngọc Duy, Mar 31, 2018
  196. 06/15 pack-objects: move in_pack_pos out of struct object_entryNguyễn Thái Ngọc Duy, Mar 31, 2018
  197. 05/15 pack-objects: use bitfield for object_entry::depthNguyễn Thái Ngọc Duy, Mar 31, 2018
  198. 04/15 pack-objects: use bitfield for object_entry::dfs_stateNguyễn Thái Ngọc Duy, Mar 31, 2018
  199. 08/15 pack-objects: refer to delta objects by index instead of pointerNguyễn Thái Ngọc Duy, Mar 31, 2018
  200. 14/15 pack-objects: reorder members to shrink struct object_entryNguyễn Thái Ngọc Duy, Mar 31, 2018
  201. 15/15 ci: exercise the whole test suite with uncommon code in pack-objectsNguyễn Thái Ngọc Duy, Mar 31, 2018
  202. 10/15 pack-objects: don't check size when the object is badNguyễn Thái Ngọc Duy, Mar 31, 2018
  203. 13/15 pack-objects: shrink delta_size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 31, 2018
  204. 09/15 pack-objects: shrink z_delta_size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 31, 2018
  205. 12/15 pack-objects: shrink size field in struct object_entryNguyễn Thái Ngọc Duy, Mar 31, 2018
  206. 11/15 pack-objects: clarify the use of object_entry::sizeNguyễn Thái Ngọc Duy, Mar 31, 2018
  207. 03/15 pack-objects: turn type and in_pack_type to bitfieldsNguyễn Thái Ngọc Duy, Mar 31, 2018
  208. Ævar Arnfjörð BjarmasonMar 31, 2018
  209. Duy NguyenMar 31, 2018
  210. Ævar Arnfjörð BjarmasonMar 31, 2018
  211. Jeff KingApr 6, 2018
  212. 0/1 Avoid expensive 'repack -ad' in gc --autoNguyễn Thái Ngọc Duy, Mar 1, 2018
  213. 1/1 gc --auto: exclude the largest giant pack in low-memory configNguyễn Thái Ngọc Duy, Mar 1, 2018
  214. Junio C HamanoMar 1, 2018
  215. Duy NguyenMar 2, 2018
  216. Ævar Arnfjörð BjarmasonMar 5, 2018
  217. 0/5 Avoid expensive 'repack -ad' in gc --autoNguyễn Thái Ngọc Duy, Mar 6, 2018
  218. 1/5 fixup! Add a test showing that 'git repack' throws away grafted-away parentsNguyễn Thái Ngọc Duy, Mar 6, 2018
  219. Junio C HamanoMar 6, 2018
  220. 2/5 repack: add --keep-pack optionNguyễn Thái Ngọc Duy, Mar 6, 2018
  221. Junio C HamanoMar 6, 2018
  222. Duy NguyenMar 7, 2018
  223. 3/5 gc --auto: exclude base pack if not enough mem to "repack -ad"Nguyễn Thái Ngọc Duy, Mar 6, 2018
  224. Junio C HamanoMar 6, 2018
  225. Duy NguyenMar 7, 2018
  226. Junio C HamanoMar 7, 2018
  227. Ævar Arnfjörð BjarmasonMar 12, 2018
  228. Junio C HamanoMar 12, 2018
  229. Ævar Arnfjörð BjarmasonMar 12, 2018
  230. Duy NguyenMar 15, 2018
  231. Johannes SchindelinMar 7, 2018
  232. Junio C HamanoMar 7, 2018
  233. Ævar Arnfjörð BjarmasonMar 12, 2018
  234. Duy NguyenMar 15, 2018
  235. Ævar Arnfjörð BjarmasonMar 15, 2018
  236. Duy NguyenMar 16, 2018
  237. 4/5 pack-objects: show some progress when counting kept objectsNguyễn Thái Ngọc Duy, Mar 6, 2018
  238. Ævar Arnfjörð BjarmasonMar 12, 2018
  239. Duy NguyenMar 16, 2018
  240. Duy NguyenMar 16, 2018
  241. 5/5 pack-objects: display progress in get_object_details()Nguyễn Thái Ngọc Duy, Mar 6, 2018
  242. Junio C HamanoMar 6, 2018
  243. 0/7 nd/repack-keep-pack updatesNguyễn Thái Ngọc Duy, Mar 16, 2018
  244. 1/7 repack: add --keep-pack optionNguyễn Thái Ngọc Duy, Mar 16, 2018
  245. 4/7 gc --auto: exclude base pack if not enough mem to "repack -ad"Nguyễn Thái Ngọc Duy, Mar 16, 2018
  246. Ævar Arnfjörð BjarmasonMar 16, 2018
  247. 6/7 pack-objects: show some progress when counting kept objectsNguyễn Thái Ngọc Duy, Mar 16, 2018
  248. 7/7 pack-objects: display progress in get_object_details()Nguyễn Thái Ngọc Duy, Mar 16, 2018
  249. 5/7 gc: handle a corner case in gc.bigPackThresholdNguyễn Thái Ngọc Duy, Mar 16, 2018
  250. Ævar Arnfjörð BjarmasonMar 16, 2018
  251. 2/7 gc: add --keep-base-packNguyễn Thái Ngọc Duy, Mar 16, 2018
  252. Ævar Arnfjörð BjarmasonMar 16, 2018
  253. Duy NguyenMar 19, 2018
  254. Ævar Arnfjörð BjarmasonMar 19, 2018
  255. Ævar Arnfjörð BjarmasonMar 16, 2018
  256. 3/7 gc: detect base packs based on gc.bigPackThreshold configNguyễn Thái Ngọc Duy, Mar 16, 2018
  257. Ævar Arnfjörð BjarmasonMar 16, 2018
  258. 0/7 nd/repack-keep-pack updatesNguyễn Thái Ngọc Duy, Mar 24, 2018
  259. 1/7 t7700: have closing quote of a test at the beginning of lineNguyễn Thái Ngọc Duy, Mar 24, 2018
  260. 4/7 gc: add gc.bigPackThreshold configNguyễn Thái Ngọc Duy, Mar 24, 2018
  261. 3/7 gc: add --keep-largest-pack optionNguyễn Thái Ngọc Duy, Mar 24, 2018
  262. 6/7 gc --auto: exclude base pack if not enough mem to "repack -ad"Nguyễn Thái Ngọc Duy, Mar 24, 2018
  263. 7/7 pack-objects: show some progress when counting kept objectsNguyễn Thái Ngọc Duy, Mar 24, 2018
  264. 5/7 gc: handle a corner case in gc.bigPackThresholdNguyễn Thái Ngọc Duy, Mar 24, 2018
  265. 2/7 repack: add --keep-pack optionNguyễn Thái Ngọc Duy, Mar 24, 2018
  266. Duy NguyenMar 2, 2018
  267. Eric WongMar 2, 2018
  268. Jeff KingMar 2, 2018
  269. Duy NguyenMar 2, 2018
  270. Duy NguyenMar 2, 2018
  271. Why does pack-objects use so much memory on incremental packing?Ævar Arnfjörð Bjarmason, Mar 17, 2018
  272. Duy NguyenMar 18, 2018
  273. Jeff KingMar 20, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.