<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/Documentation/git-repack.txt, branch v2.33.6</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.33.6</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.33.6'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2021-07-08T20:15:03Z</updated>
<entry>
<title>Merge branch 'jk/doc-max-pack-size'</title>
<updated>2021-07-08T20:15:03Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2021-07-08T20:15:03Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=18b49be4927bb327449624c37eebd13a5b9c1582'/>
<id>urn:sha1:18b49be4927bb327449624c37eebd13a5b9c1582</id>
<content type='text'>
Doc update.

* jk/doc-max-pack-size:
  doc: warn people against --max-pack-size
</content>
</entry>
<entry>
<title>doc: warn people against --max-pack-size</title>
<updated>2021-06-08T23:56:09Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2021-06-08T07:24:48Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=6fb9195f6c6df047949efcdb8a1fb9eaed0c925e'/>
<id>urn:sha1:6fb9195f6c6df047949efcdb8a1fb9eaed0c925e</id>
<content type='text'>
This option is almost never a good idea, as the resulting repository is
larger and slower (see the new explanations in the docs).

I outlined the potential problems. We could go further and make the
option harder to find (or at least, make the command-line option
descriptions a much more terse "you probably don't want this; see
pack.packsizeLimit for details"). But this seems like a minimal change
that may prevent people from thinking it's more useful than it is.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>git-repack.txt: remove spurious ")"</title>
<updated>2021-05-10T05:12:47Z</updated>
<author>
<name>Martin Ågren</name>
<email>martin.agren@gmail.com</email>
</author>
<published>2021-05-09T09:09:59Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=fba8e4c3d0930d74be31dcd1e9cd15ed6e41ff80'/>
<id>urn:sha1:fba8e4c3d0930d74be31dcd1e9cd15ed6e41ff80</id>
<content type='text'>
Drop the ")" at the end of this paragraph. There's a parenthetical
remark in this paragraph, but it's been closed on the line above.

Signed-off-by: Martin Ågren &lt;martin.agren@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'tb/geometric-repack'</title>
<updated>2021-03-24T21:36:27Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2021-03-24T21:36:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=2744383cbda9bbbe4219bd3532757ae6d28460e1'/>
<id>urn:sha1:2744383cbda9bbbe4219bd3532757ae6d28460e1</id>
<content type='text'>
"git repack" so far has been only capable of repacking everything
under the sun into a single pack (or split by size).  A cleverer
strategy to reduce the cost of repacking a repository has been
introduced.

* tb/geometric-repack:
  builtin/pack-objects.c: ignore missing links with --stdin-packs
  builtin/repack.c: reword comment around pack-objects flags
  builtin/repack.c: be more conservative with unsigned overflows
  builtin/repack.c: assign pack split later
  t7703: test --geometric repack with loose objects
  builtin/repack.c: do not repack single packs with --geometric
  builtin/repack.c: add '--geometric' option
  packfile: add kept-pack cache for find_kept_pack_entry()
  builtin/pack-objects.c: rewrite honor-pack-keep logic
  p5303: measure time to repack with keep
  p5303: add missing &amp;&amp;-chains
  builtin/pack-objects.c: add '--stdin-packs' option
  revision: learn '--no-kept-objects'
  packfile: introduce 'find_kept_pack_entry()'
</content>
</entry>
<entry>
<title>builtin/repack.c: add '--geometric' option</title>
<updated>2021-02-23T07:30:52Z</updated>
<author>
<name>Taylor Blau</name>
<email>me@ttaylorr.com</email>
</author>
<published>2021-02-23T02:25:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0fabafd0b948bfc1c07db73494863d581c7f5d04'/>
<id>urn:sha1:0fabafd0b948bfc1c07db73494863d581c7f5d04</id>
<content type='text'>
Often it is useful to both:

  - have relatively few packfiles in a repository, and

  - avoid having so few packfiles in a repository that we repack its
    entire contents regularly

This patch implements a '--geometric=&lt;n&gt;' option in 'git repack'. This
allows the caller to specify that they would like each pack to be at
least a factor times as large as the previous largest pack (by object
count).

Concretely, say that a repository has 'n' packfiles, labeled P1, P2,
..., up to Pn. Each packfile has an object count equal to 'objects(Pn)'.
With a geometric factor of 'r', it should be that:

  objects(Pi) &gt; r*objects(P(i-1))

for all i in [1, n], where the packs are sorted by

  objects(P1) &lt;= objects(P2) &lt;= ... &lt;= objects(Pn).

Since finding a true optimal repacking is NP-hard, we approximate it
along two directions:

  1. We assume that there is a cutoff of packs _before starting the
     repack_ where everything to the right of that cut-off already forms
     a geometric progression (or no cutoff exists and everything must be
     repacked).

  2. We assume that everything smaller than the cutoff count must be
     repacked. This forms our base assumption, but it can also cause
     even the "heavy" packs to get repacked, for e.g., if we have 6
     packs containing the following number of objects:

       1, 1, 1, 2, 4, 32

     then we would place the cutoff between '1, 1' and '1, 2, 4, 32',
     rolling up the first two packs into a pack with 2 objects. That
     breaks our progression and leaves us:

       2, 1, 2, 4, 32
         ^

     (where the '^' indicates the position of our split). To restore a
     progression, we move the split forward (towards larger packs)
     joining each pack into our new pack until a geometric progression
     is restored. Here, that looks like:

       2, 1, 2, 4, 32  ~&gt;  3, 2, 4, 32  ~&gt;  5, 4, 32  ~&gt; ... ~&gt; 9, 32
         ^                   ^                ^                   ^

This has the advantage of not repacking the heavy-side of packs too
often while also only creating one new pack at a time. Another wrinkle
is that we assume that loose, indexed, and reflog'd objects are
insignificant, and lump them into any new pack that we create. This can
lead to non-idempotent results.

Suggested-by: Derrick Stolee &lt;dstolee@microsoft.com&gt;
Signed-off-by: Taylor Blau &lt;me@ttaylorr.com&gt;
Reviewed-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>doc: mention bigFileThreshold for packing</title>
<updated>2021-02-22T21:18:30Z</updated>
<author>
<name>Christian Walther</name>
<email>cwalther@gmx.ch</email>
</author>
<published>2021-02-21T13:23:57Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=3a837b58e33ee67f21a2ca737c6a12d74cee9e5e'/>
<id>urn:sha1:3a837b58e33ee67f21a2ca737c6a12d74cee9e5e</id>
<content type='text'>
Knowing about the core.bigFileThreshold configuration variable is
helpful when examining pack file size differences between repositories.
Add a reference to it to the manpages a user is likely to read in this
situation.

Capitalize CONFIGURATION for consistency with other pages having such a
section.

Signed-off-by: Christian Walther &lt;cwalther@gmx.ch&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>doc: fix repeated words</title>
<updated>2019-08-12T00:40:07Z</updated>
<author>
<name>Mark Rushakoff</name>
<email>mark.rushakoff@gmail.com</email>
</author>
<published>2019-08-10T05:59:14Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=24966cd9820a6b0d4e348807b07cb9af8ba84fc7'/>
<id>urn:sha1:24966cd9820a6b0d4e348807b07cb9af8ba84fc7</id>
<content type='text'>
Inspired by 21416f0a07 ("restore: fix typo in docs", 2019-08-03), I ran
"git grep -E '(\b[a-zA-Z]+) \1\b' -- Documentation/" to find other cases
where words were duplicated, e.g. "the the", and in most cases removed
one of the repeated words.

There were many false positives by this grep command, including
deliberate repeated words like "really really" or valid uses of "that
that" which I left alone, of course.

I also did not correct any of the legitimate, accidentally repeated
words in old RelNotes.

Signed-off-by: Mark Rushakoff &lt;mark.rushakoff@gmail.com&gt;
Acked-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'cc/delta-islands'</title>
<updated>2018-09-17T20:53:55Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-09-17T20:53:55Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f3504ea3dd21b0a6d38bcd369efa0663cdc05416'/>
<id>urn:sha1:f3504ea3dd21b0a6d38bcd369efa0663cdc05416</id>
<content type='text'>
Lift code from GitHub to restrict delta computation so that an
object that exists in one fork is not made into a delta against
another object that does not appear in the same forked repository.

* cc/delta-islands:
  pack-objects: move 'layer' into 'struct packing_data'
  pack-objects: move tree_depth into 'struct packing_data'
  t5320: tests for delta islands
  repack: add delta-islands support
  pack-objects: add delta-islands support
  pack-objects: refactor code into compute_layer_order()
  Add delta-islands.{c,h}
</content>
</entry>
<entry>
<title>repack: add delta-islands support</title>
<updated>2018-08-16T17:51:17Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2018-08-16T06:13:10Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=16d75fa48d535ae3f19b221638989cac955f42fb'/>
<id>urn:sha1:16d75fa48d535ae3f19b221638989cac955f42fb</id>
<content type='text'>
Implement simple support for --delta-islands option and
repack.useDeltaIslands config variable in git repack.

This allows users to setup delta islands in their config and
get the benefit of less disk usage while cloning and fetching
is still quite fast and not much more CPU intensive.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Christian Couder &lt;chriscool@tuxfamily.org&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>repack: repack promisor objects if -a or -A is set</title>
<updated>2018-08-09T16:17:39Z</updated>
<author>
<name>Jonathan Tan</name>
<email>jonathantanmy@google.com</email>
</author>
<published>2018-08-08T22:34:06Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=5d19e8138d5f24dbbe8d3736b4e57e117fc099b3'/>
<id>urn:sha1:5d19e8138d5f24dbbe8d3736b4e57e117fc099b3</id>
<content type='text'>
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 individually given, which takes care of deduplication and allows
the resulting packfiles to respect flags such as --max-pack-size.

Signed-off-by: Jonathan Tan &lt;jonathantanmy@google.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
