On Sat, 22 Mar 2008, Johan Herland wrote: > In repos with many refs, it is unlikely that most refs will ever change. > This fact is already exploited by "git gc" by executing "git pack-refs" > to consolidate all refs into a single file. > > When cloning a repo with many refs, it does not make sense to create the > loose refs in the first place, just to have the next "git gc" consolidate > them into one file. Instead, make "git clone" create the packed refs file > immediately, and forego the loose refs completely. Acked-by: Daniel Barkalow <barkalow@xxxxxxxxxxxx> > Signed-off-by: Johan Herland <johan@xxxxxxxxxxx> > --- > builtin-clone.c | 8 ++++++-- > 1 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/builtin-clone.c b/builtin-clone.c > index 0a9c873..01c595e 100644 > --- a/builtin-clone.c > +++ b/builtin-clone.c > @@ -18,6 +18,7 @@ > #include "transport.h" > #include "strbuf.h" > #include "dir.h" > +#include "pack-refs.h" > > /* > * Overall FIXMEs: > @@ -313,8 +314,11 @@ static struct ref *write_remote_refs(const struct ref *refs, struct refspec *ref > get_fetch_map(refs, tag_refspec, &tail, 0); > > for (r = local_refs; r; r = r->next) > - update_ref(reflog, > - r->peer_ref->name, r->old_sha1, NULL, 0, DIE_ON_ERR); > + add_extra_ref(r->peer_ref->name, r->old_sha1, 0); Wow, clever. Yes, this should work perfectly. > + > + pack_refs(PACK_REFS_ALL); > + clear_extra_refs(); > + > return local_refs; > } > > -- > 1.5.5.rc0.117.ga5237 > > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html