refs.c: kill register_ref_store(), add register_submodule_ref_store()
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 <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
126c9e0576
commit
378dc9103a
45
refs.c
45
refs.c
@ -1411,29 +1411,6 @@ static struct ref_store *lookup_submodule_ref_store(const char *submodule)
|
|||||||
return entry ? entry->refs : NULL;
|
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
|
* Create, record, and return a ref_store instance for the specified
|
||||||
* submodule (or the main repository if submodule is NULL).
|
* 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);
|
die("BUG: reference backend %s is unknown", be_name);
|
||||||
|
|
||||||
refs = be->init(submodule);
|
refs = be->init(submodule);
|
||||||
register_ref_store(refs, submodule);
|
|
||||||
return refs;
|
return refs;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1457,7 +1433,25 @@ static struct ref_store *get_main_ref_store(void)
|
|||||||
if (main_ref_store)
|
if (main_ref_store)
|
||||||
return 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)
|
struct ref_store *get_ref_store(const char *submodule)
|
||||||
@ -1481,6 +1475,7 @@ struct ref_store *get_ref_store(const char *submodule)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
refs = ref_store_init(submodule);
|
refs = ref_store_init(submodule);
|
||||||
|
register_submodule_ref_store(refs, submodule);
|
||||||
return refs;
|
return refs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user