[PATCH 3/4] add_packed_ref(): new function in the refs API.
From: <hidden>
Date: 2016-06-15 22:52:48
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Michael Haggerty <redacted> 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 <redacted> --- This new function call only stores the new reference to the in-memory cache. The user has to remember to call pack_refs() to actually write the new reference(s) to the packed-refs file. (I don't think it is practical to make the write happen automatically.) refs.c | 6 ++++++ refs.h | 6 ++++++ 2 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/refs.c b/refs.c
index 268816f..14f764d 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 d498291..00ba1e2 100644
--- a/refs.h
+++ b/refs.h@@ -51,6 +51,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 * called. Only extra refs added before for_each_ref() is called will
--
1.7.8.3