3

これは私が間違っていることですか、それともより広いバグですか?

空のディレクトリで次のgitコマンドを実行すると:

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

すべてがうまくいき、複数のサブモジュールがプルされ、次の出力で失敗します。

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.

ディレクトリ変更文字列が長すぎるようです。2つに分割すると機能するためです。

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>

アドバイスや助けをいただければ幸いです。乾杯。

4

4 に答える 4

4

さて、私は問題を解決しました。Mingw32にはパス長の制限があり、これはWindowsのパス長の制限に関連しています(msdnを参照)。この問題は、gitdirパスを短くすることで解決されました。相対パスを使用するのではなく、絶対パスに変更しました。../../../../../../../../../../代わりにgitdir文字列からエリマティを取得しますc:/xds/sds。その短縮はそれをすべてうまくいくのにちょうど十分です。

于 2012-04-26T23:14:15.053 に答える
2

サブモジュールへのURLを間違えました。コマンド(https:\\github.com\doctrine\DoctrineMongoORMModule)で使用したURLを確認すると、404エラーが発生することがわかります。そのプロジェクトの正しいURLは、https://github.com/doctrine/DoctrineMongoODMModule.gitまたは(2つのボタンまたは上部git://github.com/doctrine/DoctrineMongoODMModule.gitから取得可能)のいずれかです。HTTPGit Read-Only

これを修正するに.gitmodulesは、リポジトリのルートディレクトリでを開き、次のような行を探します。

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

URLを正しいものに置き換えます。また、すべてのスラッシュを円記号に置き換えて、パスの先頭のスラッシュを削除することもできます(ルートディレクトリに配置したくない場合)。最後に、最後のコマンドを再実行しますgit submodule update --init --recursive

于 2012-04-26T15:18:53.883 に答える
2

superdweebieが言ったように、gitdirパスに長さの問題があります。しかし、彼はあなたがgitdir文字列を見つけることができる場所を言いませんでした:

これは、再帰サブモジュール(複製されたもの)内の.gitにあります

于 2012-09-10T08:50:37.570 に答える
0

同じエラーが発生して修正されましたが、superdweebieが言ったように、Windowsのパスの長さの制限とは関係がないと思います。それは単にエラーが言ったようなものUnable to find current revision in submodule pathですThe system cannot find the path specified.gitファイル内の正しい相対パスを手動で編集するか、絶対パスを使用する必要があります。

于 2013-09-20T07:23:48.087 に答える