From: drafnel@gmail.com
To: git@vger.kernel.org
Cc: gitster@pobox.com, nico@cam.org, spearce@spearce.org,
Brandon Casey <drafnel@gmail.com>
Subject: [PATCH 3/3] pack-objects: honor '.keep' files
Date: Sun, 2 Nov 2008 10:31:17 -0600 [thread overview]
Message-ID: <4002818.1225643406819.JavaMail.teamon@b303.teamon.com> (raw)
In-Reply-To: <1225643477-32319-2-git-send-email-foo@foo.com>
From: Brandon Casey <drafnel@gmail.com>
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 <drafnel@gmail.com>
---
This seems to be the correct fix.
I thought about two alternatives:
1) New option to pack-objects which causes it to honor .keep files
I didn't think this was necessary since that is why we have .keep
files in the first place.
So, now there are three variants:
Neither --incremental or --local is used)
Ignore repo packs, pack is created using all objects specified by
user.
--incremental is used)
Look at repo packs, exclude already packed objects (including those
marked with .keep file)
--local is used)
Look at repo packs, exclude objects in non-local packs (including local
objects marked with .keep file)
2) Always honor .keep files, even when --incremental or --local is
not specified.
I think this may be counter-intuitive, since if you specify all of
the objects explicitly, without using any other options, you expect
all of those objects to be placed into the created pack file. If
.keep is always honored, then a new option would be required to
indicate ignoring .keep files, or we would adopt the platform that
"the user must just remove the .keep file".
So, honoring .keep files only with --incremental (which is a side effect) or
--local seems to be the most appropriate.
Comments welcome.
-brandon
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 6a8b9bf..5199e54 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 && !ispacklocal(p))
+ if (local && (!ispacklocal(p) || haspackkeep(p)))
return 0;
}
}
diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh
index 1489e68..b6b02da 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.2.588.g3102
next prev parent reply other threads:[~2008-11-02 16:31 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-31 19:32 getting list of objects for packing Brandon Casey
2008-10-31 20:40 ` Nicolas Pitre
2008-10-31 20:48 ` Brandon Casey
2008-10-31 21:30 ` Junio C Hamano
2008-10-31 21:40 ` Brandon Casey
2008-10-31 22:23 ` Jakub Narebski
2008-11-01 0:00 ` Brandon Casey
2008-11-02 3:35 ` [PATCH] t7700: demonstrate mishandling of objects in packs with a .keep file drafnel
2008-11-02 16:31 ` [PATCH 1/3] packed_git: convert pack_local flag into generic bit mask drafnel
2008-11-03 16:12 ` Shawn O. Pearce
2008-11-03 18:24 ` Brandon Casey
2008-11-03 20:37 ` [PATCH v2 1/3] t7700: demonstrate mishandling of objects in packs with a .keep file Brandon Casey
2008-11-03 20:41 ` [PATCH v2 2/3] packed_git: convert pack_local flag into a bitfield and add pack_keep Brandon Casey
2008-11-03 20:43 ` [PATCH v2 3/3] pack-objects: honor '.keep' files Brandon Casey
2008-11-03 20:49 ` Shawn O. Pearce
2008-11-05 22:37 ` Brandon Casey
2008-11-06 23:22 ` Brandon Casey
2008-11-07 0:30 ` Junio C Hamano
2008-11-07 1:17 ` Brandon Casey
2008-11-07 8:12 ` Andreas Ericsson
2008-11-07 19:25 ` Shawn O. Pearce
2008-11-10 5:59 ` recognize loose local objects during repack drafnel
2008-11-10 21:03 ` Junio C Hamano
[not found] ` <1226296798-31522-1-git-send-email-foo@foo.com>
2008-11-10 5:59 ` [PATCH 1/3] t7700: demonstrate mishandling of loose objects in an alternate ODB drafnel
[not found] ` <1226296798-31522-2-git-send-email-foo@foo.com>
2008-11-10 5:59 ` [PATCH 2/3] sha1_file.c: split has_loose_object() into local and non-local counterparts drafnel
[not found] ` <1226296798-31522-3-git-send-email-foo@foo.com>
2008-11-10 5:59 ` [PATCH 3/3] pack-objects: extend --local to mean ignore non-local loose objects too drafnel
2008-11-07 1:52 ` [PATCH 1/4] pack-objects: new option --honor-pack-keep Brandon Casey
2008-11-07 1:54 ` [PATCH 2/4] repack: don't repack local objects in packs with .keep file Brandon Casey
2008-11-07 1:55 ` [PATCH 3/4] repack: do not fall back to incremental repacking with [-a|-A] Brandon Casey
2008-11-07 1:56 ` [PATCH 4/4] builtin-gc.c: use new pack_keep bitfield to detect .keep file existence Brandon Casey
2008-11-07 8:14 ` [PATCH 2/4] repack: don't repack local objects in packs with .keep file Andreas Ericsson
2008-11-07 8:13 ` [PATCH 1/4] pack-objects: new option --honor-pack-keep Andreas Ericsson
2008-11-03 22:14 ` [PATCH v3] t7700: demonstrate mishandling of objects in packs with a .keep file Brandon Casey
2008-11-04 19:17 ` [PATCH v2 1/3] " Andreas Ericsson
2008-11-04 19:49 ` Brandon Casey
2008-11-04 19:55 ` Junio C Hamano
2008-11-04 20:01 ` Brandon Casey
2008-11-04 20:21 ` Andreas Ericsson
2008-11-04 23:55 ` Junio C Hamano
2008-11-12 8:09 ` Jeff King
2008-11-12 17:10 ` Junio C Hamano
2008-11-12 19:17 ` Jeff King
2008-11-12 17:30 ` Brandon Casey
2008-11-12 17:59 ` repack and .keep series Brandon Casey
2008-11-12 17:59 ` [PATCH 1/6] t7700: demonstrate mishandling of objects in packs with a .keep file Brandon Casey
2008-11-12 17:59 ` [PATCH 2/6] packed_git: convert pack_local flag into a bitfield and add pack_keep Brandon Casey
2008-11-12 17:59 ` [PATCH 3/6] pack-objects: new option --honor-pack-keep Brandon Casey
2008-11-12 17:59 ` [PATCH 4/6] repack: don't repack local objects in packs with .keep file Brandon Casey
2008-11-12 17:59 ` [PATCH 5/6] repack: do not fall back to incremental repacking with [-a|-A] Brandon Casey
2008-11-12 17:59 ` [PATCH 6/6] builtin-gc.c: use new pack_keep bitfield to detect .keep file existence Brandon Casey
2008-11-13 0:50 ` [PATCH] t7700: test that 'repack -a' packs alternate packed objects Brandon Casey
2008-11-12 18:10 ` [PATCH v2 1/3] t7700: demonstrate mishandling of objects in packs with a .keep file Junio C Hamano
2008-11-12 18:19 ` Junio C Hamano
[not found] ` <1225643477-32319-1-git-send-email-foo@foo.com>
2008-11-02 16:31 ` [PATCH 2/3] packed_git: add new PACK_KEEP flag and haspackkeep() access macro drafnel
[not found] ` <1225643477-32319-2-git-send-email-foo@foo.com>
2008-11-02 16:31 ` drafnel [this message]
2008-11-03 16:17 ` [PATCH 3/3] pack-objects: honor '.keep' files Shawn O. Pearce
2008-11-03 10:35 ` [PATCH] t7700: demonstrate mishandling of objects in packs with a .keep file Andreas Ericsson
2008-11-03 18:20 ` Brandon Casey
2008-11-03 20:25 ` Andreas Ericsson
2008-11-03 22:02 ` Brandon Casey
2008-11-04 19:25 ` Andreas Ericsson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4002818.1225643406819.JavaMail.teamon@b303.teamon.com \
--to=drafnel@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=nico@cam.org \
--cc=spearce@spearce.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).