Skip to content

Commit

Permalink
Merge branch 'jc/pack-reuse'
Browse files Browse the repository at this point in the history
* jc/pack-reuse:
  pack-objects: avoid delta chains that are too long.
  git-repack: allow passing a couple of flags to pack-objects.
  pack-objects: finishing touches.
  pack-objects: reuse data from existing packs.
  • Loading branch information
Junio C Hamano committed Feb 22, 2006
2 parents ee07226 + e4c9327 commit 155d129
Show file tree
Hide file tree
Showing 6 changed files with 442 additions and 73 deletions.
21 changes: 20 additions & 1 deletion Documentation/git-pack-objects.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ git-pack-objects - Create a packed archive of objects.

SYNOPSIS
--------
'git-pack-objects' [--non-empty] [--local] [--incremental] [--window=N] [--depth=N] {--stdout | base-name} < object-list
[verse]
'git-pack-objects' [-q] [--no-reuse-delta] [--non-empty]
[--local] [--incremental] [--window=N] [--depth=N]
{--stdout | base-name} < object-list


DESCRIPTION
Expand All @@ -32,6 +35,10 @@ Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or
any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)
enables git to read from such an archive.

In a packed archive, an object is either stored as a compressed
whole, or as a difference from some other object. The latter is
often called a delta.


OPTIONS
-------
Expand Down Expand Up @@ -74,6 +81,18 @@ base-name::
Only create a packed archive if it would contain at
least one object.

-q::
This flag makes the command not to report its progress
on the standard error stream.

--no-reuse-delta::
When creating a packed archive in a repository that
has existing packs, the command reuses existing deltas.
This sometimes results in a slightly suboptimal pack.
This flag tells the command not to reuse existing deltas
but compute them from scratch.


Author
------
Written by Linus Torvalds <torvalds@osdl.org>
Expand Down
10 changes: 9 additions & 1 deletion Documentation/git-repack.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ objects into pack files.

SYNOPSIS
--------
'git-repack' [-a] [-d] [-l] [-n]
'git-repack' [-a] [-d] [-f] [-l] [-n] [-q]

DESCRIPTION
-----------
Expand Down Expand Up @@ -43,6 +43,14 @@ OPTIONS
Pass the `--local` option to `git pack-objects`, see
gitlink:git-pack-objects[1].

-f::
Pass the `--no-reuse-delta` option to `git pack-objects`, see
gitlink:git-pack-objects[1].

-q::
Pass the `-q` option to `git pack-objects`, see
gitlink:git-pack-objects[1].

-n::
Do not update the server information with
`git update-server-info`.
Expand Down
13 changes: 7 additions & 6 deletions git-repack.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,20 @@
# Copyright (c) 2005 Linus Torvalds
#

USAGE='[-a] [-d] [-l] [-n]'
USAGE='[-a] [-d] [-f] [-l] [-n] [-q]'
. git-sh-setup

no_update_info= all_into_one= remove_redundant= local=
no_update_info= all_into_one= remove_redundant=
local= quiet= no_reuse_delta=
while case "$#" in 0) break ;; esac
do
case "$1" in
-n) no_update_info=t ;;
-a) all_into_one=t ;;
-d) remove_redundant=t ;;
-l) local=t ;;
-q) quiet=-q ;;
-f) no_reuse_delta=--no-reuse-delta ;;
-l) local=--local ;;
*) usage ;;
esac
shift
Expand All @@ -39,9 +42,7 @@ case ",$all_into_one," in
find . -type f \( -name '*.pack' -o -name '*.idx' \) -print`
;;
esac
if [ "$local" ]; then
pack_objects="$pack_objects --local"
fi
pack_objects="$pack_objects $local $quiet $no_reuse_delta"
name=$(git-rev-list --objects $rev_list $(git-rev-parse $rev_parse) 2>&1 |
git-pack-objects --non-empty $pack_objects .tmp-pack) ||
exit 1
Expand Down
Loading

0 comments on commit 155d129

Please sign in to comment.