GVFS体验

作者: 陈陈chen | 来源:发表于2017-07-28 23:10 被阅读55次

    git在面对大代码库时,git的操作,比如clone、checkout、commit等,会花费大量的时间。GVFS全称Git Virtual File System,是微软为了优化这种情况而提出的解决方案,微软已经将其开源(https://github.com/Microsoft/GVFS )。

    1、准备编译环境

    按照github上面的指导,安装各种环境就可以啦~
    体验GVFS需要Windows 10版本1703或者更高。不然在执行exe文件的时候会报以下错误,别问我怎么知道的。。。。

    低版本win10运行SetupGVFS.exe报错

    2、编译

    下了代码,打开GVFS.sln,发现GVFS编译不过了。

    问题

    出错日志如下:

    严重性 代码  说明  项目  文件  行   禁止显示状态
    错误  CS0006  未能找到元数据文件“C:\my_work\GVFS-master\..\BuildOutput\GVFS.GvFltWrapper\bin\x64\Debug\GVFS.GvFltWrapper.dll”  GVFS.GVFlt  C:\my_work\GVFS-master\GVFS\GVFS.GVFlt\CSC  1   活动的
    严重性 代码  说明  项目  文件  行   禁止显示状态
    错误  CS0006  未能找到元数据文件“C:\my_work\BuildOutput\GVFS.GVFlt\bin\x64\Debug\GVFS.GVFlt.dll”   GVFS.Mount  C:\my_work\GVFS-master\GVFS\GVFS.Mount\CSC  1   活动的
    严重性 代码  说明  项目  文件  行   禁止显示状态
    错误  CS0006  未能找到元数据文件“C:\my_work\BuildOutput\GVFS.Mount\bin\x64\Debug\GVFS.Mount.exe”   GVFS.Service    C:\my_work\GVFS-master\GVFS\GVFS.Service\CSC    1   活动的
    严重性 代码  说明  项目  文件  行   禁止显示状态
    错误  CS0006  未能找到元数据文件“C:\my_work\BuildOutput\GVFS.GVFlt\bin\x64\Debug\GVFS.GVFlt.dll”   GVFS    C:\my_work\GVFS-master\GVFS\GVFS\CSC    1   活动的
    严重性 代码  说明  项目  文件  行   禁止显示状态
    错误  CS0006  未能找到元数据文件“C:\my_work\BuildOutput\GVFS.Mount\bin\x64\Debug\GVFS.Mount.exe”   GVFS    C:\my_work\GVFS-master\GVFS\GVFS\CSC    1   活动的
    严重性 代码  说明  项目  文件  行   禁止显示状态
    错误  CS0006  未能找到元数据文件“C:\my_work\BuildOutput\GVFS.Service\bin\x64\Debug\GVFS.Service.exe”   GVFS    C:\my_work\GVFS-master\GVFS\GVFS\CSC    1   活动的
    严重性 代码  说明  项目  文件  行   禁止显示状态
    错误  C2220   警告被视为错误 - 没有生成“object”文件    GVFS.GvFltWrapper   C:\my_work\packages\Microsoft.GVFS.GvFlt.0.17627.2-preview\header\gvlib.h   749 
    严重性 代码  说明  项目  文件  行   禁止显示状态
    警告  C4819   该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 GVFS.GvFltWrapper   C:\my_work\packages\Microsoft.GVFS.GvFlt.0.17627.2-preview\header\gvlib.h   749 
    
    解决

    因为我是中文环境的原因。参考(https://github.com/Microsoft/GVFS/issues/8 ),
    将 gvlib.h用Notepad++转为UTF-8格式,然后保存即可编译通过。

    3、安装GVFS专用的git for windows客户端

    这是最困难的一步了。。。。下载好慢好慢,然后下载失败。。。

    4、测试

    需要在VS online上面注册一个账号,在上面新建个项目,才能使用GVFS。比如我创建了一个仓库,仓库的地址是: https://gxchenqiang.visualstudio.com/_git/test_project
    在仓库的根目录上新建一个名为.gitattributes的文件,文件内容为* -text
    执行编译出来的SetupGVFS.exe,然后运行git bash,执行:

     gvfs clone https://gxchenqiang.visualstudio.com/_git/test_project gvfs_clone_test
    

    打印以下信息,说明clone成功啦!

    clone成功!

    再看看gvfs_clone_test目录下,src中才是你项目中的代码

    目录结构

    5、原理

    一个巨大的代码库,实际上开发者在开发的时候只用到一部分文件,如果把所有的文件都下载下来,那就做了太多无用功啦。GVFS在clone代码的时候,看起来像是把所有的文件都clone下来了,实际上只clone了整个仓库的元数据,文件的内容并没有下载下来,等开发者用到某个文件的时候,GVFS才会把文件的内容下载到本地。所以GVFS的clone、checkout等操作就会快很多啦!

    相关文章

      网友评论

        本文标题:GVFS体验

        本文链接:https://www.haomeiwen.com/subject/awrchxtx.html