microsoft / vfsforgit Goto Github PK
View Code? Open in Web Editor NEWVirtual File System for Git: Enable Git at Enterprise Scale
License: MIT License
Virtual File System for Git: Enable Git at Enterprise Scale
License: MIT License
We are not using Windows Defender, and it would be nice if there was an option to skip the Add-MpPreference
call when doing gvfs mount
(or gvfs clone
w/out --no-mount
).
Mount works just fine, but this calls adds unnecessary clutter to the command window/logs.
WARNING: Unable to ensure that '<path>' is excluded from antivirus
Could not add this repo to the antivirus exclusion list: Add-MpPreference : Operation failed with the following error: 0x800106b a. Opera
tion: MpPreference. Target: ConfigListExtension.
At line:1 char:5
+ & { Add-MpPreference -ExclusionPath <path> }
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (MSFT_MpPreference:root\Microsoft\
...FT_MpPreference) [Add-MpPreference], CimException
+ FullyQualifiedErrorId : HRESULT 0x800106ba,Add-MpPreference
Add-MpPreference : Operation failed with the following error: 0x%1!x!
At line:1 char:5
+ & { Add-MpPreference -ExclusionPath <path> }
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (MSFT_MpPreference:root\Microsoft\
...FT_MpPreference) [Add-MpPreference], CimException
+ FullyQualifiedErrorId : HRESULT 0x800106ba,Add-MpPreference
GVFS version: 1.0.17318.1
Git version: 2.15.1.gvfs.2.preview.3
I'd love there to be an explanation of how CVFS works in detail, not the high level overview that README.md gives. Either in a dedicated file or a README.md for each project.
I thought one of the benefits of git is that you have an entire copy of the repo so you can work disconnected. Does this cause this git to not have a complete copy? Does this cause git to be less distributed and more centralized? I am not against this and see the benefit for large repos. I am trying to understand what is the trade off. What happens if I am disconnected and try to checkout/commit files I do not already have touched? I guess a more general question is how does GVFS work in a disconnected environment that git was designed for?
Hello Microsoft team,
Thank you for the great idea. I would still like to request an implementation for ChromeOS. I know Chrome is not a product of yours. I would still like to be able to embed GIT under ChromeOS, which is the task of GVFS. It is already possible to mount SMB directories, maybe you can build on it?
Thank you for your help
Hey,
I want to try the gfvs, however on my repo im getting:
Clone parameters:
Repo URL: https://github.com/kingofthebongo2008/gpudwt.git
Cache Server: Default
Destination: F:\homedevelopment1\gpudwt.git
Authenticating...Succeeded
Querying remote for config...Failed
Unable to query /gvfs/config
What should i do to get it working:
I am running version
git version 2.15.1.gvfs.2.preview.3
Regards
When I use GVFS to clone a repo on TFS 2018 to a specific directory, GVFS makes a "src" folder under that and puts the code there. Can I prevent that in some way?
Is this a kernel mode filter driver? if so why is most of the source written in C#? Just trying to get some insights.
I've implemented preliminary support for GVFS operations in Atlassian Bitbucket Server (note: not Bitbucket Cloud, e.g. bitbucket.org). In doing so, one of the things I've noticed is that GET /gvfs/objects/<sha>
requests, as well as application/x-gvfs-loose-objects
requests to POST /gvfs/objects
, use uppercase object IDs. (Interestingly, application/x-git-packfile
requests to POST /gvfs/objects
use lowercase object IDs; I'm assuming that's because it drew the values from the ref advertisement, which uses lowercase values.)
When running on Windows this detail doesn't matter, since the filesystem is case-insensitive. And, naturally, I can lowercase the IDs on the server before processing (and I do so). But for the protocol, this is a nonsequitor choice. By convention, if not by absolute requirement, git
always writes object IDs in lowercase hex, both on disk and in its wire protocol. For simplicity when implementing server-side processing for this, the GVFS client should also use lowercase object IDs.
Something that comes up from time to time is the need to be able to run and debug two versions of an app at the same time, these apps being on different branches in a repo. Git does not really support the concept of having two branches checked out at the same time and so there are other somewhat contrived ways of doing this but they are cumbersome.
However it occurs to me that with GVFS it may be possible to create the abstract idea of a virtual repo.
A virtual repo would be a folder with some form of association to some other (actual repo) folder.
Using GVFS the virtual repo would appear to be a distinct repo and when a branch in the virtual repo gets checked out GVFS would create whatever folders/files are necessary (within the virtual repo's disk folder) by getting them from the "real" repo.
So in a tool (e.g. Smartgit) one might see two repos "main_apps" and "main_apps.2" (the latter being "virtual".
I can then checkout branch_x in one repo and branch_y in the other, but the state of the file system withing the virtual repos (physical) folder is determined by the git history data in the real repo.
Obviously there are issues and questions that arise but assuming these are not showstoppers this could be a very useful feature.
Greetings,
The deployment instructions require simplification engineering.
Please elaborate re-write for those of us that "just want to make it go".
Thanks!
coast
The protocol seems to be a useful extension to provide finer-grained access to the git storage anyway. Would love to see it's available in the standard git distribution!
I don't see why I should have to downgrade from 7 to 10 to use this.
It should be easy enough to port to 7
This team had a choice, accept windows 10 as the required version, or try to get windows 7 supported.
They choose wrong.
Windows 7 STILL has more users then windows 10. http://www.w3schools.com/browsers/browsers_os.asp
So they said that the majority of users being unable to use their product was ok,
This is me pushing against them on that, and rightfully so.
They should have tried harder
In order to improve windows 10, people have to do the following:
Pushing back against only supporting windows 10, (regardless of why) is a necessary evil to improving windows 10.
This is more of a question:
Does there exist feasibility to upgrade a pre-existing GIT REPO hosted on Visual Studio Team Services?
Thanks!
coast
Hello,
I suggest - to ensure the adequate development - change the name of the project. The current name conflicts with a mature open-source project GVfs ( https://en.wikipedia.org/wiki/GVfs ) which is the same class of software (virtual file system). Searching information about first or second will be terrible. Fix that as your project is young, please.
Greetings,
I build GVFS failed! Hope someone to share the SetupGVFS.exe to me!
thanks!
I got this message:
Submodule operations are not supported on a GVFS repo
fatal: pre-command hook aborted command
Maybe rename this to GITVFS ?
Is there any chance to use GVFS with a local TFS? that would enable us to test it inside the company...
-deleted-
Recently I am trying GVFS. It works well on my laptop, but always got below error message on my VM.
Validating repo...Succeeded
Mounting...Failed. Run 'gvfs log C:\gitRepos\Test' for more info.
Unable to mount because the GVFS.Mount process is not responding.
But actually, gvfs status said mount status is ready.
After running "gvfs unmounts" and "gvfs mount -v Verbose -d" many times, I guess it is due to timeout value in WaitUntilMounted function.
My VM is poor performace. GVFS.Mount process cannot complete task in that timeout.
I tried to set timeout bigger, rebuilt GVFS. Then, the problem disappeared.
If you move to a monorepo, the size of the repository tends to grow very large, and it presents a security challenge -- you might only want to let a small number of people access the more sensitive parts of your codebase. GVFS is designed to solve the first problem, and it seems like a good foundation to solve the second -- if you're not allowed to read a particular file, then the GVFS server simply will refuse to serve it to you.
Greetings,
I would like to open a dialog regarding GVFS as the engineering vault.
Typically, Product data management systems are SQL driven virtual file systems.
This requires constant local SQL server activity.
The advantage of a GIT is that we push changes to a central repository.
Is it possible to Support a file locking system on the GVFS file so that only one person can change the locked file?
Exclusively for CAD file usage, could we interrupt the commit/push operation?
The issue we see is there exists few methods to cleanly merge changes to CAD files.
Thanks,
coast
Thank you for the presentation at #gitmerge 2017. It was great.
I'm wondering how do you indent to solve the intents from IDE to fetch all files to index sources. Similarly, compilation may require too much files to be fetched.
I pulled the repo and built GFVS in debug and installed it. I also have TFS 2018 RC2 installed on another machine. I created a git repo on TFS 2018 RC2 server and tried to clone it with gvfs and get the following issue:
Is the warning something I should be concerned with ? Was there a step I neglected in building? Does TFS 2018 RC2 not support gvfs fully?
I don't see why I should have to downgrade from 7 to 10 to use this.
It should be easy enough to port to 7
This team had a choice, accept windows 10 as the required version, or try to get windows 7 supported.
They choose wrong.
Windows 7 STILL has more users then windows 10. http://www.w3schools.com/browsers/browsers_os.asp
So they said that the majority of users being unable to use their product was ok,
This is me pushing against them on that, and rightfully so.
They should have tried harder
In order to improve windows 10, people have to do the following:
Pushing back against only supporting windows 10, (regardless of why) is a necessary evil to improving windows 10.
Just trying to get a broad idea of how GVFS operates. Is it a replacement file system for NTFS? I mean does it do what NTFS does but include additional functionality? or does it replace NTFS but lose some NTFS functionblaity?
I can see that GVFS can be very useful in a big repo. It's not that valuable for small repoes.
So when do I really need this? How big should my repo become to use this? How good is this?
Hey, how you suppose the others will access the information in proprietary formats, like this:
https://github.com/Microsoft/GVFS/blob/master/GvFlt_EULA.docx
Majority of Users don't have MS office package installed.
Please respect others freedom and Community you're trying to work with.
Hey everyone,
I'm just wondering if you're planning on integrating with libgit2 at all?
This is going to be pretty vital for tools.
Hi, I just have a question about the dependency on .NET 3.5 listed in the readme. Does GVFS depend on anything specific to .NET Framework 3.5? and are there any blockers towards removing that dependency and solely targeting a newer version of .NET Framework or even .NET Standard 2.0 or 2.1?
I think this is more of a Visual Studio Team Explorer issue, but I'll mention it here too.
I'm hosting a git repo on TFS 2018 that contains a solution in VS 2015. On my GVFS-enabled test machine, I did a gvfs clone, which worked. I then opened the solution in VS 2017, which then touched all the vcxproj and vcxproj.filters; no changes were made, but they were touched. VS 2017 reports that it's using the expected version of git (with GVFS support installed from latest preview build).
Interesting thing here is that git on command line does not report these .vcxproj and .vcxproj.filters files as having changed but the Team Explorer git changes panel does.
Now the real issue is that when I go to submit these apparently changed files from the Team Explorer changes window, I get the following failure in the Team Explorer pane.
Committing with git command line and then pushing from command line worked just fine.
in my case I'm building the whole project (which also contains dll files), my question is,
does the blobs objects(that I understand that are the ones increasing the size on disk) will be downloaded
once they are fetch in the build?
will the move from TFVC to GVFS will still be useful? or the repository will grow to a point where working with git will be impossible?
When I gvfs clone a repo, the error happens:
fatal: CRLF conversions not supported when running under GVFS
I'm on a Windows client, of course.
Wouldn't be better to call this as GitVFS to avoid confusion?
OS: Windows 10 1703 (build 15063.726)
GVFS: 1.0.17318.1
Git: 2.15.0.gvfs.1.preview.4
I've just installed GVFS and the latest Git and tried to clone repository from VSTS.
C:\TEST\GVFS>gvfs clone https://arkadiumarena.visualstudio.com/Phoenix%20Games/_git/five-roll-pixi
Clone parameters:
Repo URL: https://arkadiumarena.visualstudio.com/Phoenix%20Games/_git/five-roll-pixi
Cache Server: Default
Destination: C:\TEST\GVFS\five-roll-pixi
Authenticating...Succeeded
Querying remote for config...Succeeded
Using cache server: None (https://arkadiumarena.visualstudio.com/Phoenix%20Games/_git/five-roll-pixi)
Cloning...Failed. Run 'gvfs log C:\TEST\GVFS\five-roll-pixi' for more info.
Cannot clone @ C:\TEST\GVFS\five-roll-pixi: System.IO.FileNotFoundException: Could not load file or assembly 'GvLib.Managed.dll' or one of its dependencies. The specified module could not be found.
File name: 'GvLib.Managed.dll'
at GVFS.GVFlt.GVFltCallbacks.TryPrepareFolderForGVFltCallbacks(String folderPath, String& error)
at GVFS.CommandLine.CloneVerb.CreateClone(ITracer tracer, GVFSEnlistment enlistment, GitObjectsHttpRequestor objectRequestor, GitRefs refs, String branch) in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS\CommandLine\CloneVerb.cs:line 354
at GVFS.CommandLine.CloneVerb.TryClone(JsonEtwTracer tracer, GVFSEnlistment enlistment, CacheServerInfo cacheServer, RetryConfig retryConfig) in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS\CommandLine\CloneVerb.cs:line 297
at GVFS.CommandLine.CloneVerb.<>c__DisplayClass31_2.<Execute>b__1() in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS\CommandLine\CloneVerb.cs:line 143
at GVFS.Common.ConsoleHelper.<>c__DisplayClass3_0.<ShowStatusWhileRunning>b__0() in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS.Common\ConsoleHelper.cs:line 44
at GVFS.Common.ConsoleHelper.ShowStatusWhileRunning(Func`1 action, String message, TextWriter output, Boolean showSpinner, String gvfsLogEnlistmentRoot, Int32 initialDelayMs) in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS.Common\ConsoleHelper.cs:line 113
at GVFS.CommandLine.GVFSVerb.ShowStatusWhileRunning(Func`1 action, String message, Boolean suppressGvfsLogMessage) in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS\CommandLine\GVFSVerb.cs:line 148
at GVFS.CommandLine.CloneVerb.Execute() in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS\CommandLine\CloneVerb.cs:line 140
Is there any intent to port GVFS over to Linux or macOS?
Venture Information Technology Services Ltd.
Build failure if Control Panel -> Clock, Language, and Region -> Region and Language -> Administrative -> Current language for non-Unicode programs: is not English. Build succeeded when I switched to English (United States).
Build log: https://gist.githubusercontent.com/0xbadfca11/bf4ff1307101a6b187cd31570c2fbd4a/raw/feb4f955576bf40a0d3d14bd399cc9a79c3bdbdc/gistfile1.txt
What exactly is a "fully hydrated repo"? There is no such thing in Git terminology.
Please use proper terminology in the Readme and elsewhere.
I suggest GVFS Team support SSH protocol。For some people, the SSH protocol is actually easier to access。
We known git fetch and push is call remote server git-upload-pack
or git-receive-pack
, Gvfs can also be made into a command, and then either HTTP or SSH server, the user request is converted to the server call this command, get the output of this command. Here are the command arguments I suggested
git-gvfs GVFS Implementation
usage: [command] [args] gitdir
config show server config
size input json object ids, show those size
pack-objects pack input oid's objects
loose-object --oid; send loose object
prefetch --lastPackTimestamp; prefetch transfer
When gvfs clone convert to ssh -X [email protected] git-gvfs pack-objects someone.git
json data write to stdin, read git-gvfs's stdout as a packfile.
The server is easier to implement, but the client has some trouble
I don't install unsigned drivers unless I am really sure. Can you please point me to the repository for this or make it available if not done already?
The GNOME Virtual File System (GVfs) is already a well established thing and is in Wikipedia https://en.wikipedia.org/wiki/GVfs. It would be polite to consider a different name for Microsoft GVFS.
I don't see why I should have to downgrade from 7 to 10 to use this.
It should be easy enough to port to 7
Hi
This project use a name that is already in use for "Virtual filesystem implementation for GIO"
I suppose that it is an error of assessment and that she will be corrected.
Url of the project https://git.gnome.org/browse/gvfs/
Thank you
Well done on a great concept!
I look forward to trying it out.
GVFS will be great for my needs if it also supports very large files.
Add an option to remove (squash) files not used recently and that are already on the remote GIT repository. This can be done based on some rules, like storage is full or files untouched for some months or so. This can allow for a transparent Dropbox-like or remote cache-like filesystem without wasting a lot of local space or when it's not available (for example, several tablets using a multi-terabyte home NAS).
I build & setup,without any errors。
In git bash, run gvfs clone URL,got message:
Error: GVFlt Service is not running. To resolve, run "sc start gvflt" from an admin command prompt
run: sc start gvflt,got message:
[SC] StartService FAILED 127:
The specified procedure could not be found.
Calling $ gvfs clone https://<user>.visualstudio.com/_git/<proj>
on an empty repo gives the following error:
Clone parameters:
Repo URL: https://<user>.visualstudio.com/_git/<proj>
Cache Server: Default
Destination: <path>
Authenticating...Succeeded
Querying remote for config...Succeeded
Using cache server: None (https://<user>.visualstudio.com/_git/<proj>)
Cloning...Failed. Run 'gvfs log <path>' for more info.
Cannot clone @ <path>: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at GVFS.CommandLine.CloneVerb.CreateClone(ITracer tracer, GVFSEnlistment enlistment, GitObjectsHttpRequestor objectRequestor, GitRefs refs, String branch) in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS\CommandLine\CloneVerb.cs:line 368
at GVFS.CommandLine.CloneVerb.TryClone(JsonEtwTracer tracer, GVFSEnlistment enlistment, CacheServerInfo cacheServer, RetryConfig retryConfig) in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS\CommandLine\CloneVerb.cs:line 297
at GVFS.CommandLine.CloneVerb.<>c__DisplayClass31_2.<Execute>b__1() in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS\CommandLine\CloneVerb.cs:line 143
at GVFS.Common.ConsoleHelper.<>c__DisplayClass3_0.<ShowStatusWhileRunning>b__0() in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS.Common\ConsoleHelper.cs:line 44
at GVFS.Common.ConsoleHelper.ShowStatusWhileRunning(Func`1 action, String message, TextWriter output, Boolean showSpinner, String gvfsLogEnlistmentRoot, Int32 initialDelayMs) in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS.Common\ConsoleHelper.cs:line 113
at GVFS.CommandLine.GVFSVerb.ShowStatusWhileRunning(Func`1 action, String message, Boolean suppressGvfsLogMessage) in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS\CommandLine\GVFSVerb.cs:line 148
at GVFS.CommandLine.CloneVerb.Execute() in C:\Repos\GitHubUpdate\Internal\GVFS\GVFS\CommandLine\CloneVerb.cs:line 140
GVFS version: 1.0.17318.1
Git version: 2.15.1.gvfs.2.preview.3
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.