This combines the patches introduced via https://github.com/msys2/msys2-runtime/pull/181 and https://github.com/msys2/msys2-runtime/pull/182. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
89 lines
3.9 KiB
Diff
89 lines
3.9 KiB
Diff
From 4b20e4fc67735ce82bb47c60a6e8f46bbcb33127 Mon Sep 17 00:00:00 2001
|
|
From: Johannes Schindelin <johannes.schindelin@gmx.de>
|
|
Date: Wed, 18 Feb 2015 11:07:17 +0000
|
|
Subject: [PATCH 41/N] fixup! Add functionality for converting UNIX paths in
|
|
arguments and environment variables to Windows form for native Win32
|
|
applications.
|
|
|
|
Let's teach MSYS2's path conversion to leave Git's :name and :/message
|
|
arguments alone, please. These arguments start with colons and are hence
|
|
unlikely to contain a path list (a path list starting with a colon would
|
|
start with an empty item?!?).
|
|
|
|
Without this patch, you will see this:
|
|
|
|
$ GIT_TRACE=1 /c/Program\ Files/Git/cmd/git version :/message
|
|
13:48:44.258390 exec-cmd.c:244 trace: resolved executable dir: C:/Program Files/Git/mingw64/bin
|
|
13:48:44.269314 git.c:463 trace: built-in: git version ';C:\msys64\message'
|
|
git version 2.43.0.windows.1
|
|
|
|
In other words, the argument `:/message` is mangled in an undesired way.
|
|
|
|
This addresses the expectations of the following test cases in the test
|
|
suite of https://github.com/git/git/tree/v2.43.0:
|
|
|
|
-t0060.81 <drive-letter>:\\abc is an absolute path
|
|
-t1501.35 Auto discovery
|
|
-t1501.36 $GIT_DIR/common overrides core.worktree
|
|
-t1501.37 $GIT_WORK_TREE overrides $GIT_DIR/common
|
|
-t1506.3 correct relative file objects (0)
|
|
-t1506.8 correct relative file objects (5)
|
|
-t1506.9 correct relative file objects (6)
|
|
-t2070.7 restore --staged uses HEAD as source
|
|
-t3013.16 git ls-files --format with relative path
|
|
-t3400.6 rebase, with <onto> and <upstream> specified as :/quuxery
|
|
-t3404.84 rebase -i, with <onto> and <upstream> specified as :/quuxery
|
|
-t3703.2 add :/
|
|
-t3703.3 add :/anothersub
|
|
-t4202.8 oneline
|
|
-t4202.22 git log --no-walk <commits> sorts by commit time
|
|
-t4202.23 git log --no-walk=sorted <commits> sorts by commit time
|
|
-t4202.24 git log --line-prefix="=== " --no-walk <commits> sorts by commit time
|
|
-t4202.25 git log --no-walk=unsorted <commits> leaves list of commits as given
|
|
-t4202.26 git show <commits> leaves list of commits as given
|
|
-t4202.138 log --source paints branch names
|
|
-t4202.139 log --source paints tag names
|
|
-t4202.140 log --source paints symmetric ranges
|
|
-t4208.2 "git log :/" should not be ambiguous
|
|
-t4208.3 "git log :/a" should be ambiguous (applied both rev and worktree)
|
|
-t4208.4 "git log :/a -- " should not be ambiguous
|
|
-t4208.5 "git log :/detached -- " should find a commit only in HEAD
|
|
-t4208.7 "git log :/detached -- " should find HEAD only of own worktree
|
|
-t4208.10 "git log :/in" should not be ambiguous
|
|
-t4208.13 git log HEAD -- :/
|
|
-t5616.43 lazy-fetch in submodule succeeds
|
|
-t6132.7 t_e_i() exclude sub2 from sub
|
|
-t6132.14 m_p_d() exclude sub2 from sub
|
|
-t6132.19 grep --untracked PATTERN
|
|
-t6132.21 grep --untracked PATTERN :(exclude)*FILE
|
|
-t6133.6 :/*.t from a subdir dwims to a pathspec
|
|
-t7201.14 checkout to detach HEAD with :/message
|
|
-t9903.37 prompt - untracked files status indicator - untracked files
|
|
-t9903.39 prompt - untracked files status indicator - non-empty untracked dir
|
|
-t9903.40 prompt - untracked files status indicator - untracked files outside cwd
|
|
-t9903.44 prompt - untracked files status indicator - shell variable set with config enabled
|
|
-t9903.56 prompt - bash color pc mode - untracked files status indicator
|
|
|
|
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
|
|
---
|
|
winsup/cygwin/msys2_path_conv.cc | 6 ++++++
|
|
1 file changed, 6 insertions(+)
|
|
|
|
diff --git a/winsup/cygwin/msys2_path_conv.cc b/winsup/cygwin/msys2_path_conv.cc
|
|
index 35b7757..8870d38 100644
|
|
--- a/winsup/cygwin/msys2_path_conv.cc
|
|
+++ b/winsup/cygwin/msys2_path_conv.cc
|
|
@@ -356,6 +356,12 @@ skip_p2w:
|
|
return NONE;
|
|
}
|
|
|
|
+ /*
|
|
+ * Prevent Git's :file.txt and :/message syntax from beeing modified.
|
|
+ */
|
|
+ if (*it == ':')
|
|
+ goto skip_p2w;
|
|
+
|
|
while (!isalnum(*it) && *it != '/' && *it != '\\' && *it != ':' && *it != '-' && *it != '.') {
|
|
recurse = true;
|
|
it = ++*src;
|