git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] Add "-l" flag for repacking only local packs

From
Linus Torvalds <torvalds@osdl.org>
Date
Oct 13, 2005, 21:30 UTC
Message-ID
<Pine.LNX.4.64.0510131427030.23590@g5.osdl.org>

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
Message 1 of 1 in “Add "-l" flag for repacking only local packs”
  1. 3/3 Add "-l" flag for repacking only local packsLinus Torvalds, Oct 13, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.