Re: How to stop sharing objects between repositories

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]