summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Turner <dturner@twopensource.com>2016-02-24 17:58:39 -0500
committerJunio C Hamano <gitster@pobox.com>2016-02-25 16:01:01 -0800
commit6b86400fca8ba4fd6c090b926f32424cc0f795f3 (patch)
tree2563997fa1336f25f21297109b423ccde12f2ca9
parent9d40ba5185b547f5e44bf181e731d0ba0c454458 (diff)
downloadgit-6b86400fca8ba4fd6c090b926f32424cc0f795f3.tar.gz
refs: add method for do_for_each_ref
Add a ref backend method for do_for_each_ref. Signed-off-by: David Turner <dturner@twopensource.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--refs.c8
-rw-r--r--refs/files-backend.c7
-rw-r--r--refs/refs-internal.h5
3 files changed, 18 insertions, 2 deletions
diff --git a/refs.c b/refs.c
index c1306c892c..d888dd1db4 100644
--- a/refs.c
+++ b/refs.c
@@ -1339,3 +1339,11 @@ int resolve_gitlink_ref(const char *path, const char *refname,
{
return the_refs_backend->resolve_gitlink_ref(path, refname, sha1);
}
+
+int do_for_each_ref(const char *submodule, const char *base,
+ each_ref_fn fn, int trim, int flags,
+ void *cb_data)
+{
+ return the_refs_backend->do_for_each_ref(submodule, base, fn, trim,
+ flags, cb_data);
+}
diff --git a/refs/files-backend.c b/refs/files-backend.c
index 68eb3b390b..242eee0a87 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -1679,8 +1679,9 @@ static int do_for_each_entry(struct ref_cache *refs, const char *base,
* value, stop the iteration and return that value; otherwise, return
* 0.
*/
-int do_for_each_ref(const char *submodule, const char *base,
- each_ref_fn fn, int trim, int flags, void *cb_data)
+static int files_do_for_each_ref(const char *submodule, const char *base,
+ each_ref_fn fn, int trim, int flags,
+ void *cb_data)
{
struct ref_entry_cb data;
struct ref_cache *refs;
@@ -3415,4 +3416,6 @@ struct ref_storage_be refs_be_files = {
files_read_raw_ref,
files_verify_refname_available,
files_resolve_gitlink_ref,
+
+ files_do_for_each_ref,
};
diff --git a/refs/refs-internal.h b/refs/refs-internal.h
index c5f5ef7671..c9b6745035 100644
--- a/refs/refs-internal.h
+++ b/refs/refs-internal.h
@@ -227,6 +227,9 @@ typedef int read_raw_ref_fn(const char *refname, unsigned char *sha1,
typedef int verify_refname_available_fn(const char *refname, struct string_list *extra, struct string_list *skip, struct strbuf *err);
typedef int resolve_gitlink_ref_fn(const char *path, const char *refname,
unsigned char *sha1);
+typedef int do_for_each_ref_fn(const char *submodule, const char *base,
+ each_ref_fn fn, int trim, int flags,
+ void *cb_data);
struct ref_storage_be {
struct ref_storage_be *next;
@@ -240,6 +243,8 @@ struct ref_storage_be {
read_raw_ref_fn *read_raw_ref;
verify_refname_available_fn *verify_refname_available;
resolve_gitlink_ref_fn *resolve_gitlink_ref;
+
+ do_for_each_ref_fn *do_for_each_ref;
};
extern struct ref_storage_be refs_be_files;