2016-11-15 10 views
-1

У меня есть git-репозиторий, в котором я сохраняю конфигурацию vim. Это дерево включает в себя несколько подмодулей git, которые ссылаются на репозитории других людей, которые содержат плагины.Почему git-поддерево предотвращает инициализацию встроенных подмодулей?

Поскольку я заинтересован в создании правильного репозитория dotfiles с утилью GNU, я подумал, что лучший способ интегрировать репозиторий 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/ 

Когда я выполняю git submodule init из dotfiles/ после этого, он терпит неудачу с fatal: No url found for submodule path 'vim/.vim-files/plugins/submodule1' in .gitmodules. Несмотря на то, что URL-адрес существует, и репозиторий поддерева не имеет проблем с подмодулями при автономном использовании.

Незнакомая часть, когда я подключаюсь к .vim-files и запускаю там команду, ошибка выглядит так: fatal: No url found for submodule path 'vim/.vim-files/vim/.vim-files/plugins/submodule1' in .gitmodules.

Может ли кто-нибудь объяснить причину такого поведения? Являются ли поддеревья и подмодули несовместимыми или я наткнулся на ошибку?

ответ

1

У меня такая же ошибка. Кажется, что это вызвано подмодулем с полными путями, когда git ожидает, что они будут относительными. См. Предупреждение в моем реплике dotfiles для повторного использования: https://github.com/palavrov/config#warning