pack-objects: new option --honor-pack-keep

This adds a new option to pack-objects which will cause it to ignore an
object which appears in a local pack which has a .keep file, even if it
was specified for packing.

This option will be used by the porcelain repack.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Brandon Casey 2008-11-12 11:59:04 -06:00 committed by Junio C Hamano
parent 8d25931d6f
commit e96fb9b8f9
2 changed files with 12 additions and 0 deletions

View File

@ -109,6 +109,11 @@ base-name::
The default is unlimited, unless the config variable The default is unlimited, unless the config variable
`pack.packSizeLimit` is set. `pack.packSizeLimit` is set.


--honor-pack-keep::
This flag causes an object already in a local pack that
has a .keep file to be ignored, even if it appears in the
standard input.

--incremental:: --incremental::
This flag causes an object already in a pack ignored This flag causes an object already in a pack ignored
even if it appears in the standard input. even if it appears in the standard input.

View File

@ -71,6 +71,7 @@ static int reuse_delta = 1, reuse_object = 1;
static int keep_unreachable, unpack_unreachable, include_tag; static int keep_unreachable, unpack_unreachable, include_tag;
static int local; static int local;
static int incremental; static int incremental;
static int ignore_packed_keep;
static int allow_ofs_delta; static int allow_ofs_delta;
static const char *base_name; static const char *base_name;
static int progress = 1; static int progress = 1;
@ -703,6 +704,8 @@ static int add_object_entry(const unsigned char *sha1, enum object_type type,
return 0; return 0;
if (local && !p->pack_local) if (local && !p->pack_local)
return 0; return 0;
if (ignore_packed_keep && p->pack_local && p->pack_keep)
return 0;
} }
} }


@ -2042,6 +2045,10 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
incremental = 1; incremental = 1;
continue; continue;
} }
if (!strcmp("--honor-pack-keep", arg)) {
ignore_packed_keep = 1;
continue;
}
if (!prefixcmp(arg, "--compression=")) { if (!prefixcmp(arg, "--compression=")) {
char *end; char *end;
int level = strtoul(arg+14, &end, 0); int level = strtoul(arg+14, &end, 0);