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

Support case-sensitive file matching on Linux #29

Closed
chrisd8088 opened this issue May 31, 2019 · 2 comments
Closed

Support case-sensitive file matching on Linux #29

chrisd8088 opened this issue May 31, 2019 · 2 comments
Assignees

Comments

@chrisd8088
Copy link

@chrisd8088 chrisd8088 commented May 31, 2019

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

@kivikakk kivikakk commented Jun 20, 2019

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.

@kivikakk kivikakk closed this Jun 20, 2019
@chrisd8088 chrisd8088 reopened this Jun 29, 2019
@chrisd8088
Copy link
Author

@chrisd8088 chrisd8088 commented Jun 29, 2019

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 join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

2 participants
You can’t perform that action at this time.