Merge branch 'bc/maint-keep-pack' into maint
* bc/maint-keep-pack: repack: only unpack-unreachable if we are deleting redundant packs t7700: test that 'repack -a' packs alternate packed objects pack-objects: extend --local to mean ignore non-local loose objects too sha1_file.c: split has_loose_object() into local and non-local counterparts t7700: demonstrate mishandling of loose objects in an alternate ODB builtin-gc.c: use new pack_keep bitfield to detect .keep file existence repack: do not fall back to incremental repacking with [-a|-A] repack: don't repack local objects in packs with .keep file pack-objects: new option --honor-pack-keep packed_git: convert pack_local flag into a bitfield and add pack_keep t7700: demonstrate mishandling of objects in packs with a .keep file
This commit is contained in:
@ -71,6 +71,7 @@ static int reuse_delta = 1, reuse_object = 1;
|
||||
static int keep_unreachable, unpack_unreachable, include_tag;
|
||||
static int local;
|
||||
static int incremental;
|
||||
static int ignore_packed_keep;
|
||||
static int allow_ofs_delta;
|
||||
static const char *base_name;
|
||||
static int progress = 1;
|
||||
@ -698,6 +699,9 @@ static int add_object_entry(const unsigned char *sha1, enum object_type type,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!exclude && local && has_loose_object_nonlocal(sha1))
|
||||
return 0;
|
||||
|
||||
for (p = packed_git; p; p = p->next) {
|
||||
off_t offset = find_pack_entry_one(sha1, p);
|
||||
if (offset) {
|
||||
@ -711,6 +715,8 @@ static int add_object_entry(const unsigned char *sha1, enum object_type type,
|
||||
return 0;
|
||||
if (local && !p->pack_local)
|
||||
return 0;
|
||||
if (ignore_packed_keep && p->pack_local && p->pack_keep)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2050,6 +2056,10 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
|
||||
incremental = 1;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp("--honor-pack-keep", arg)) {
|
||||
ignore_packed_keep = 1;
|
||||
continue;
|
||||
}
|
||||
if (!prefixcmp(arg, "--compression=")) {
|
||||
char *end;
|
||||
int level = strtoul(arg+14, &end, 0);
|
||||
|
||||
Reference in New Issue
Block a user