merge-recursive: fix remainder of was_dirty() to use original index
authorElijah Newren <newren@gmail.com>
Thu, 19 Apr 2018 17:58:21 +0000 (10:58 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 8 May 2018 07:11:00 +0000 (16:11 +0900)
was_dirty() uses was_tracked(), which has been updated to use the original
index rather than the current one. However, was_dirty() also had a
separate call to cache_file_exists(), causing it to still implicitly use
the current index. Update that to instead use index_file_exists().

Also, was_dirty() had a hack where it would mark any file as non-dirty if
we simply didn't know its modification time. This was due to using the
current index rather than the original index, because D/F conflicts and
such would cause unpack_trees() to not copy the modification times from
the original index to the current one. Now that we are using the original
index, we can dispense with this hack.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
merge-recursive.c
index f7478622f25d31afc3ad2e433d837b8a78e183ba..9015be55be9ac67bde9aad7419b5c9d837ecf5e3 100644 (file)
@@ -842,9 +842,9 @@ static int was_dirty(struct merge_options *o, const char *path)
        if (o->call_depth || !was_tracked(o, path))
                return !dirty;
 
-       ce = cache_file_exists(path, strlen(path), ignore_case);
-       dirty = (ce->ce_stat_data.sd_mtime.sec > 0 &&
-                verify_uptodate(ce, &o->unpack_opts) != 0);
+       ce = index_file_exists(o->unpack_opts.src_index,
+                              path, strlen(path), ignore_case);
+       dirty = verify_uptodate(ce, &o->unpack_opts) != 0;
        return dirty;
 }