OSDN Git Service

refs.c: flatten get_ref_store() a bit
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Sun, 26 Mar 2017 02:42:27 +0000 (09:42 +0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Mar 2017 17:23:39 +0000 (10:23 -0700)
This helps the future changes in this code. And because get_ref_store()
is destined to become get_submodule_ref_store(), the "get main store"
code path will be removed eventually. After this the patch to delete
that code will be cleaner.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs.c

diff --git a/refs.c b/refs.c
index a4a1a4c..66dc847 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -1462,22 +1462,25 @@ static struct ref_store *get_main_ref_store(void)
 
 struct ref_store *get_ref_store(const char *submodule)
 {
+       struct strbuf submodule_sb = STRBUF_INIT;
        struct ref_store *refs;
+       int ret;
 
        if (!submodule || !*submodule) {
                return get_main_ref_store();
-       } else {
-               refs = lookup_submodule_ref_store(submodule);
+       }
 
-               if (!refs) {
-                       struct strbuf submodule_sb = STRBUF_INIT;
+       refs = lookup_submodule_ref_store(submodule);
+       if (refs)
+               return refs;
 
-                       strbuf_addstr(&submodule_sb, submodule);
-                       if (is_nonbare_repository_dir(&submodule_sb))
-                               refs = ref_store_init(submodule);
-                       strbuf_release(&submodule_sb);
-               }
-       }
+       strbuf_addstr(&submodule_sb, submodule);
+       ret = is_nonbare_repository_dir(&submodule_sb);
+       strbuf_release(&submodule_sb);
+       if (!ret)
+               return NULL;
+
+       refs = ref_store_init(submodule);
        return refs;
 }