-
Notifications
You must be signed in to change notification settings - Fork 461
Support alternate names for the .gvfs folder #1084
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
Conversation
|
I've made some progress in getting the functional tests running on my Windows VM, but still not quite there yet, so I'm as yet unable to debug the CI errors. |
derrickstolee
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't change the Mac without designing the full upgrade plan for transitioning existing enlistments. We have people using the Mac right now for testing and we should not interrupt them.
You could make these changes be Linux-only and that would be sufficient. Or is there even enough reason to have this name change? Does the GNU Virtual File System care about a .gvfs folder? Otherwise, it is added complexity for low value until we can design a full transition story for all platforms.
|
Just one quick comment in reply to @derrickstolee's question -- yes, GVfs (GNU Virtual file system) does care about As I mentioned in #987, the |
|
I appreciate your patience with me. I should have seen the linked issue (#987) since you referenced this PR in the issue. That is sufficient reason to need this change in Linux. I do still think we should limit the surface to the Linux platform and leave the Mac unchanged. |
|
No worries, @derrickstolee! Thanks for taking a look at our work! |
|
@wilbaker has the ship not sailed on Mac clients already? Or are all of our current users understanding that they may be forced to reclone after an upgrade? |
We've told our customers that we will not break their clones unless there is a compelling reason to do so. I'm not convinced this is compelling enough because it shouldn't be too complicated to write an upgrader for existing clones. If anything the tricky part is figuring out exactly what we'd want the upgrader to do.
@kivikakk if this issue is a blocker for Linux I think you'll be able to get a fix merged in much more quickly if you scope this PR to Linux only. We can have a follow up issue to sort out exactly what we want the upgrade story to be on Mac. We'll need to do some digging and confirm whether our pilot customers have any custom tools in place that depend on the /cc: @jrbriggs for his thoughts as well |
|
I've scoped the PR to Linux-only for now. The refactor means we'll be able to make the change on Mac more easily when/if we decide to go for it. I'm continuing to struggle with getting functional tests running on Windows. It might be helpful if someone familiar with the project could do a setup from scratch and document the necessary steps; I've having problems running the functional tests from within Visual Studio as suggested in AuthoringTests.md; when running the and using I've already done quite a bit of hacking around with installing/uninstalling trying to get this work, but I'm not sure where I've gone wrong. Is there something undocumented I've missed? What does the developer flow look like for VFS for Git on Windows at the moment? |
|
It hung because it was trying to uninstall the existing Now that I try running the project again (after removing the service myself from an elevated prompt), this happens: (It fails to add the service because access is denied.) I don't really want to run VS as admin, but maybe I need to? |
|
I ran VS as admin, and it failed because I have a feeling I am going to keep running into issues and that my approach must be fundamentally wrong. I've already spent hours on this — can someone give me a hand in getting a working Windows development environment for GVFS? Thank you. |
Can you try installing the SetupGVFS.0.2.173.2.exe that was built locally when you built VFS4G? You can find it here:
Running the installer should take care of the "Service prjflt was not found on computer" issue as well as the hooks issue. After you've installed VFS4G, please launch VS as Administrator and try running I'm on support rotation next week and will work on cleaning up the instructions for running the functional tests. |
acd2091 to
cad5d34
Compare
|
Running the installer produces the following error message: I haven't yet been able to tie "38:707" to anything. I've tried running the installer as administrator, manually stopping and deleting existing |
TIL ISS scripts are written in Pascal 😭 Reproducing manually what the install script failed to do gives: Attaching to GVFS.Service during the request:
Now: Drilling down into Should there be a |
|
I ran However, I'm still getting: I hit continue and proceed to the next exception and get: The logs for the enlistment can be seen here: https://gist.github.com/kivikakk/df212ed8fdb1a5644d3e39472d13c187 Restarting the service and attempting the mount manually fails with the same message: It's the end of my working day, so I'll leave it here for now. Let me know if I've missed something obvious; it seems like I'm close! |
|
@kivikakk thanks for including the logs from your mount process. I saw the following message was logged:
Which typically means that the GVFS.Mount process is finding the wrong version of ProjectedFSLib.dll somewhere on your system (I suspect something got mixed up while you were sorting out getting prjflt installed). Could you check if ProjectedFSLib.dll is located here:
And if it is, delete it? NOTE The other thing that might be happening is that the functional tests csprojs have a post build event that is supposed to delete Could you try doing a clean + build, and then checking if ProjectedFSLib.dll is present in If the file is present, please let us know what version of Windows you're on. We've seen that on some versions there are issues with WOW64 redirects and that might be preventing the file from being deleted. If the file is present as a temporary work around you can manually delete the file and remove the conditional from the post build step so that the file is always deleted. |
Not here!
Indeed, it is present, and in
I suspect so -- VS is running in 32-bit mode, and from its perspective, there is no ProjectedFSLib.dll in System32: But it can be seen in Sysnative: The Windows I'm running is Windows 10 Pro (x64), version 1803, OS build 17134.706. Latest logs from a test run failure are here: https://gist.github.com/kivikakk/777c37d27a3b3ee21f37165d589037ba |
I did notice there was a |
That file should be renamed back.
Did you try removing the conditional from the post build step so that the file is always deleted?
I took a look at the logs, and the "StopVirtualizing" you probably saw is actually coming from the C++/CLI Managed API: I think at this point it makes most sense to take a step back and figure out exactly what state your machine and VFS4G installation is in. Could you try the following:
Sorry that you've had so much trouble getting these to run! |
👍 Done.
Yes; I observed no change as a result.
I can clone but not mount: Logs for this invocation: https://gist.github.com/kivikakk/f65cac1eb173c21a9a94c3fc9fb3f1c4
On the contrary, thank you so much for your help so far! This is a VM so I can wipe it and start over if you think that'd help/involve less detective work across timezone boundaries. If so, let me know what the best way to proceed from a clean slate is, so we can be sure it's in a known good state. |
|
Got the mount working on a fresh VM: I'll retry the tests tomorrow. |
Apologies for not getting back to this thread yesterday, at this point starting over from a clean VM is probably the quicker/easier option, and it sounds like you've already made it that far 😄 Please let me know if you still encounter problems getting the functional tests to run, it's still on my list to walk through the test document and update any step(s) that are missing details or out of date. |
2c404cc to
9f27a8f
Compare
So far so good. It looks like using the test explorer isn't a viable option (even after installing the NUnit 3 Runner) -- the tests do get found, and execute, but the setup that populates |
2cb8429 to
5b5969d
Compare
|
@derrickstolee @wilbaker This is now ready for review. Uses of If some refactoring points have been missed, they'll get shaken out once we're running Linux functional tests. The situation with |
|
One failing test -- looks flakey. Passes locally: |
|
Sorry for the flakey test! I’m working on it. |
wilbaker
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kivikakk apologies for the delay, just a few more comments
5b5969d to
bc4f67e
Compare
|
@wilbaker Thanks for the review! This should be good to go now. |
|
/azp run GitHub VFSForGit Mac Functional Tests |
|
No pipelines are associated with this pull request. |
|
Friendly bump -- it would be good to merge before conflicts arise. |
|
PR title and description has been updated for merge. |









On Linux, the existence of a GNOME Virtual file system
.gvfsdirectory precludes the use of VFS for Git entirely. For both this reason, and to fully disambiguate the VFSForGit project from GVfs, it would be preferable to use a different folder name for VFSForGit's metadata, such as.vfsforgit.This PR introduces support for modifying the name of
.gvfsfolder on a per-platform basis.GVFSPlatform.Instance.Constants.DotGVFSRootnow holds the appropriate name of that folder.Fixes #987.
/cc @chrisd8088 @jrbriggs @wilbaker @nickgra