Be more careful about the path with diffs

This makes diff more careful about picking the canonical path
when generating a delta so that it won't accidentally pick up a
case-mismatched path on a case-insensitive file system.  This
should make sure we use the "most accurate" case correct version
of the path (i.e. from the tree if possible, or the index if
need be).
This commit is contained in:
Russell Belfer 2013-06-13 15:32:09 -07:00
parent 3a68d7f002
commit a3e8dbb40b

View File

@ -134,6 +134,7 @@ static int diff_delta__from_two(
{ {
git_diff_delta *delta; git_diff_delta *delta;
int notify_res; int notify_res;
const char *canonical_path = old_entry->path;
if (status == GIT_DELTA_UNMODIFIED && if (status == GIT_DELTA_UNMODIFIED &&
DIFF_FLAG_ISNT_SET(diff, GIT_DIFF_INCLUDE_UNMODIFIED)) DIFF_FLAG_ISNT_SET(diff, GIT_DIFF_INCLUDE_UNMODIFIED))
@ -153,7 +154,7 @@ static int diff_delta__from_two(
new_mode = temp_mode; new_mode = temp_mode;
} }
delta = diff_delta__alloc(diff, status, old_entry->path); delta = diff_delta__alloc(diff, status, canonical_path);
GITERR_CHECK_ALLOC(delta); GITERR_CHECK_ALLOC(delta);
git_oid_cpy(&delta->old_file.oid, &old_entry->oid); git_oid_cpy(&delta->old_file.oid, &old_entry->oid);