3

我需要捆绑一个我们一直在使用 git-lfs 但遇到问题的 git repo。

它会很好地捆绑在一起,但是当我来克隆它时,会发生此错误

正在下载 .../Dll's/DotNetZip.dll (458 KB) 下载对象时出错:.../Dll's/DotNetZip.dll (7dd20a2):涂抹错误:下载时出错 .../Dll's/DotNetZip.dll (7dd20a2291b05323bba04be4ae656d7635ae5e68a5a6fa2b9f86e27841846a31):批处理请求:缺少协议:“C:/...bundleName.bundle.git/info/lfs”

错误记录到 C:/.../.git\lfs\logs\20180831T093319.3979074.log git lfs logs last用于查看日志。错误:外部过滤器“git-lfs 过滤器进程”失败致命:../Dll's/DotNetZip.dll:涂抹过滤器 lfs 失败警告:克隆成功,但检出失败。您可以使用“git status”检查已签出的内容,然后使用“git checkout -f HEAD”重试签出

我似乎找不到任何关于 lfs 应该如何与 git bundle 一起使用的文档。我的 lfs 文件真正需要的只是将最新版本存储在捆绑包中,但似乎也找不到它可能在哪里。

4

2 回答 2

2

在 Ubuntu-20.04.1-LTS 中出现同样的错误,它仍然带有旧的 git-lfs 版本 2.9。

github.com/git-lfs中提到了该错误,并且在 git-lfs 2.10 或更高版本中进行了修复(此时最新版本为 2.13.2),并且应遵循以下步骤进行安装(另请参见wiki):

sudo apt install curl
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
git clone git@bitbucket.org:project/repo.git --recursive
cd repo/
git lfs install
git checkout some_branch

之后错误消失了。

于 2021-01-25T11:41:19.380 回答
0

我相信git bundle不支持git-lfs。但是,对于最新版本,git-lfs您可以使用本地“裸”类型的 git repos,而不是像 GitHub 或 GitLab 这样的基于 Web 的 repo 管理器。

要使用本地裸仓库创建一个 git repo 的“捆绑包”,包括来自 GitHub 的 lfs 数据:

首先,从 GitHub 克隆 repo 并获取所有内容:

git clone https://github.com/some-user/lfs-repo
cd lfs-repo
git fetch --all
git fetch --tags
git lfs install
git lfs fetch --all

然后创建一个新的裸仓库:

cd ..
mkdir bare-repo
cd bare-repo
git init --bare

然后将新的裸仓库作为远程仓库添加到克隆的仓库并将所有内容推送到它:

cd ../lfs-repo
git remote add bare file://$(pwd)/../bare-repo
git push --all bare
git push --tags bare
git lfs push --all bare

现在您的bare-repo. 您现在可以压缩它:

cd ..
tar -czvf bundle.tar.gz bare-repo

如果您想从“包”中检索数据,只需将文件复制到所需的主机,提取并使用file://URL 从中克隆。

参考:链接1链接2

于 2021-11-20T15:38:17.430 回答