в .gitmodules для пути xx не найдено отображение подмодулей - PullRequest
0 голосов
/ 19 февраля 2020

Я пробовал много разных ответов в стеке, но ни один из них не работает. Я пытаюсь добавить хранилище как подмодуль, который содержит другой подмодуль. Итак, что я делаю, это:

git submodule add -b develop git@github.com:submoduleRepo

Подмодуль добавляется в репозиторий и содержит в нем папку подмодуля. Однако папка пуста. Поэтому я выполняю следующую команду:

git submodule update --init --recursive

, которая ничего мне не возвращает. Если я go в каталог подмодуля cd submoduleRepo, а затем введите git подмодуль, я получаю:

fatal: no submodule mapping found in .gitmodules for path 'src/app/nestedSubmoduleRepo'

Это мои .gitmodules основного репо:

[submodule "submoduleRepo"]
    path = submoduleRepo
    url = git@github.com:submoduleRepo.git
    branch = develop

А внутри submoduleRepo / .gitmodules:

[submodule ".\\src\\app\\nestedSubmoduleRepo"]
    path = .\\src\\app\\nestedSubmoduleRepo
    url = git@github.com:nestedSubmoduleRepo.git

Почему я продолжаю получать эту ошибку и каталог не заполняется?

РЕДАКТИРОВАТЬ:

Однажды я я запускаю --init --recursive, как только он выдаёт мне ошибку:

fatal: No url found for submodule path 'submoduleRepo/src/app/nestedSubmoduleRepo' in .gitmodules
Failed to recurse into submodule path 'submoduleRepo'

My git config:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = git@github.com:mainRepo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[submodule "submoduleRepo"]
    url = git@github.com:submoduleRepo.git
    active = true

1 Ответ

2 голосов
/ 20 февраля 2020

Проблема в том, что в вашем репозитории субмодулей используются обратные слеши в файле .gitmodules. Git использует прямые косые черты для путей в репозитории, потому что они работают на разных платформах (а обратная косая черта не работает), и у него нет возможности узнать, предназначен ли ваш репозиторий кроссплатформенным или нет.

Вы ' Вам нужно будет обновить репозиторий субмодулей, чтобы он содержал правильные записи в файле (и вы также должны удалить компонент пути .). После того как вы зафиксировали это и обновили родительский репозиторий новым коммитом, git submodule update --init --recursive должен работать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...