microsoft / microsoft/VFSForGit
Cannot read virtual files while 'git mergetool` is running
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 6.1k
- Forks
- 474
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 8
Description
The CanCreatePlaceholder check:
In GetPlaceholderInfoCallback is preventing users from being able to read virtual files while git mergetool is running.
To reproduce issue:
- Push two branches that will have a merge conflict. One of the two branches should contain source files not present in the other.
- Create a new clone of the repo
- Checkout the first branch (that does not have the new files)
- Merge in the second branch
- After the merge conflict occurs, run
git mergetool - While the merge tool is running, attempt to read one of the new files (or any file that does not currently have a placeholder on disk). The read will fail.
Example verbose logging during step 6:
[2019-05-09 15:16:25 -07:00] GetPlaceholderInfoCallback {"Area":"WindowsFileSystemVirtualizer","relativePath":"1.txt","commandId":364,"triggeringProcessId":24464,"triggeringProcessImageFileName":"\Device\HarddiskVolume9\Windows\System32\notepad.exe","Message":"GetPlaceholderInfoCallback: Not allowed to create placeholder"}
See also related issues #1040, #1096
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at GVFS/GVFS.Platform.Windows/WindowsFileSystemVirtualizer.cs near the linked CanCreatePlaceholder check and trace how GetPlaceholderInfoCallback handles reads during git mergetool. Reproduce the documented conflicting-branch sequence, then verify that a file without an on-disk placeholder can be read while the merge tool is running.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, git
- Domain
- operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 48/100