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

[PATCH] repack: place temporary packs under .git/objects/pack/

From
Thomas Rast <trast@student.ethz.ch>
Date
Oct 19, 2010, 09:50 UTC
Message-ID
<cbdf4787ddaccd7105ab1661529a98257d61179b.1287481801.git.trast@student.ethz.ch>
In-Reply-To
<1287474040065-5649864.post@n2.nabble.com>

git-pack-objects is already careful to start out its temporary packs under .git/objects/pack/ (cf. 8b4eb6b, Do not perform cross-directory renames when creating packs, 2008-09-22), but git-repack did not respond in kind so the effort was lost when the filesystem boundary is exactly at that directory.

Let git-repack pass a path under .git/objects/pack/ as the base for its temporary packs.

This means we might need the $PACKDIR sooner (before the pack-objects invocation), so move the mkdir up just to be safe.

Also note that the only use of *.pack is in the find invocation way before the pack-objects call, so the temporary packs will not suddenly show up in any wildcards because of the directory change.

Reported-by: Marat Radchenko <marat@slonopotamus.org>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
 git-repack.sh |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/git-repack.sh b/git-repack.sh
index 769baaf..624feec 100755
--- a/git-repack.sh
+++ b/git-repack.sh
@@ -52,7 +52,7 @@ true)
 esac
 
 PACKDIR="$GIT_OBJECT_DIRECTORY/pack"
-PACKTMP="$GIT_OBJECT_DIRECTORY/.tmp-$$-pack"
+PACKTMP="$PACKDIR/.tmp-$$-pack"
 rm -f "$PACKTMP"-*
 trap 'rm -f "$PACKTMP"-*' 0 1 2 3 15
 
@@ -82,6 +82,8 @@ case ",$all_into_one," in
 	;;
 esac
 
+mkdir -p "$PACKDIR" || exit
+
 args="$args $local ${GIT_QUIET:+-q} $no_reuse$extra"
 names=$(git pack-objects --keep-true-parents --honor-pack-keep --non-empty --all --reflog $args </dev/null "$PACKTMP") ||
 	exit 1
@@ -90,7 +92,6 @@ if [ -z "$names" ]; then
 fi
 
 # Ok we have prepared all new packfiles.
-mkdir -p "$PACKDIR" || exit
 
 # First see if there are packs of the same name and if so
 # if we can move them out of the way (this can happen if we
-- 
1.7.3.1.271.ged4d2
Previous: Marat RadchenkoNext: Marat Radchenko
Message 5 of 7 in “[BUG] git repack fails if .git/objects/pack is on a separate partition”
  1. Marat RadchenkoOct 19, 2010
  2. Thomas RastOct 19, 2010
  3. Marat RadchenkoOct 19, 2010
  4. Marat RadchenkoOct 19, 2010
  5. repack: place temporary packs under .git/objects/pack/Thomas Rast, Oct 19, 2010
  6. Marat RadchenkoOct 19, 2010
  7. Junio C HamanoOct 19, 2010

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.