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