diff options
author | Junio C Hamano <gitster@pobox.com> | 2018-10-30 15:43:45 +0900 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-10-30 15:43:45 +0900 |
commit | 99499e222e8fc5b94db1fab386bd283059eb6771 (patch) | |
tree | 7a30f59fde3facfe1cec321fc925679bd737878f | |
parent | Merge branch 'ot/ref-filter-plug-leaks' (diff) | |
parent | diff: don't attempt to strip prefix from absolute Windows paths (diff) | |
download | tgif-99499e222e8fc5b94db1fab386bd283059eb6771.tar.xz |
Merge branch 'js/diff-notice-has-drive-prefix'
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
-rw-r--r-- | diff.c | 4 | ||||
-rwxr-xr-x | t/t4053-diff-no-index.sh | 10 |
2 files changed, 12 insertions, 2 deletions
@@ -4302,12 +4302,12 @@ static void diff_fill_oid_info(struct diff_filespec *one, struct index_state *is 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 */ - if (*namep && **namep != '/') { + if (*namep && !is_absolute_path(*namep)) { *namep += prefix_length; if (**namep == '/') ++*namep; } - if (*otherp && **otherp != '/') { + if (*otherp && !is_absolute_path(*otherp)) { *otherp += prefix_length; if (**otherp == '/') ++*otherp; diff --git a/t/t4053-diff-no-index.sh b/t/t4053-diff-no-index.sh index 453e6c35eb..6e0dd6f9e5 100755 --- a/t/t4053-diff-no-index.sh +++ b/t/t4053-diff-no-index.sh @@ -127,4 +127,14 @@ test_expect_success 'diff --no-index from repo subdir respects config (implicit) 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 |