#windows #git #git-submodules #junction
#Windows #git #git-подмодули #соединение
Вопрос:
Если каталог подмодуля является соединением (Windows), git не определяет его как репозиторий и не может работать с таким подмодулем.
Например, представьте, что находится репозиторий root
c:srcroot
, в котором есть один подмодуль subrepo
, который является соединением с другим диском. Итак c:srcrootsubrepo
, ссылки на d:submodulessubrepo
.
Если вы попробуете любую команду git c:srcrootsubrepo
, вы получите сообщение об ошибке, подобное
$ git pull
фатальный: не репозиторий git: d:/submodules/subrepo/../.git/modules/subrepo
Как я могу решить эти проблемы?
Ответ №1:
Как вы видите, проблема в том, что git разрешает соединение и работает с каталогом назначения, вместо того, чтобы использовать исходный путь.
Чтобы решить проблему соединения с git и подмодулями, достаточно выполнить второе соединение, но обратным образом, с .git
каталогом родительского представителя. Это должен быть родной брат subrepo
каталога, чтобы его можно было найти при построении ../.git/
относительного пути.
d:submodules.git ==> c:srcroot.git
c:srcrootsubrepo ==> d:submodulessubrepo
Обратите внимание, что это может привести к путанице, если у вас разные наборы подмодулей, поэтому в этом случае просто сгруппируйте их в один и тот же каталог, чтобы избежать конфликтов с дублирующимися .git
каталогами.