-
-
Notifications
You must be signed in to change notification settings - Fork 909
Description
Cross reference for another issue with same apparent root cause: microsoft/vscode#100274 (comment)
Issue observed with pre-commit==2.7.1 and git 2.27.
Issue resolved with downgrading git to 2.21 (I only have access to certain versions on my work machine).
Steps to recreate for pre-commit (some taken from the above cross-reference):
-
Install git >= 2.25 on Windows
-
Create a subst drive (
mkdir C:\subst_dir && subst Z: C:\subst_dir) -
Create a git repo in there (
mkdir Z:\repo && cd /d Z:\repo && git init) -
Add some python code, configure pre-commit, and run pre-commit.
Failure observed: An unexpected error has occurred: ValueError: path is on mount 'Z:', start on mount 'C:'
Diagnosis - it appears that the use of git rev-parse --show-toplevel in pre_commit.main.get_root() is suffering the same issue as seen in cross-referenced ticket; git will "see through" the subst command and rather than return a path on the subst-defined Z: drive, it will return the path from the C: drive. With this, after pre_commit.main._adjust_args_and_chdir() calls pre_commit.main.get_root() and does a chdir to the returned location, the following call to os.path.relpath(args.config) then fails with the ValueError as above, because it sees the path to the config file being on Z: but the current location being on C:.
Afraid I don't have a suggested resolution but wanted to flag this up. I'm not too familiar with Windows systems and I'm a long way from Admin access on my work machine so opportunities for testing are limited; this was discovered as my scratch space for repos is a subst drive.