dir: add {new,add}_untracked_cache()
authorChristian Couder <christian.couder@gmail.com>
Sun, 24 Jan 2016 15:28:19 +0000 (16:28 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 25 Jan 2016 20:39:58 +0000 (12:39 -0800)
Factor out code into new_untracked_cache() and
add_untracked_cache(), which will be used
in later commits.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/update-index.c
dir.c
dir.h
index fe7aaa34a418916adb522a3df3bee47ecb2ff669..5f8630c61b016a53468516c7ed4aa5e1641c3dd5 100644 (file)
@@ -1123,16 +1123,7 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
                        if (untracked_cache == UC_TEST)
                                return 0;
                }
-               if (!the_index.untracked) {
-                       struct untracked_cache *uc = xcalloc(1, sizeof(*uc));
-                       strbuf_init(&uc->ident, 100);
-                       uc->exclude_per_dir = ".gitignore";
-                       /* should be the same flags used by git-status */
-                       uc->dir_flags = DIR_SHOW_OTHER_DIRECTORIES | DIR_HIDE_EMPTY_DIRECTORIES;
-                       the_index.untracked = uc;
-               }
-               add_untracked_ident(the_index.untracked);
-               the_index.cache_changed |= UNTRACKED_CHANGED;
+               add_untracked_cache(&the_index);
                report(_("Untracked cache enabled for '%s'"), get_git_work_tree());
        } else if (untracked_cache == UC_DISABLE) {
                if (the_index.untracked) {
diff --git a/dir.c b/dir.c
index d2a8f06b0243bda92c04f57d96c0b18838ee7dce..31eae37f5bfcdc076a4c2ce4483a15bbe880b37b 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -1938,6 +1938,24 @@ void add_untracked_ident(struct untracked_cache *uc)
        strbuf_addch(&uc->ident, 0);
 }
 
+static void new_untracked_cache(struct index_state *istate)
+{
+       struct untracked_cache *uc = xcalloc(1, sizeof(*uc));
+       strbuf_init(&uc->ident, 100);
+       uc->exclude_per_dir = ".gitignore";
+       /* should be the same flags used by git-status */
+       uc->dir_flags = DIR_SHOW_OTHER_DIRECTORIES | DIR_HIDE_EMPTY_DIRECTORIES;
+       istate->untracked = uc;
+}
+
+void add_untracked_cache(struct index_state *istate)
+{
+       if (!istate->untracked) {
+               new_untracked_cache(istate);
+       add_untracked_ident(istate->untracked);
+       istate->cache_changed |= UNTRACKED_CHANGED;
+}
+
 static struct untracked_cache_dir *validate_untracked_cache(struct dir_struct *dir,
                                                      int base_len,
                                                      const struct pathspec *pathspec)
diff --git a/dir.h b/dir.h
index 7b5855dd80eda02973a55c827d79826a25937880..cfd3636bfec7c2f8f3b3b705f2c6a2c7a1e291a5 100644 (file)
--- a/dir.h
+++ b/dir.h
@@ -308,4 +308,5 @@ void free_untracked_cache(struct untracked_cache *);
 struct untracked_cache *read_untracked_extension(const void *data, unsigned long sz);
 void write_untracked_extension(struct strbuf *out, struct untracked_cache *untracked);
 void add_untracked_ident(struct untracked_cache *);
+void add_untracked_cache(struct index_state *istate);
 #endif