我想在 git-annex
中保存一些二进制文件(文档、可执行二进制文件、图像等),然后将它们作为 git-submodules 包含在几个项目中
。我认为这将使我能够在这些大文件发生变化时跟踪它们的正确版本,使旧项目链接到旧版本,新项目链接到新版本。
所以我为我的大文件做了以下 repo :
mkdir annexedrepo
cd annexedrepo
cp big_files annexedrepo/
git init
git annex init
git annex add .
然后转到我的项目仓库并将它们添加为子模块。
cd ../otherrepo
mkdir data
git submodule add ../annexedrepo data/annexed
如果这些只是作为指向其他存储库中正确文件的符号链接(symbolic link)出现,我会很高兴。但我想如果我可以根据需要制作副本就足够了:
git annex get data/annexed
这会复制文件 - 我可以在 otherrepo/.git/module/data/annexed/objects/
中看到它们。但是当我这样做时,附件文件只是死符号链接(symbolic link)。我可以使用 ls data/annexed/
列出它们,但没人在家。
我是不是在做一些错误的事情?有没有办法来解决这个问题?这些错误是在 git-submodule
还是 git-annex
中?感谢您的帮助!
最佳答案
我正在使用相同的源代码树结构,也尝试使用 git-annex
但遇到了同样的问题。我发现可以使用 git-fat
扩展名代替 git-annex
并且没有这样的问题。所以我的源代码树看起来像这样:
/project
.git
.gitmodules
...
<project files and folders>
...
submodule
.git
.gitattributes
.gitfat
...
<binary files>
...
克隆这样一个项目
git clone git://... project
cd project
git submodule init
git submodule update
cd submodule
git fat init
git fat pull
git-fat
使用 rsync
来推送/pull 文件。 See more about git-fat .
关于git - git中的附加子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18238140/