git - 为什么来自 github 的递归子模块更新对于 DoctrineMongoORMModule 失败?

标签 git zend-framework2 doctrine-odm

这是我做错了什么,还是更广泛的错误?

如果我在一个空目录中执行以下 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/

相关文章:

git - 如何将 Sonar SCM 支持与非 Git 存储库的工作空间根一起使用

git - Bitbucket Cloud 将从 2018 年 12 月 1 日起禁用对 TLSv1 和 TLSv1.1 的支持

php - 如何正确地自动加载 Doctrine ODM 注释?

serialization - 使用 Doctrine MongoDB ODM 进行文档序列化

git - 撤消最后一个 git add -A

git - git 命名空间的用例是什么?

php - ZF2 2 个同名模块,来自供应商的不同来源

php - 学说 2 : Update Entity Using Table Schema

mysql - Doctrine2 - 使用分组方法添加每个月的总计

sqlite - Symfony CMF 如何保存到数据库中?