我有一个单独提交的.zip
格式的不同sdk版本的git repo。这实际上意味着在git历史记录中有一个完整的文件,当你克隆这个repo时,你会得到所有的东西,因为二进制文件之间的diff
是整个文件。
问题是,在几次提交之后,repo的大小将非常大(大约1次提交)。500 mb) .
我正在使用Yocto项目和SRC_URI
克隆整个历史的repo,这就是事情开始下降的地方,因为它下载了很多不必要的数据,这是时间和存储消耗。
有没有办法只获得一个(最后一个)提交下载的fetch任务与SRC_URI
没有历史记录(浅克隆)?或者改变do_fetch任务?
这是我想在Yocto中实现的:
git clone --depth repo_url
我不相信这完全是支持,至少根据Bitbake手册:
对浅层克隆的支持目前还没有实现,因为git不直接支持浅层克隆一个特定的git提交哈希(它只支持从标签或分支引用克隆)。
支持的似乎是克隆一次repo,并为它生成一个浅tarball (bitbake一直生成tarball以避免重新克隆repo),这应该会加快你的速度,你只是无法避免最初的完整克隆。
你想尝试的是使用BB_GIT_SHALLOW, BB_GENERATE_SHALLOW_TARBALLS和BB_GIT_SHALLOW_DEPTH。
当BB_GIT_SHALLOW
也被设置为"1"时,将BB_GENERATE_SHALLOW_TARBALLS
设置为"1"会导致bitbake在获取git库时生成浅镜像tarball。包含在浅镜像tarball中的提交数量由BB_GIT_SHALLOW_DEPTH
控制。
应该像下面的代码片段那样做:
BB_GIT_SHALLOW ?= "1"
# Keep only the top commit
BB_GIT_SHALLOW_DEPTH ?= "1"
BB_GENERATE_SHALLOW_TARBALLS ?= "1"