Gitee 目前已经初步支持 Git 部分克隆

https://blog.gitee.com/wp-content/uploads/2020/02/git%E5%85%8B%E9%9A%86.jpg

最近 Git 2.25.0 发布,这次发布推出了 partial clones 功能,partial clones 即用户克隆远程存储库的时候,能够选择只下载自身所需的对象,而不是存储库的全部对像(或者特定 commit 所关联的全部对像)。这和微软以前发布的 VFSForGit 原理有殊途同归之妙。使用部分克隆能够大大的减少用户克隆巨大存储库的耗时,也会减少网络数据传输。部分克隆彻底依赖 Git Wire Protocol (v2 Protocol)。通过几行代码的适配和线上的批量更新,Gitee 目前已经支持部分克隆了,当你的 Git 版本大于等于 2.25.0,则能够使用以下的命令克隆特定的存储库:git

git -c protocol.version=2 clone --filter=blob:none git@gitee.com:YOUR-COUNT/YOUR-REPO.git
复制代码

在这个命令中 -c protocol.version=2 确保始终使用 v2 协议(固然能够 git config -g protocol.version=2 设置始终使用 v2 协议), --filter 则对克隆过程进行过滤,详细说明以下:github

更多的部分克隆过滤器参数信息能够参考:rev-list-options.txt#L735-L780bash

基于部分克隆实现稀疏检出(这里须要提早设置 git -c protocol.version=2):网络

$ git clone --filter=blob:none --no-checkout /your/repository/here repo
$ cd repo
$ cat >.git/info/sparse-checkout <<EOF
/*
!/*
EOF
$ git config core.sparseCheckout 1
$ git checkout .
复制代码

关于稀疏检出的更多细节能够参考相关文档。ui

与浅表克隆不一样的是,部分克隆可以建立提交,这和微软发布的 VFSforGit 相似,但 VFSforGit 实现了文件系统驱动级别的过滤器,能够使用文件系统占位符避免文件的下载,在读写这些文件时,ProjFS 则会从远程存储库下载这些文件。综合来看,Git 的部分克隆是一个巨大的进步,但还有很大的进步空间。google

Git 2.25.0 更新信息以下:spa

相关文章
相关标签/搜索