Использование подмодулей git в качестве соединений в Windows

#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 каталогами.