提交 3e8aded2 编写于 作者: J Johan Herland 提交者: Junio C Hamano

Teach "git clone" to pack refs

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.
Signed-off-by: NJohan Herland <johan@herland.net>
Acked-by: NDaniel Barkalow <barkalow@iabervon.org>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 d0d12b47
......@@ -18,6 +18,7 @@
#include "transport.h"
#include "strbuf.h"
#include "dir.h"
#include "pack-refs.h"
/*
* Overall FIXMEs:
......@@ -321,8 +322,11 @@ static struct ref *write_remote_refs(const struct ref *refs,
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);
pack_refs(PACK_REFS_ALL);
clear_extra_refs();
return local_refs;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册