Re: [Alt. PATCH 1/2] repack: add -F flag to let user choose between --no-reuse-delta/object
On Mon, 27 Sep 2010, Jan Krüger wrote:
Show 20 quoted lines
> In 479b56ba ('make "repack -f" imply "pack-objects --no-reuse-object"'),
> git repack -f was changed to include recompressing all objects on the
> zlib level on the assumption that if the user wants to spend that much
> time already, some more time won't hurt (and recompressing is useful if
> the user changed the zlib compression level).
>
> However, "some more time" can be quite long with very big repositories,
> so some users are going to appreciate being able to choose. If we are
> going to give them the choice, --no-reuse-object will probably be
> interesting a lot less frequently than --no-reuse-delta. Hence, this
> reverts -f to the old behaviour (--no-reuse-delta) and adds a new -F
> option that replaces the current -f.
>
> Measurements taken using this patch on a current clone of git.git
> indicate a 17% decrease in time being made available to users:
>
> git repack -Adf 34.84s user 0.56s system 145% cpu 24.388 total
> git repack -AdF 38.79s user 0.56s system 133% cpu 29.394 total
>
> Signed-off-by: Jan Krüger <jk@jk.gs>Acked-by: Nicolas Pitre <nico@fluxnic.net>
Show 72 quoted lines
> ---
>
> --- Nicolas Pitre <nico@fluxnic.net> wrote:
>
> > I personally don't find --no-reuse-object particularly useful. I
> > hardly imagine that people are changing the pack compression level
> > that often if at all. So I doubt moving the current
> > --no-reuse-object behavior to -F and reverting -f to
> > --no-reuse-delta would cause any serious inconvenience. It certainly
> > won't _break_ anything. So you have my ACK to do that change.
>
> Here we go.
>
> Documentation/git-repack.txt | 6 +++++-
> git-repack.sh | 6 ++++--
> 2 files changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/git-repack.txt b/Documentation/git-repack.txt
> index 8c67d17..9566727 100644
> --- a/Documentation/git-repack.txt
> +++ b/Documentation/git-repack.txt
> @@ -8,7 +8,7 @@ git-repack - Pack unpacked objects in a repository
>
> SYNOPSIS
> --------
> -'git repack' [-a] [-A] [-d] [-f] [-l] [-n] [-q] [--window=N] [--depth=N]
> +'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [--window=N] [--depth=N]
>
> DESCRIPTION
> -----------
> @@ -62,6 +62,10 @@ other objects in that pack they already have locally.
> linkgit:git-pack-objects[1].
>
> -f::
> + Pass the `--no-reuse-delta` option to `git-pack-objects`, see
> + linkgit:git-pack-objects[1].
> +
> +-F::
> Pass the `--no-reuse-object` option to `git-pack-objects`, see
> linkgit:git-pack-objects[1].
>
> diff --git a/git-repack.sh b/git-repack.sh
> index 1eb3bca..769baaf 100755
> --- a/git-repack.sh
> +++ b/git-repack.sh
> @@ -10,7 +10,8 @@ git repack [options]
> a pack everything in a single pack
> A same as -a, and turn unreachable objects loose
> d remove redundant packs, and run git-prune-packed
> -f pass --no-reuse-object to git-pack-objects
> +f pass --no-reuse-delta to git-pack-objects
> +F pass --no-reuse-object to git-pack-objects
> n do not run git-update-server-info
> q,quiet be quiet
> l pass --local to git-pack-objects
> @@ -34,7 +35,8 @@ do
> unpack_unreachable=--unpack-unreachable ;;
> -d) remove_redundant=t ;;
> -q) GIT_QUIET=t ;;
> - -f) no_reuse=--no-reuse-object ;;
> + -f) no_reuse=--no-reuse-delta ;;
> + -F) no_reuse=--no-reuse-object ;;
> -l) local=--local ;;
> --max-pack-size|--window|--window-memory|--depth)
> extra="$extra $1=$2"; shift ;;
> --
> 1.7.2.3.392.g02377.dirty
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>