git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@osdl.org>
To: Junio C Hamano <junkio@cox.net>, Git Mailing List <git@vger.kernel.org>
Subject: [PATCH 3/3] Add "-l" flag for repacking only local packs
Date: Thu, 13 Oct 2005 14:30:29 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.4.64.0510131427030.23590@g5.osdl.org> (raw)


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

                 reply	other threads:[~2005-10-13 21:30 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=Pine.LNX.4.64.0510131427030.23590@g5.osdl.org \
    --to=torvalds@osdl.org \
    --cc=git@vger.kernel.org \
    --cc=junkio@cox.net \
    /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).