2016-11-15 139 views
-1

我有一個git存儲庫,我保持我的vim配置。這棵樹包括一些git子模塊,指向其他人包含插件的回購站。爲什麼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存在,並且子樹回購在獨立使用子模塊時也沒有問題。

陌生人部分是,當我cd到.vim-files並在那裏運行命令時,錯誤如下所示:fatal: No url found for submodule path 'vim/.vim-files/vim/.vim-files/plugins/submodule1' in .gitmodules

任何人都可以解釋是什麼原因導致此行爲?子樹和子模塊是不兼容的還是我偶然發現了一個bug?

回答

1

我得到了同樣的錯誤。看起來這是由於git希望它們是相對的時候完全路徑的子模塊造成的。請參閱我的dotfiles回購中的警告註釋以供參考: https://github.com/palavrov/config#warning