Question

Is this something I am doing wrong, or a wider bug?

If I execute the following git commands in an empty directory:

git init
git submodule add https://github.com/doctrine/DoctrineMongoODMModule \vendor\DoctrineMongoODMModule
git submodule update --init --recursive

The all goes well, multiple submodules are pulled, and then it fails with the following output:

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'

I've done a bit more digging. The .git file in the submodule that is causing the problem has the following contents:

gitdir: ../../../../../../../../../../.git/modules/vendor/DoctrineMongoODMModule/modules/vendor/mongodb-odm/modules/lib/vendor/doctrine-mongodb/modules/lib/vendor/doctrine-common

I have checked that gitdir path, and it does exist. However, I am using a Windows XP machine and if I attempt this from the cmd prompt I have problems:

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.

It appears that the directory change string is too long, because if I split it into two parts it works:

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>

Any advice or help would be appreciated. Cheers.

Was it helpful?

Solution

Ok, so I worked out the problem. Mingw32 has a path length limit, which is related to the windows path length limit (see msdn). Problem was overcome by shortening the gitdir path. Rather than using a relative path, I've changed it to an absolute path, witch elimaties ../../../../../../../../../../ from the gitdir string in exchange for c:/xds/sds. That shortening is just enought to make it all go.

OTHER TIPS

You did at the wrong url to the submodule. If you check the url you did use in your command (https:\\github.com\doctrine\DoctrineMongoORMModule) you'll notice that you do get an 404-error. The correct url for that project is either https://github.com/doctrine/DoctrineMongoODMModule.git or git://github.com/doctrine/DoctrineMongoODMModule.git (obtainable from the two buttons HTTP or Git Read-Only at the top).

To fix this, open the .gitmodules in your repository's root directory and look for lines like

[submodule]
    path = \vendor\DoctrineMongoORMModule
    url = https:\\github.com\doctrine\DoctrineMongoORMModule

and replace the url by the correct one. You also might replace all your forward-slashes with backward slashes and remove the leading slash at the path (if you don't want it end up in your root-directory). Finally, re-run your last command git submodule update --init --recursive.

As superdweebie said, there is a length problem in the git dir path. But he didn't say where you can find the gitdir string :

It's located on the .git inside your recursive-submodule (the cloned one)

I got the same error and fixed it, but I don't think it has to do with windows path length limit like superdweebie said. It's simply like the error said Unable to find current revision in submodule path and The system cannot find the path specified. You have to edit manually the correct relative path in the .git file or using absolute path.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top