Cygwin expects forward slashes for commands to be run via sh.exe
FS_Win32_Cygwin replaces backslashes by / as a side-effect of relativize(). When support for core.hooksPath was added, paths were relativized in a different place using Path.resolve(), which doesn't do that transformation. As a result hooks could not be run on Cygwin in some cases. Do the transformation in FS_Win32_Cygwin.runInShell(). In all other places, File or Path objects are used, which give no guarantee about the file separator (typically the system-dependent default separator), so doing the transformation earlier still wouldn't guarantee that sh.exe indeed gets a command string using forward slashes. Bug: 558577 Change-Id: I3c07eb85f0ac7c5628a2e92f990e5cdb7ecf532f Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
This commit is contained in:
parent
14a157dff6
commit
6f268f8ceb
|
@ -150,7 +150,7 @@ public ProcessBuilder runInShell(String cmd, String[] args) {
|
|||
argv.add("sh.exe"); //$NON-NLS-1$
|
||||
argv.add("-c"); //$NON-NLS-1$
|
||||
argv.add("$0 \"$@\""); //$NON-NLS-1$
|
||||
argv.add(cmd);
|
||||
argv.add(cmd.replace(File.separatorChar, '/'));
|
||||
argv.addAll(Arrays.asList(args));
|
||||
ProcessBuilder proc = new ProcessBuilder();
|
||||
proc.command(argv);
|
||||
|
|
Loading…
Reference in New Issue