files-backend.c: factor out per-worktree code in loose_fill_ref_dir()
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Thu, 7 Mar 2019 12:29:15 +0000 (19:29 +0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 8 Mar 2019 02:57:47 +0000 (11:57 +0900)
This is the first step for further cleaning up and extending this
function.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs/files-backend.c
index 9183875dadb72c4b285b8a99ee7df7620a1e7eeb..06ba49f47ab1b465555f9128a91b9d0a51a55ef3 100644 (file)
@@ -213,6 +213,33 @@ static void files_ref_path(struct files_ref_store *refs,
        }
 }
 
+/*
+ * Manually add refs/bisect and refs/worktree, which, being
+ * per-worktree, might not appear in the directory listing for
+ * refs/ in the main repo.
+ */
+static void add_per_worktree_entries_to_dir(struct ref_dir *dir, const char *dirname)
+{
+       int pos;
+
+       if (strcmp(dirname, "refs/"))
+               return;
+
+       pos = search_ref_dir(dir, "refs/bisect/", 12);
+       if (pos < 0) {
+               struct ref_entry *child_entry =
+                       create_dir_entry(dir->cache, "refs/bisect/", 12, 1);
+               add_entry_to_dir(dir, child_entry);
+       }
+
+       pos = search_ref_dir(dir, "refs/worktree/", 11);
+       if (pos < 0) {
+               struct ref_entry *child_entry =
+                       create_dir_entry(dir->cache, "refs/worktree/", 11, 1);
+               add_entry_to_dir(dir, child_entry);
+       }
+}
+
 /*
  * Read the loose references from the namespace dirname into dir
  * (without recursing).  dirname must end with '/'.  dir must be the
@@ -296,28 +323,7 @@ static void loose_fill_ref_dir(struct ref_store *ref_store,
        strbuf_release(&path);
        closedir(d);
 
-       /*
-        * Manually add refs/bisect and refs/worktree, which, being
-        * per-worktree, might not appear in the directory listing for
-        * refs/ in the main repo.
-        */
-       if (!strcmp(dirname, "refs/")) {
-               int pos = search_ref_dir(dir, "refs/bisect/", 12);
-
-               if (pos < 0) {
-                       struct ref_entry *child_entry = create_dir_entry(
-                                       dir->cache, "refs/bisect/", 12, 1);
-                       add_entry_to_dir(dir, child_entry);
-               }
-
-               pos = search_ref_dir(dir, "refs/worktree/", 11);
-
-               if (pos < 0) {
-                       struct ref_entry *child_entry = create_dir_entry(
-                                       dir->cache, "refs/worktree/", 11, 1);
-                       add_entry_to_dir(dir, child_entry);
-               }
-       }
+       add_per_worktree_entries_to_dir(dir, dirname);
 }
 
 static struct ref_cache *get_loose_ref_cache(struct files_ref_store *refs)