aboutsummaryrefslogtreecommitdiff
path: root/builtin-pack-refs.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-10-08 01:36:08 -0700
committerJunio C Hamano <junkio@cox.net>2006-10-08 01:36:08 -0700
commitb3d4204fc49959ddcd54c329be94189f98714d73 (patch)
tree8a2ad3d40e385ccb5e13c131d4e32a6621e3eed8 /builtin-pack-refs.c
parent4057deb5de110176ac19519177654108607b685c (diff)
downloadgit-b3d4204fc49959ddcd54c329be94189f98714d73.tar.gz
git-b3d4204fc49959ddcd54c329be94189f98714d73.tar.xz
git-pack-refs --all
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>
Diffstat (limited to 'builtin-pack-refs.c')
-rw-r--r--builtin-pack-refs.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/builtin-pack-refs.c b/builtin-pack-refs.c
index 23d0d0720..108765767 100644
--- a/builtin-pack-refs.c
+++ b/builtin-pack-refs.c
@@ -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;
@@ -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));
@@ -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;
}
@@ -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);