From 378dc9103a6b36ecac5f63eb0d5a87f573081094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A1i=20Ng=E1=BB=8Dc=20Duy?= Date: Sun, 26 Mar 2017 09:42:28 +0700 Subject: refs.c: kill register_ref_store(), add register_submodule_ref_store() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is the last function in this code (besides public API) that takes submodule argument and handles both main/submodule cases. Break it down, move main store registration in get_main_ref_store() and keep the rest in register_submodule_ref_store(). Signed-off-by: Nguyễn Thái Ngọc Duy Signed-off-by: Junio C Hamano --- refs.c | 45 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/refs.c b/refs.c index 66dc84787d..87f64271ac 100644 --- a/refs.c +++ b/refs.c @@ -1411,29 +1411,6 @@ static struct ref_store *lookup_submodule_ref_store(const char *submodule) return entry ? entry->refs : NULL; } -/* - * Register the specified ref_store to be the one that should be used - * for submodule (or the main repository if submodule is NULL). It is - * a fatal error to call this function twice for the same submodule. - */ -static void register_ref_store(struct ref_store *refs, const char *submodule) -{ - if (!submodule) { - if (main_ref_store) - die("BUG: main_ref_store initialized twice"); - - main_ref_store = refs; - } else { - if (!submodule_ref_stores.tablesize) - hashmap_init(&submodule_ref_stores, submodule_hash_cmp, 0); - - if (hashmap_put(&submodule_ref_stores, - alloc_submodule_hash_entry(submodule, refs))) - die("BUG: ref_store for submodule '%s' initialized twice", - submodule); - } -} - /* * Create, record, and return a ref_store instance for the specified * submodule (or the main repository if submodule is NULL). @@ -1448,7 +1425,6 @@ static struct ref_store *ref_store_init(const char *submodule) die("BUG: reference backend %s is unknown", be_name); refs = be->init(submodule); - register_ref_store(refs, submodule); return refs; } @@ -1457,7 +1433,25 @@ static struct ref_store *get_main_ref_store(void) if (main_ref_store) return main_ref_store; - return ref_store_init(NULL); + main_ref_store = ref_store_init(NULL); + return main_ref_store; +} + +/* + * Register the specified ref_store to be the one that should be used + * for submodule. It is a fatal error to call this function twice for + * the same submodule. + */ +static void register_submodule_ref_store(struct ref_store *refs, + const char *submodule) +{ + if (!submodule_ref_stores.tablesize) + hashmap_init(&submodule_ref_stores, submodule_hash_cmp, 0); + + if (hashmap_put(&submodule_ref_stores, + alloc_submodule_hash_entry(submodule, refs))) + die("BUG: ref_store for submodule '%s' initialized twice", + submodule); } struct ref_store *get_ref_store(const char *submodule) @@ -1481,6 +1475,7 @@ struct ref_store *get_ref_store(const char *submodule) return NULL; refs = ref_store_init(submodule); + register_submodule_ref_store(refs, submodule); return refs; } -- cgit v1.2.1