3

我想在 a 中保留一些二进制文件(文档、可执行二进制文件、图像等)git-annex,然后将它们作为git-submodules. 我认为这将使我能够在这些大文件更改时跟踪它们的正确版本,使旧项目与旧版本相关联,新项目与新版本相关联。

所以我为我的大文件制作了以下回购:

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

如果这些只是显示为指向其他存储库中正确文件的符号链接,我会很高兴。但是我想如果我可以根据需要制作副本就足够了:

git annex get data/annexed

这会将文件复制过来 - 我可以在otherrepo/.git/module/data/annexed/objects/. 但是当我这样做时,附加的文件只是死符号链接。我可以用 列出它们ls data/annexed/,但没人在家。

我是否试图做一些错误的事情?有没有办法来解决这个问题?这些错误是在其中git-submodule还是中git-annex?谢谢你的帮助!

4

2 回答 2

3

好吧,经过一番摆弄,我找到了解决方法。不过,我很想看到更好的东西。为后代发布此信息,但我希望找到更好的解决方案。

data/annexed中,有一个文件 ,.git其中包含对 的引用../../.git/module/data/annexed/。我删除了这个文件并将其替换为指向同一位置的符号链接。我现在可以../annexedrepo/从内部访问data/annexed,并且我的文件版本正确。我有点担心这种解决方法会导致未来的问题......

于 2013-08-14T17:26:32.973 回答
3

我正在使用相同的源树结构,也尝试使用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推/拉文件。查看更多关于 git-fat 的信息

于 2013-09-27T11:13:19.643 回答