git中的附加子模块
我想将一些二进制文件(文档、可执行二进制文件、图像等)保存在git中的附加子模块,git,git-submodules,git-annex,Git,Git Submodules,Git Annex,我想将一些二进制文件(文档、可执行二进制文件、图像等)保存在git附件中,然后将它们作为git子模块包含在几个项目中。我认为这将允许我在这些大文件更改时跟踪它们的正确版本,将旧项目链接到旧版本,将新项目链接到新版本 因此,我对我的大文件进行了以下回购: mkdir annexedrepo cd annexedrepo cp big_files annexedrepo/ git init git annex init git annex add . 然后转到我的项目repo并将它们作为子模块添加
git附件中
,然后将它们作为git子模块
包含在几个项目中。我认为这将允许我在这些大文件更改时跟踪它们的正确版本,将旧项目链接到旧版本,将新项目链接到新版本
因此,我对我的大文件进行了以下回购:
mkdir annexedrepo
cd annexedrepo
cp big_files annexedrepo/
git init
git annex init
git annex add .
然后转到我的项目repo并将它们作为子模块添加
cd ../otherrepo
mkdir data
git submodule add ../annexedrepo data/annexed
我希望这些将仅仅作为符号链接出现在其他repo中的正确文件中。但我想如果我能按照我的需要制作副本就足够了:
git annex get data/annexed
这将复制文件-我可以在otherrepo/.git/module/data/attached/objects/
中看到它们。但当我这样做时,附加的文件只是死符号链接。我可以用ls data/attached/
列出它们,但是没有人在家
我是不是在做错事?有办法解决这个问题吗?这些bug是在
git子模块中还是在git附件中?谢谢你的帮助 好吧,稍加摆弄,我找到了一个解决办法。不过,我想看看更好的。为子孙后代发布这篇文章,但我希望找到更好的解决方案
在data/attached
中,有一个文件.git
,其中包含对./../.git/module/data/attached/
的引用。我删除了此文件,并将其替换为指向同一位置的符号链接。我现在可以从内部数据/附件
访问。/annexedrepo/
,并且我的文件是正确的版本。我有点担心这个解决方案会导致将来的问题…我使用的是相同的源代码树结构,并且还尝试使用git附件,但遇到了相同的问题。我发现可以使用git-fat
扩展来代替git-appendix
,并且没有这样的问题。因此,我的源代码树如下所示:
/project
.git
.gitmodules
...
<project files and folders>
...
submodule
.git
.gitattributes
.gitfat
...
<binary files>
...
git-fat
使用rsync
推/拉文件
git clone git://... project
cd project
git submodule init
git submodule update
cd submodule
git fat init
git fat pull