From: Nguyễn Thái Ngọc Duy Date: Thu, 26 Sep 2013 02:26:48 GMT Subject: [PATCH 09/10] repack: add --pack-version and fall back to core.preferredPackVersion Message-ID: <1380162409-18224-10-git-send-email-pclouds@gmail.com> In-Reply-To: <1380162409-18224-1-git-send-email-pclouds@gmail.com> Signed-off-by: Nguyễn Thái Ngọc Duy --- Documentation/git-repack.txt | 6 +++++- git-repack.sh | 8 +++++++- t/t7700-repack.sh | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/Documentation/git-repack.txt b/Documentation/git-repack.txt index 4c1aff6..c43eb4a 100644 --- a/Documentation/git-repack.txt +++ b/Documentation/git-repack.txt @@ -9,7 +9,7 @@ git-repack - Pack unpacked objects in a repository SYNOPSIS -------- [verse] -'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [--window=] [--depth=] +'git repack' [options] DESCRIPTION ----------- @@ -110,6 +110,10 @@ other objects in that pack they already have locally. The default is unlimited, unless the config variable `pack.packSizeLimit` is set. +--pack-version=:: + Force the version for the generated pack. + Valid values are 2 and 4. Default value is specified by + core.preferredPackVersion setting. See linkgit:git-config[1]. Configuration ------------- diff --git a/git-repack.sh b/git-repack.sh index 7579331..0d898eb 100755 --- a/git-repack.sh +++ b/git-repack.sh @@ -21,12 +21,13 @@ window= size of the window used for delta compression window-memory= same as the above, but limit memory size instead of entries count depth= limits the maximum delta depth max-pack-size= maximum size of each packfile +pack-version= format version of the output pack " SUBDIRECTORY_OK='Yes' . git-sh-setup no_update_info= all_into_one= remove_redundant= unpack_unreachable= -local= no_reuse= extra= +local= no_reuse= extra= packver= while test $# != 0 do case "$1" in @@ -43,6 +44,8 @@ do -l) local=--local ;; --max-pack-size|--window|--window-memory|--depth) extra="$extra $1=$2"; shift ;; + --pack-version) + packver="$2"; shift ;; --) shift; break;; *) usage ;; esac @@ -92,6 +95,9 @@ esac mkdir -p "$PACKDIR" || exit +[ -n "$packver" ] || packver="`git config --int core.preferredPackVersion`" +[ -n "$packver" ] && args="$args --version=$packver" + args="$args $local ${GIT_QUIET:+-q} $no_reuse$extra" names=$(git pack-objects --keep-true-parents --honor-pack-keep --non-empty --all --reflog $args ver.actual && + echo 4 >ver.expected && + test_cmp ver.expected ver.actual + ) +' + +test_expect_success 'repack --pack-version=4' ' + git init pv4.2 && + ( + unset GIT_TEST_PACKV4 && + cd pv4.2 && + test_commit one && + test_commit two && + test_commit three && + git repack -ad --pack-version=4 && + P=`ls .git/objects/pack/pack-*.pack` && + # Offset 4 is pack version + test-dump ntohl "$P" 4 >ver.actual && + echo 4 >ver.expected && + test_cmp ver.expected ver.actual + ) +' + test_done -- 1.8.2.82.gc24b958