Skip to content

Commit

Permalink
git-pack-refs --all
Browse files Browse the repository at this point in the history
This changes 'git-pack-refs' to pack only tags by default.
Branches are meant to be updated, either by committing onto it
yourself or tracking remote branches, and packed entries can
become stale easily, but tags are usually "create once and live
forever" and benefit more from packing.

Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Junio C Hamano committed Oct 8, 2006
1 parent 4057deb commit b3d4204
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 10 deletions.
9 changes: 7 additions & 2 deletions builtin-pack-refs.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#include "refs.h"

static const char builtin_pack_refs_usage[] =
"git-pack-refs [--prune]";
"git-pack-refs [--all] [--prune]";

struct ref_to_prune {
struct ref_to_prune *next;
Expand Down Expand Up @@ -68,6 +68,7 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix)
{
int fd, i;
struct pack_refs_cb_data cbdata;
int (*iterate_ref)(each_ref_fn, void *) = for_each_tag_ref;

memset(&cbdata, 0, sizeof(cbdata));

Expand All @@ -77,6 +78,10 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix)
cbdata.prune = 1;
continue;
}
if (!strcmp(arg, "--all")) {
iterate_ref = for_each_ref;
continue;
}
/* perhaps other parameters later... */
break;
}
Expand All @@ -88,7 +93,7 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix)
if (!cbdata.refs_file)
die("unable to create ref-pack file structure (%s)",
strerror(errno));
for_each_ref(handle_one_ref, &cbdata);
iterate_ref(handle_one_ref, &cbdata);
fflush(cbdata.refs_file);
fsync(fd);
fclose(cbdata.refs_file);
Expand Down
16 changes: 8 additions & 8 deletions t/t3210-pack-refs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ test_expect_success \
test_expect_success \
'see if a branch still exists when packed' \
'git-branch b &&
git-pack-refs &&
git-pack-refs --all &&
rm .git/refs/heads/b &&
echo "$SHA1 refs/heads/b" >expect &&
git-show-ref b >result &&
Expand All @@ -40,37 +40,37 @@ test_expect_success \
test_expect_failure \
'git branch c/d should barf if branch c exists' \
'git-branch c &&
git-pack-refs &&
git-pack-refs --all &&
rm .git/refs/heads/c &&
git-branch c/d'

test_expect_success \
'see if a branch still exists after git pack-refs --prune' \
'git-branch e &&
git-pack-refs --prune &&
git-pack-refs --all --prune &&
echo "$SHA1 refs/heads/e" >expect &&
git-show-ref e >result &&
diff expect result'

test_expect_failure \
'see if git pack-refs --prune remove ref files' \
'git-branch f &&
git-pack-refs --prune &&
git-pack-refs --all --prune &&
ls .git/refs/heads/f'

test_expect_success \
'git branch g should work when git branch g/h has been deleted' \
'git-branch g/h &&
git-pack-refs --prune &&
git-pack-refs --all --prune &&
git-branch -d g/h &&
git-branch g &&
git-pack-refs &&
git-pack-refs --all &&
git-branch -d g'

test_expect_failure \
'git branch i/j/k should barf if branch i exists' \
'git-branch i &&
git-pack-refs --prune &&
git-pack-refs --all --prune &&
git-branch i/j/k'

test_expect_success \
Expand All @@ -90,7 +90,7 @@ test_expect_success \
git-branch -d n/o &&
git-branch n/o/p &&
git-branch -d n/op &&
git-pack-refs --prune &&
git-pack-refs --all --prune &&
git-branch -d n/o/p &&
git-branch n'

Expand Down

0 comments on commit b3d4204

Please sign in to comment.