On Mon, Aug 17, 2009 at 04:21:22AM +0200, Mike Galbraith wrote: > > (1) Such a user does not necessarily know a casual "git repack -a" breaks > > the dependency, defeating the -s option s/he deliberately used in > > order to save disk space in the first place. Perhaps we can reword > > this further to kill two penguins with a single stone? > > Perhaps a runtime warning that you're about to break it? This user may > not even be the one who set the thing up, no? I'm not really sure what such a setup would look like. If it is a big hosting site like kernel.org or repo.or.cz, then probably it wouldn't matter much. The admins there should probably be running "git repack -l -d -A" periodically to consolidate the object stores (which can happen from this sort of repacking, or from people just pushing the same commits to their repos). That being said, I can see there being setups where such a warning might be useful. However, we don't really know if the user _wants_ that effect, or if it is an accident. So people following the recommnded "here is how you break the dependency" advice will also get the warning. I'm torn on whether this is actually a good idea. -- >8 -- Subject: [PATCH] repack: warn when "-l" is not used with alternates Failing to use "-l" means that we will copy objects from the source repository, nullifying the usefulness of "-s". We don't want to make this an error, though, since "git repack -a" is used to intentionally break the dependency. Signed-off-by: Jeff King <peff@xxxxxxxx> --- Is "test -s" portable? It's in POSIX, but I have some lingering doubt in the back of my mind. A user seeing such a warning can perhaps ^C to abort the pack. However, should we also give instructions on how to undo the copying (which should be "git repack -d -l -A")? git-repack.sh | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/git-repack.sh b/git-repack.sh index 1eb3bca..0bdc6e9 100755 --- a/git-repack.sh +++ b/git-repack.sh @@ -44,6 +44,15 @@ do shift done +if test -z "$local" && test -s "$GIT_DIR/objects/info/alternates"; then +cat >&2 <<'EOF' +warning: this repository uses objects from other repositories via the +warning: "alternates" mechanism; repacking without "-l" will cause objects +warning: to be copied into this repository, wasting disk space. + +EOF +fi + case "`git config --bool repack.usedeltabaseoffset || echo true`" in true) extra="$extra --delta-base-offset" ;; -- 1.6.4.283.ga2765.dirty -- 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