将二进制文件存储在 Git 中的其他位置



像很多人一样,我将 Git 与二进制文件一起使用,但现有的解决方案似乎都不适合我(git 插件如 git-annex、git-lfs、git fat 等......,子模块/子树(它只是将问题移到其他地方))。

所以我一直在考虑使用过滤器进行清洁和涂抹:

对于清洁:

#!/bin/bash
dest=/g/MO-F1/user/binary_folder
mkdir -p $dest
tmpfile=$(git rev-parse --show-toplevel)/tmp
cat > $tmpfile
sha=$(git hash-object --no-filters $tmpfile)
mv $tmpfile $dest/$sha
echo $sha

对于涂抹:

#!/bin/bash 
source=/g/MO-F1/user/binary_folder
tmpfile=$(git rev-parse --show-toplevel)/tmp 
cat > $tmpfile 
sha=$(cat $tmpfile) 
cat $source/$sha 
rm $tmpfile

我修改了 .gitattributes,以便相应的二进制文件由过滤器管理(在我的情况下是 .jpg 和 .png)

因此,脚本可以工作,二进制文件作为 blob 存储在 G:\MO-F1\user\binary_folder(组共享硬盘驱动器)中,而不是放在 .git 文件夹中!但是当我克隆相应的存储库(并添加两个脚本并修改 .gitattribute 时),我无法访问这些 blob,而只能访问"指针",即使我签出也是如此。

存储库的克隆如何正确访问组共享中的文件?

感谢您的回复,我希望我已经足够清楚了

与编写脚本以将 blob 移动到另一个文件夹相比,我更愿意将所有这些二进制文件保存在另一个 git 存储库中。通过使用另一个存储库,您可以通过 git 子模块或存储库工具来管理它

最新更新