cache-tree: Write updated cache-tree after commit
[gitweb.git] / builtin / checkout.c
index 5b07757d4fca1950e293edf4a1183e5f79a72a2f..054214fe43c8f8e3b815d4afb747408f2524c378 100644 (file)
@@ -553,6 +553,14 @@ static int merge_working_tree(const struct checkout_opts *opts,
                }
        }
 
+       if (!active_cache_tree)
+               active_cache_tree = cache_tree();
+
+       if (!cache_tree_fully_valid(active_cache_tree))
+               cache_tree_update(active_cache_tree,
+                                 (const struct cache_entry * const *)active_cache,
+                                 active_nr, WRITE_TREE_SILENT | WRITE_TREE_REPAIR);
+
        if (write_cache(newfd, active_cache, active_nr) ||
            commit_locked_index(lock_file))
                die(_("unable to write new index file"));
@@ -895,7 +903,7 @@ static int parse_branchname_arg(int argc, const char **argv,
         *       between A and B, A...B names that merge base.
         *
         *   (b) If <something> is _not_ a commit, either "--" is present
-        *       or <something> is not a path, no -t nor -b was given, and
+        *       or <something> is not a path, no -t or -b was given, and
         *       and there is a tracking branch whose name is <something>
         *       in one and only one remote, then this is a short-hand to
         *       fork local <something> from that remote-tracking branch.