From: Brandon Casey <drafnel@xxxxxxxxx> By default, pack-objects creates a pack file with every object specified by the user. There are two options which can be used to exclude objects which are accessible by the repository. 1) --incremental This excludes any object which already exists in an accessible pack. 2) --local This excludes any object which exists in a non-local pack. With this patch, both arguments also cause objects which exist in packs marked with a .keep file to be excluded. Only the --local option requires an explicit check for the .keep file. If the user doesn't want the objects in a pack marked with .keep to be exclude, then the .keep file should be removed. Additionally, this fixes the repack bug which allowed porcelain repack to create packs which contained objects already contained in existing packs marked with a .keep file. Signed-off-by: Brandon Casey <casey@xxxxxxxxxxxxxxx> --- builtin-pack-objects.c | 2 +- t/t7700-repack.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c index 15b80db..8be9113 100644 --- a/builtin-pack-objects.c +++ b/builtin-pack-objects.c @@ -701,7 +701,7 @@ static int add_object_entry(const unsigned char *sha1, enum object_type type, break; if (incremental) return 0; - if (local && !p->pack_local) + if (local && (!p->pack_local || p->pack_keep)) return 0; } } diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh index 27af5ab..5b1cd05 100755 --- a/t/t7700-repack.sh +++ b/t/t7700-repack.sh @@ -4,7 +4,7 @@ test_description='git repack works correctly' . ./test-lib.sh -test_expect_failure 'objects in packs marked .keep are not repacked' ' +test_expect_success 'objects in packs marked .keep are not repacked' ' echo content1 > file1 && echo content2 > file2 && git add . && -- 1.6.0.3.552.g12334 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html