这是我做错了什么,还是更广泛的错误?
如果我在一个空目录中执行以下 git 命令:
git init
git submodule add https://github.com/doctrine/DoctrineMongoODMModule \vendor\DoctrineMongoODMModule
git submodule update --init --recursive
一切顺利, pull 了多个子模块,然后失败并输出以下内容:
fatal: not a git repository: ../../../../../../../../../../.git/modules/vendor/DoctrineMongoODMModule/modules/vendor/mongodb-odm/modules/lib/vendor/doctrine-mongodb/modules/lib/vendor/doctrine-common
Unable to find current revision in submodule pat 'lib/vendor/doctrine-common'
我做了更多的挖掘工作。导致问题的子模块中的 .git 文件具有以下内容:
gitdir: ../../../../../../../../../../.git/modules/vendor/DoctrineMongoODMModule/modules/vendor/mongodb-odm/modules/lib/vendor/doctrine-mongodb/modules/lib/vendor/doctrine-common
我已经检查了那个 gitdir 路径,它确实存在。但是,我使用的是 Windows XP 机器,如果我在 cmd 提示符下尝试这样做,我会遇到问题:
C:\xds\sds\vendor\DoctrineMongoODMModule\vendor\mongodb-odm\lib\vendor\doctrine-
mongodb\lib\vendor\doctrine-common>cd ../../../../../../../../../../.git/modules
/vendor/DoctrineMongoODMModule/modules/vendor/mongodb-odm/modules/lib/vendor/doc
trine-mongodb/modules/lib/vendor/doctrine-common
The system cannot find the path specified.
看起来目录更改字符串太长了,因为如果我将它分成两部分它就可以工作:
C:\xds\sds\vendor\DoctrineMongoODMModule\vendor\mongodb-odm\lib\vendor\doctrine-
mongodb\lib\vendor\doctrine-common>cd ../../../../../../../../../../.git/modules
/vendor/DoctrineMongoODMModule/modules/vendor/mongodb-odm/modules/lib/vendor/doc
trine-mongodb/
C:\xds\sds\.git\modules\vendor\DoctrineMongoODMModule\modules\vendor\mongodb-odm
\modules\lib\vendor\doctrine-mongodb>cd modules/lib/vendor/doctrine-common
C:\xds\sds\.git\modules\vendor\DoctrineMongoODMModule\modules\vendor\mongodb-odm
\modules\lib\vendor\doctrine-mongodb\modules\lib\vendor\doctrine-common>
如有任何建议或帮助,我们将不胜感激。 干杯。
最佳答案
好的,所以我解决了这个问题。 Mingw32 有路径长度限制,这与 windows 路径长度限制有关(参见 msdn )。通过缩短 gitdir 路径解决了问题。我没有使用相对路径,而是将其更改为绝对路径,witch elimaties ../../../../../../../../../。 ./
从 gitdir 字符串中换取 c:/xds/sds
。这种缩短刚好足以让一切顺利。
关于git - 为什么来自 github 的递归子模块更新对于 DoctrineMongoORMModule 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10327628/