【问题标题】:Why does git subtree prevent init-ing embedded submodules?为什么 git subtree 会阻止初始化嵌入式子模块?
【发布时间】:2017-03-28 18:05:16
【问题描述】:

我有一个 git 存储库,用于保存我的 vim 配置。该树包含许多 git 子模块,这些子模块引用其他人的包含插件的存储库。

由于我对使用 GNU stow 设置适当的 dotfiles 存储库感兴趣,我认为集成 vim 存储库的最佳方法是将其子树化到 dotfiles 存储库中。由于我的 vim 配置是从其他人那里分叉的,我认为这样我可以轻松地合并上游所做的更改,同时保留我自己的插件和配置。

我已使用git subtree add -P vim/.vim-files https:\\xx master --squash 成功地将子树添加到我的存储库中。生成的树如下所示:

dotfiles/
├── .git
└── vim/
    ├── .vimrc
    └── .vim-files/   <= THE SUBTREE
        ├── .gitmodules
        └── plugins/
            └── submodule1/

之后当我从dotfiles/ 执行git submodule init 时,它会以fatal: No url found for submodule path 'vim/.vim-files/plugins/submodule1' in .gitmodules 失败。即使 URL 存在并且子树 repo 在独立使用时对子模块没有问题。

奇怪的是,当我 cd 进入 .vim-files 并在那里运行命令时,错误看起来像这样:fatal: No url found for submodule path 'vim/.vim-files/vim/.vim-files/plugins/submodule1' in .gitmodules

谁能解释导致这种行为的原因?是子树和子模块不兼容还是我偶然发现了一个错误?

【问题讨论】:

    标签: git git-submodules git-subtree


    【解决方案1】:

    我遇到了同样的错误。当 git 期望它们是相对的时,似乎它是由具有完整路径的子模块引起的。请参阅我的 dotfiles 存储库中的警告注释以供参考: https://github.com/palavrov/config#warning

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-30
      • 2012-04-10
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 2012-07-29
      • 1970-01-01
      相关资源
      最近更新 更多