微软和 GitHub 合作将 GVFS 迁移到 macOS,Linux
去年,微软宣布将使用 Git 版本控制系统进行 Windows 开发。微软就要修改Git来处理Windows开发的需求,但它表示想要将这些修改整合到标准的Git客户端中。
这个计划似乎进展顺利。GitHub正在进行修改,Microsoft 和 GitHub 将合作为MacOS和Linux带来合适的客户端。
由于Git的分支特性和在开发人员中的流行程度,微软希望将代码转移到Git上。但是转型面临三个问题:
-
Git并不是为广大开发人员设计的 - 超过2万人在开发代码库;
-
另外,Git并不是针对如此庞大的代码库设计的 - 无论是每个文件的文件数量和版本历史记录,还是纯粹的大小,都超过了300GB;
-
使用标准的Git时,源代码库的速度慢得令人无法接受 - 常见的操作(例如检查哪些文件已被修改)都需要很多分钟。
该公司的解决方案是开发Git虚拟文件系统(GVFS)。GVFS 全称是 Git Virtual File System. GVFS 对 git 仓库存储文件系统进行虚拟化,对应 git 而言,这就是一个混合的文件系统,但 GVFS 只下载所需的对象。GVFS 同时管理 git 一些非实际的 checkout 操作,用来提升类似 status、checkout 等操作的速度。目前该项目还在开发过程中。
使用GVFS,包含元数据以及仅显式检索的源代码文件的Git存储库本地副本被虚拟化。通过取消复制每个文件(检查每个文件并对其进行修改),存储库的磁盘占用空间和使用速度大大提高。微软修改了Git来处理这个虚拟文件系统,这样客户端就不必尝试访问本地不可用的的文件。并且添加了一个新的传输协议来选择性地从远程存储库中检索单个文件。
GitHub参与是因为公司希望满足企业客户的需求。开源,免费的GitHub托管也不是非要微软做扩展工作不可 - 显然,如果有人要使用标准的Git,那么Git必须足够好的来满足他们的开发过程。但企业在有偿方面,情况会有所不同。某些行业有大量的存储库则会给Git带来问题;例如,游戏仓库通常在体积上大并不是因为它们拥有数百万个文件和数十年的历史,而是因为它们拥有大量的图形和其他资源。微软对Git所做的扩展改进对于这种大型的存储库也是有用的。因此,在GitHub中拥有相同的改进系列将使Git能够更好地为这些社区服务。
顾名思义,GVFS需要一个文件系统驱动程序才能工作。 Windows部门与工程团队合作,为Windows添加功能以提高效率。最终目的是将此功能转换为受支持的可扩展API,并在某些时候移动新的OneDrive placeholders 以使用相同的API。