From: Michael Haggerty Date: Tue, 17 Jan 2012 05:50:33 +0000 (+0100) Subject: add_packed_ref(): new function in the refs API. X-Git-Tag: v1.7.10-rc0~141^2~1 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/30249ee68fa5fa63bfb9bb417987b0547253b8e7 add_packed_ref(): new function in the refs API. Add a new function add_packed_ref() that adds a reference directly to the in-memory packed reference cache. This will be useful for creating local references while cloning. Signed-off-by: Michael Haggerty Signed-off-by: Junio C Hamano --- diff --git a/refs.c b/refs.c index 3785cc200c..b8843bb476 100644 --- a/refs.c +++ b/refs.c @@ -319,6 +319,12 @@ static struct ref_array *get_packed_refs(struct ref_cache *refs) return &refs->packed; } +void add_packed_ref(const char *refname, const unsigned char *sha1) +{ + add_ref(get_packed_refs(get_ref_cache(NULL)), + create_ref_entry(refname, sha1, REF_ISPACKED, 1)); +} + static void get_ref_dir(struct ref_cache *refs, const char *base, struct ref_array *array) { diff --git a/refs.h b/refs.h index d4982915c5..00ba1e2813 100644 --- a/refs.h +++ b/refs.h @@ -50,6 +50,12 @@ extern int for_each_rawref(each_ref_fn, void *); extern void warn_dangling_symref(FILE *fp, const char *msg_fmt, const char *refname); +/* + * Add a reference to the in-memory packed reference cache. To actually + * write the reference to the packed-refs file, call pack_refs(). + */ +extern void add_packed_ref(const char *refname, const unsigned char *sha1); + /* * Extra refs will be listed by for_each_ref() before any actual refs * for the duration of this process or until clear_extra_refs() is