[PATCH v2 0/3] repack: pack everything into promisor packfile in partial repos

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



As suggested by Jonathan[1], there are number of ways to fix this issue.
We have already explored some of them in this thread, and so far none of them
is satisfiable. Calvin and I tried to address the problem from fetch-pack side
and rev-list side. But the fix either consumes too much CPU power or results
in inefficient bandwidth use.

So let's attack the problem from repack side. The goal is to prevent repack
from discarding local objects, previously it is done by carefully
separating promisor objects and normal objects in rev-list.
The implementation is flawed and no solution have been found so far.
Instead, we can get ride of rev-list and just pack everything into promisor
files. This way, no objects would be lost.

By using 'repack everything', repacking requires less work and we are not
using more bandwidth.

Packing local objects into promisor packfiles means that it is no longer
possible to detect if an object is missing due to repository corruption
or because we need to fetch it from a promisor remote.

Promisor objects packing does not benefiting from the history and
path based delta calculation, and GC does not remove unreachable promisor
objects. By packing locally created normal objects into promisor packfile,
normal objects are converted into promisor objects. However, in partial cloned
repos, the number of locally created objects are small compared to promisor
objects. The impact should be negligible.

[1] https://lore.kernel.org/git/20240813004508.2768102-1-jonathantanmy@xxxxxxxxxx/

*** Changes since v1 ***
Added tradeoffs in cover letter.
Fixed some partial clone test cases.
Updated partial clone documentation.

Han Young (3):
  repack: pack everything into packfile
  t0410: adapt tests to repack changes
  partial-clone: update doc

 Documentation/technical/partial-clone.txt |  16 +-
 builtin/repack.c                          | 257 ++++++++++++----------
 t/t0410-partial-clone.sh                  |  68 +-----
 t/t5616-partial-clone.sh                  |   9 +-
 4 files changed, 157 insertions(+), 193 deletions(-)

-- 
2.46.0





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux