Merge branch 'js/diff-notice-has-drive-prefix' into maint
Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on Windows would strip initial parts from the paths because they were not recognized as absolute, which has been corrected. * js/diff-notice-has-drive-prefix: diff: don't attempt to strip prefix from absolute Windows paths
This commit is contained in:
commit
45dda3a2dc
4
diff.c
4
diff.c
@ -4256,12 +4256,12 @@ static void diff_fill_oid_info(struct diff_filespec *one)
|
|||||||
static void strip_prefix(int prefix_length, const char **namep, const char **otherp)
|
static void strip_prefix(int prefix_length, const char **namep, const char **otherp)
|
||||||
{
|
{
|
||||||
/* Strip the prefix but do not molest /dev/null and absolute paths */
|
/* Strip the prefix but do not molest /dev/null and absolute paths */
|
||||||
if (*namep && **namep != '/') {
|
if (*namep && !is_absolute_path(*namep)) {
|
||||||
*namep += prefix_length;
|
*namep += prefix_length;
|
||||||
if (**namep == '/')
|
if (**namep == '/')
|
||||||
++*namep;
|
++*namep;
|
||||||
}
|
}
|
||||||
if (*otherp && **otherp != '/') {
|
if (*otherp && !is_absolute_path(*otherp)) {
|
||||||
*otherp += prefix_length;
|
*otherp += prefix_length;
|
||||||
if (**otherp == '/')
|
if (**otherp == '/')
|
||||||
++*otherp;
|
++*otherp;
|
||||||
|
@ -127,4 +127,14 @@ test_expect_success 'diff --no-index from repo subdir respects config (implicit)
|
|||||||
test_cmp expect actual.head
|
test_cmp expect actual.head
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'diff --no-index from repo subdir with absolute paths' '
|
||||||
|
cat <<-EOF >expect &&
|
||||||
|
1 1 $(pwd)/non/git/{a => b}
|
||||||
|
EOF
|
||||||
|
test_expect_code 1 \
|
||||||
|
git -C repo/sub diff --numstat \
|
||||||
|
"$(pwd)/non/git/a" "$(pwd)/non/git/b" >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user