summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Michael Haggerty <mhagger@alum.mit.edu>2012-01-17 06:50:33 +0100
committerLibravatar Junio C Hamano <gitster@pobox.com>2012-01-17 11:55:04 -0800
commit30249ee68fa5fa63bfb9bb417987b0547253b8e7 (patch)
treefd474eab1ad3af967bafb425fa6bcc00b209ebc5
parentref_array: keep track of whether references are sorted (diff)
downloadtgif-30249ee68fa5fa63bfb9bb417987b0547253b8e7.tar.xz
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 <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--refs.c6
-rw-r--r--refs.h6
2 files changed, 12 insertions, 0 deletions
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
@@ -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