diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-03 15:34:04 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-03 15:34:04 -0700 |
commit | 5f3de58ff85c49620ae2a1722d8d4d37c881a054 (patch) | |
tree | 2e5e2af01f66371e743eee0fefd4573d5ef6609e /git-repack-script | |
parent | 2396ec85bd167b87e21edbd3a64d46eeb19d6a5d (diff) | |
download | git-5f3de58ff85c49620ae2a1722d8d4d37c881a054.tar.gz git-5f3de58ff85c49620ae2a1722d8d4d37c881a054.tar.xz |
Make the name of a pack-file depend on the objects packed there-in.
This means that the .git/objects/pack directory is also rsync'able,
since the filenames created there-in are either unique or refer to the
same data.
Otherwise you might not be able to pull from a directory that is partly
packed without having to worry about missing objects due to pack-file
name clashes.
Diffstat (limited to 'git-repack-script')
-rw-r--r-- | git-repack-script | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/git-repack-script b/git-repack-script index ce35235b5..92281c27f 100644 --- a/git-repack-script +++ b/git-repack-script @@ -1,18 +1,13 @@ #!/bin/sh : ${GIT_DIR=.git} : ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"} -packname=$(date +"pack-%s") -if [ -f "$GIT_OBJECT_DIRECTORY/pack/$packname.idx" ]; then - echo Pack $packname already exists +rm -f .tmp-pack-* +packname=$(git-rev-list --unpacked --objects $(git-rev-parse --all) | + git-pack-objects --non-empty --incremental .tmp-pack) || exit 1 -fi -rm -f $packname.idx $packname.pack -git-rev-list --unpacked --objects $(git-rev-parse --all) | - git-pack-objects --non-empty --incremental $packname || - exit 1 - -if [ ! -f $packname.idx ]; then +if [ -z "$packname" ]; then echo Nothing new to pack exit 0 fi -mv $packname.idx $packname.pack "$GIT_OBJECT_DIRECTORY/pack/" +mv .tmp-pack-$packname.pack "$GIT_OBJECT_DIRECTORY/pack/pack-$packname.pack" +mv .tmp-pack-$packname.idx "$GIT_OBJECT_DIRECTORY/pack/pack-$packname.idx" |