Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix relpath when path and startpath are in the same drive #40323

Merged
merged 2 commits into from
Apr 4, 2021

Conversation

musm
Copy link
Contributor

@musm musm commented Apr 2, 2021

When startpath == ".", assume the startpath is in the same drive.
This subsequently required tweaking the existing logic to then
canonicalize the drive letter casing (uppercased) in instances where the drive casing
differs.

close #40237

When startpath == ".", assume the startpath is in the same drive.
This subsequently required tweaking the existing logic to then
canonicalize the drive casing in instances where the drive casing
differs.
@musm musm added the backport 1.6 Change should be backported to release-1.6 label Apr 2, 2021
@musm musm added the kind:bugfix This change fixes an existing bug label Apr 2, 2021
base/path.jl Outdated
Comment on lines 525 to 530
path_drive = uppercase(path_drive) # canonicalize drive letters to uppercasing for comparison
startpath_drive = uppercase(startpath_drive)

path_drive != startpath_drive && return abspath(path) # if drives differ return first path
path_arr = split(abspath(path_drive * path_without_drive), path_separator_re)
start_arr = split(abspath(startpath_drive * startpath_without_drive), path_separator_re)
Copy link
Sponsor Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since path_drive may involve a DNS lookup, I think we should preserve the input case:

Suggested change
path_drive = uppercase(path_drive) # canonicalize drive letters to uppercasing for comparison
startpath_drive = uppercase(startpath_drive)
path_drive != startpath_drive && return abspath(path) # if drives differ return first path
path_arr = split(abspath(path_drive * path_without_drive), path_separator_re)
start_arr = split(abspath(startpath_drive * startpath_without_drive), path_separator_re)
startpath_drive = uppercase(startpath_drive) # canonicalize drive letters to uppercasing for comparison
uppercase(path_drive) == startpath_drive || return abspath(path) # if drives differ return first path
path_arr = split(abspath(path_drive * path_without_drive), path_separator_re)
start_arr = split(abspath(path_drive * startpath_without_drive), path_separator_re)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Even better, thank you for the review. PR updated.

@KristofferC KristofferC merged commit 89fff18 into JuliaLang:master Apr 4, 2021
KristofferC pushed a commit that referenced this pull request Apr 4, 2021
* Fix relpath when path and startpath are in the same drive

When startpath == ".", assume the startpath is in the same drive.
This subsequently required tweaking the existing logic to then
canonicalize the drive casing in instances where the drive casing
differs.

(cherry picked from commit 89fff18)
@KristofferC KristofferC mentioned this pull request Apr 4, 2021
33 tasks
KristofferC pushed a commit that referenced this pull request Apr 4, 2021
* Fix relpath when path and startpath are in the same drive

When startpath == ".", assume the startpath is in the same drive.
This subsequently required tweaking the existing logic to then
canonicalize the drive casing in instances where the drive casing
differs.

(cherry picked from commit 89fff18)
KristofferC pushed a commit that referenced this pull request Apr 4, 2021
* Fix relpath when path and startpath are in the same drive

When startpath == ".", assume the startpath is in the same drive.
This subsequently required tweaking the existing logic to then
canonicalize the drive casing in instances where the drive casing
differs.

(cherry picked from commit 89fff18)
@musm musm deleted the relpath-fix branch April 4, 2021 15:47
@KristofferC KristofferC removed the backport 1.6 Change should be backported to release-1.6 label May 4, 2021
ElOceanografo pushed a commit to ElOceanografo/julia that referenced this pull request May 4, 2021
…40323)

* Fix relpath when path and startpath are in the same drive

When startpath == ".", assume the startpath is in the same drive.
This subsequently required tweaking the existing logic to then
canonicalize the drive casing in instances where the drive casing
differs.
antoine-levitt pushed a commit to antoine-levitt/julia that referenced this pull request May 9, 2021
…40323)

* Fix relpath when path and startpath are in the same drive

When startpath == ".", assume the startpath is in the same drive.
This subsequently required tweaking the existing logic to then
canonicalize the drive casing in instances where the drive casing
differs.
johanmon pushed a commit to johanmon/julia that referenced this pull request Jul 5, 2021
…40323)

* Fix relpath when path and startpath are in the same drive

When startpath == ".", assume the startpath is in the same drive.
This subsequently required tweaking the existing logic to then
canonicalize the drive casing in instances where the drive casing
differs.
staticfloat pushed a commit that referenced this pull request Dec 23, 2022
* Fix relpath when path and startpath are in the same drive

When startpath == ".", assume the startpath is in the same drive.
This subsequently required tweaking the existing logic to then
canonicalize the drive casing in instances where the drive casing
differs.

(cherry picked from commit 89fff18)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind:bugfix This change fixes an existing bug
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Breaking relpath change on Windows with Julia 1.6
3 participants