aboutsummaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2023-09-07 15:06:07 -0700
committerJunio C Hamano <gitster@pobox.com>2023-09-07 15:06:07 -0700
commit8af5aac98667dfcce8ebe6efdb8df8aa0d134fb1 (patch)
tree11e43de8991e177be6d3eae34794e877f64b3fda /Documentation
parent1fc548b2d6a3596f3e1c1f8b1930d8dbd1e30bf3 (diff)
parentc0b5d46ded46bf6e2cf4bb5325e4bf43374dd1ed (diff)
downloadgit-8af5aac98667dfcce8ebe6efdb8df8aa0d134fb1.tar.xz
Merge branch 'tb/multi-cruft-pack'
Use of --max-pack-size to allow multiple packfiles to be created is now supported even when we are sending unreachable objects to cruft packs. * tb/multi-cruft-pack: Documentation/gitformat-pack.txt: drop mixed version section Documentation/gitformat-pack.txt: remove multi-cruft packs alternative builtin/pack-objects.c: support `--max-pack-size` with `--cruft` builtin/pack-objects.c: remove unnecessary strbuf_reset()
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/git-pack-objects.txt4
-rw-r--r--Documentation/gitformat-pack.txt36
2 files changed, 2 insertions, 38 deletions
diff --git a/Documentation/git-pack-objects.txt b/Documentation/git-pack-objects.txt
index a9995a932c..dea7eacb0f 100644
--- a/Documentation/git-pack-objects.txt
+++ b/Documentation/git-pack-objects.txt
@@ -116,9 +116,7 @@ unreachable object whose mtime is newer than the `--cruft-expiration`).
+
Incompatible with `--unpack-unreachable`, `--keep-unreachable`,
`--pack-loose-unreachable`, `--stdin-packs`, as well as any other
-options which imply `--revs`. Also incompatible with `--max-pack-size`;
-when this option is set, the maximum pack size is not inferred from
-`pack.packSizeLimit`.
+options which imply `--revs`.
--cruft-expiration=<approxidate>::
If specified, objects are eliminated from the cruft pack if they
diff --git a/Documentation/gitformat-pack.txt b/Documentation/gitformat-pack.txt
index 0c1be2dbe8..870e00f298 100644
--- a/Documentation/gitformat-pack.txt
+++ b/Documentation/gitformat-pack.txt
@@ -588,51 +588,17 @@ later on.
It is linkgit:git-gc[1] that is typically responsible for removing expired
unreachable objects.
-=== Caution for mixed-version environments
-
-Repositories that have cruft packs in them will continue to work with any older
-version of Git. Note, however, that previous versions of Git which do not
-understand the `.mtimes` file will use the cruft pack's mtime as the mtime for
-all of the objects in it. In other words, do not expect older (pre-cruft pack)
-versions of Git to interpret or even read the contents of the `.mtimes` file.
-
-Note that having mixed versions of Git GC-ing the same repository can lead to
-unreachable objects never being completely pruned. This can happen under the
-following circumstances:
-
- - An older version of Git running GC explodes the contents of an existing
- cruft pack loose, using the cruft pack's mtime.
- - A newer version running GC collects those loose objects into a cruft pack,
- where the .mtime file reflects the loose object's actual mtimes, but the
- cruft pack mtime is "now".
-
-Repeating this process will lead to unreachable objects not getting pruned as a
-result of repeatedly resetting the objects' mtimes to the present time.
-
-If you are GC-ing repositories in a mixed version environment, consider omitting
-the `--cruft` option when using linkgit:git-repack[1] and linkgit:git-gc[1], and
-setting the `gc.cruftPacks` configuration to "false" until all writers
-understand cruft packs.
-
=== Alternatives
Notable alternatives to this design include:
- - The location of the per-object mtime data, and
- - Storing unreachable objects in multiple cruft packs.
+ - The location of the per-object mtime data.
On the location of mtime data, a new auxiliary file tied to the pack was chosen
to avoid complicating the `.idx` format. If the `.idx` format were ever to gain
support for optional chunks of data, it may make sense to consolidate the
`.mtimes` format into the `.idx` itself.
-Storing unreachable objects among multiple cruft packs (e.g., creating a new
-cruft pack during each repacking operation including only unreachable objects
-which aren't already stored in an earlier cruft pack) is significantly more
-complicated to construct, and so aren't pursued here. The obvious drawback to
-the current implementation is that the entire cruft pack must be re-written from
-scratch.
-
GIT
---
Part of the linkgit:git[1] suite