Remove UNC Prefix after Canonicalize on Windows #637
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #635
Closes #630
Closes #586
Info
fs::canonicalize()
in a few places to resolve relative paths and potential symlinks to the target file.canonicalize
returns a UNC path with\\?\
in the prefix, however those paths cause issues in a number of use-cases (see also std::fs::canonicalize returns UNC paths on Windows, and a lot of software doesn't support UNC paths rust-lang/rust#42869):path.join
can cause issues, since UNC paths don't support/
as a separator (see windows global command issue #635 andgulp-cli
does not appear to work #586)C:\...\Volta
and\\?\C:\...\Volta
fails to match. This can cause an infinite loop of calls to the built-in shims, since they aren't removed from the PATH (see Infinite loop when runningnpm i
#630).Changes
canonicalize
to use duncedunce::canonicalize
is an inline passthrough tofs::canonicalize
, so Unix remains unaffected.Tested
gulp-cli
,ember-cli
, and callingnpm i
with passthrough.