threads / rfc / 5854

RFC patchpack-refs --all

Subject: [RFC/PATCH] pack-refs --all

## tl;dr

5 messages between Oct 8, 2006 and Oct 8, 2006. Diffs are folded; open one to read it.

replies: 4people: 4as markdown or json

Junio C Hamano· Oct 8, 2006, 08:08 UTC · lore

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.

---
 * Likes?  Dislikes?
 builtin-pack-refs.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)
Show changes to builtin-pack-refs.c +7 −2
diff --git a/builtin-pack-refs.c b/builtin-pack-refs.c
index 23d0d07..1087657 100644
--- a/builtin-pack-refs.c
+++ b/builtin-pack-refs.c
@@ -2,7 +2,7 @@ #include "cache.h"
 #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 *
 {
 	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 *
 			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 *
 	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);
Petr Baudis· Oct 8, 2006, 10:14 UTC · re: Junio C Hamano · lore

Re: [RFC/PATCH] pack-refs --all

Dear diary, on Sun, Oct 08, 2006 at 10:08:54AM CEST, I got a letter where Junio C Hamano <junkio@cox.net> said that...

Show 9 quoted lines
> 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.
> 
> ---
> 
>  * Likes?  Dislikes?
Looks much saner, thanks. :-)
-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
#!/bin/perl -sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj
$/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1
lK[d2%Sa2/d0$^Ixp"|dc`;s/\W//g;$_=pack('H*',/((..)*)$/)
Johannes Schindelin· Oct 8, 2006, 12:02 UTC · re: Junio C Hamano · lore

Re: [RFC/PATCH] pack-refs --all

Hi,
On Sun, 8 Oct 2006, Junio C Hamano wrote:
> This changes 'git-pack-refs' to pack only tags by default.

Since there is not really a high cost attached, why not migrate towards only-packed-refs? (Of course, this means that git-update-ref should learn to update in-place)?

Ciao, Dscho

Junio C Hamano· Oct 8, 2006, 19:56 UTC · re: Johannes Schindelin · lore

Re: [RFC/PATCH] pack-refs --all

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 7 quoted lines
> On Sun, 8 Oct 2006, Junio C Hamano wrote:
>
>> This changes 'git-pack-refs' to pack only tags by default.
>
> Since there is not really a high cost attached, why not migrate towards 
> only-packed-refs? (Of course, this means that git-update-ref should learn 
> to update in-place)?

It indeed is tempting and I was tempted to do that and unify that with ref-log when we were talking about packed refs before I saw Linus's initial implementation.

← back to recent threads