git - git中的附加子模块

标签 git git-submodules git-annex

我想在 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/

相关文章:

windows - 可以在 Windows 上运行 git-annex 吗?

git - 如何为 git 远程存储库定义一个替代的远程 url?

git - git 和 append-moSTLy 文件的策略

git - `git submodule update --remote` vs `git pull --recurse-submodule` vs `git submodule foreach git pull origin main`

git - 如何在 Git 存储库中移动现有的 Git 子模块?

git - 防止 git 子模块发生重大更改的工作流程

ruby-on-rails-3 - Rails、Git 和添加迁移

ios - 我的 iOS 开发者证书或私钥在 git 中吗?

android - Drawables 不会推送到 github Android Studio