Merge branch 'tb/gc-recent-object-hook'
"git pack-objects" learned to invoke a new hook program that enumerates extra objects to be used as anchoring points to keep otherwise unreachable objects in cruft packs. * tb/gc-recent-object-hook: gc: introduce `gc.recentObjectsHook` reachable.c: extract `obj_is_recent()`
This commit is contained in:
@@ -130,6 +130,21 @@ or rebase occurring. Since these changes are not part of the current
|
||||
project most users will want to expire them sooner, which is why the
|
||||
default is more aggressive than `gc.reflogExpire`.
|
||||
|
||||
gc.recentObjectsHook::
|
||||
When considering whether or not to remove an object (either when
|
||||
generating a cruft pack or storing unreachable objects as
|
||||
loose), use the shell to execute the specified command(s).
|
||||
Interpret their output as object IDs which Git will consider as
|
||||
"recent", regardless of their age. By treating their mtimes as
|
||||
"now", any objects (and their descendants) mentioned in the
|
||||
output will be kept regardless of their true age.
|
||||
+
|
||||
Output must contain exactly one hex object ID per line, and nothing
|
||||
else. Objects which cannot be found in the repository are ignored.
|
||||
Multiple hooks are supported, but all must exit successfully, else the
|
||||
operation (either generating a cruft pack or unpacking unreachable
|
||||
objects) will be halted.
|
||||
|
||||
gc.rerereResolved::
|
||||
Records of conflicted merge you resolved earlier are
|
||||
kept for this many days when 'git rerere gc' is run.
|
||||
|
||||
Reference in New Issue
Block a user