Skip to content
This repository has been archived by the owner on May 9, 2022. It is now read-only.

Support case-sensitive file matching on Linux #29

Closed
chrisd8088 opened this issue May 31, 2019 · 2 comments · Fixed by microsoft/VFSForGit#1412
Closed

Support case-sensitive file matching on Linux #29

chrisd8088 opened this issue May 31, 2019 · 2 comments · Fixed by microsoft/VFSForGit#1412
Assignees
Labels
bug Something isn't working implementation

Comments

@chrisd8088
Copy link

As noted in microsoft#1125, we will need to refactor a number of points in the existing GVFS provider code to support case-sensitive file names on Linux.

@kivikakk
Copy link

These have been addressed in microsoft#1232. Note this does not imply compatibility with repositories with multiple files whose names differ only in case -- that is a separate (and quite larger) item.

@chrisd8088 chrisd8088 reopened this Jun 29, 2019
@chrisd8088
Copy link
Author

Unfortunately, certain basic operations fail on Linux with the existing code, e.g. (assuming master contains foo.txt):

git checkout -b foo
git mv foo.txt Foo.txt
git add .
git commit -m foo
git checkout master

leaves both foo.txt and Foo.txt in the working directory; the latter should obviously have been deleted by the second checkout.

This is due to case-insensitivity in the modified paths database and virtualization code, among other things, which results in case-differing-only filenames being dropped from the data sent back from the GVFS provider, via the virtual-filesystem hook, to git itself after it reads its index file.

Therefore, we will almost certainly need to ensure these internal data stores in the GVFS provider are case-sensitive when running on Linux. Doing so (e.g., with the the WIP in 4fd47be) appears to resolve the failure of the GitCommandsTests.CaseOnlyRenameFileAndChangeBranches() functional test, which performs the git steps shown above.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working implementation
Projects
None yet
2 participants