git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 3/3] Add "-l" flag for repacking only local packs
@ 2005-10-13 21:30 Linus Torvalds
  0 siblings, 0 replies; only message in thread
From: Linus Torvalds @ 2005-10-13 21:30 UTC (permalink / raw)
  To: Junio C Hamano, Git Mailing List


This uses the new "--local" flag to git-pack-objects.  It currently only
makes a difference together with "-a", since a normal incremental repack
won't pack any packed objects at all (whether local or remote). 

Eventually, it might end up skipping any objects that aren't local to
the current object directory, but for now it only knows to skip packed
objects. 

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---

Ok, that was the last of it. I tested it out by doing a

	git clone -l -s git newgit
	cd newgit
	.. do a dummy commit ..
	git repack -a -d -l

and then

	cd ../git
	git repack -a -d

	cd ../newgit
	git repack -a -d -l

and verified that the repacks in "newgit" all seemed to do the right thing 
(ie they only repacked objects that weren't packed in the original git, 
and repacking the original git archive caused the repack in the new one to 
shrink considerably).

This means that my suggested automatic repacking should work fine with 
alternate object directories too, except my second script (the periodic 
full repack) would needs to be updated to use the new "-l" flag.

diff --git a/git-repack.sh b/git-repack.sh
index b395d0e..49547a7 100755
--- a/git-repack.sh
+++ b/git-repack.sh
@@ -5,13 +5,14 @@
 
 . git-sh-setup || die "Not a git archive"
 	
-no_update_info= all_into_one= remove_redundant=
+no_update_info= all_into_one= remove_redundant= local=
 while case "$#" in 0) break ;; esac
 do
 	case "$1" in
 	-n)	no_update_info=t ;;
 	-a)	all_into_one=t ;;
 	-d)	remove_redandant=t ;;
+	-l)	local=t ;;
 	*)	break ;;
 	esac
 	shift
@@ -37,6 +38,9 @@ case ",$all_into_one," in
 	    find . -type f \( -name '*.pack' -o -name '*.idx' \) -print`
 	;;
 esac
+if [ "$local" ]; then
+	pack_objects="$pack_objects --local"
+fi
 name=$(git-rev-list --objects $rev_list $(git-rev-parse $rev_parse) |
 	git-pack-objects --non-empty $pack_objects .tmp-pack) ||
 	exit 1

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2005-10-13 21:30 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-10-13 21:30 [PATCH 3/3] Add "-l" flag for repacking only local packs Linus Torvalds

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).