die("unable to read tree object %s", tree_name);
ret = diff_cache(active_cache, active_nr);
+ if (pathspec)
+ diffcore_pathspec(pathspec);
if (detect_rename)
diffcore_rename(detect_rename, diff_score_opt);
if (pickaxe)
diffcore_pickaxe(pickaxe, pickaxe_opts);
- if (pathspec)
- diffcore_pathspec(pathspec);
diff_flush(diff_output_format, 1);
return ret;
}
show_modified(oldmode, mode, ce->sha1, null_sha1,
ce->name);
}
+ if (1 < argc)
+ diffcore_pathspec(argv + 1);
if (detect_rename)
diffcore_rename(detect_rename, diff_score_opt);
if (pickaxe)
diffcore_pickaxe(pickaxe, pickaxe_opts);
- if (1 < argc)
- diffcore_pathspec(argv + 1);
diff_flush(diff_output_format, 1);
return 0;
}
new_path);
continue;
}
- if (pickaxe)
- diffcore_pickaxe(pickaxe, pickaxe_opts);
if (1 < ac)
diffcore_pathspec(av + 1);
+ if (pickaxe)
+ diffcore_pickaxe(pickaxe, pickaxe_opts);
diff_flush(DIFF_FORMAT_PATCH, 0);
printf("%s\n", sb.buf);
}
- if (pickaxe)
- diffcore_pickaxe(pickaxe, pickaxe_opts);
if (1 < ac)
diffcore_pathspec(av + 1);
+ if (pickaxe)
+ diffcore_pickaxe(pickaxe, pickaxe_opts);
diff_flush(DIFF_FORMAT_PATCH, 0);
return 0;
}
EOF
test_expect_success \
- 'validate the result' \
+ 'validate the result (#1)' \
'compare_diff_raw current expected'
# In the tree, there is only path0/COPYING. In the cache, path0 and
# path1 both have COPYING and the latter is a copy of path0/COPYING.
-# When we omit output from path0 it should still be able to tell us
-# that path1/COPYING is result from a copy from path0/COPYING, not
-# rename, which would imply path0/COPYING is now gone.
+# However when we say we care only about path1, we should just see
+# path1/COPYING suddenly appearing from nowhere, not detected as
+# a copy from path0/COPYING.
git-diff-cache -C $tree path1 >current
cat >expected <<\EOF
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 C100 path0/COPYING path1/COPYING
+:000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 N path1/COPYING
EOF
test_expect_success \
- 'validate the result' \
+ 'validate the result (#2)' \
'compare_diff_raw current expected'
test_expect_success \
EOF
test_expect_success \
- 'validate the result' \
+ 'validate the result (#3)' \
'compare_diff_raw current expected'
# In the tree, there is only path0/COPYING. In the cache, path0 does
# not have COPYING anymore and path1 has COPYING which is a copy of
-# path0/COPYING. Even if we restrict the output to path1, it still
-# should show us the rename.
+# path0/COPYING. When we say we care only about path1, we should just
+# see path1/COPYING appearing from nowhere.
git-diff-cache -C $tree path1 >current
cat >expected <<\EOF
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 R100 path0/COPYING path1/COPYING
+:000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 N path1/COPYING
EOF
test_expect_success \
- 'validate the result' \
+ 'validate the result (#4)' \
'compare_diff_raw current expected'
test_done