2017-11-16 5 views
0

私は、次のcomposer.jsonを持っている:私は実行時にComposerを使用してシャロークローンを実行するにはどうすればよいですか?

{ 
    "require": { 
     "php": ">=5.2.0", 
     "queueit/KnownUser.V3.PHP": "dev-master" 
    }, 
    "config": { 
     "autoloader-suffix": "ComposerManager", 
     "vendor-dir": "../../../all/libraries/composer" 
    }, 
    "prefer-stable": true, 
    "repositories": [ 
     { 
      "type": "package", 
      "package": { 
       "name": "queueit/KnownUser.V3.PHP", 
       "version": "dev-master", 
       "source": { 
        "type": "git", 
        "url": "https://github.com/queueit/KnownUser.V3.PHP.git", 
        "reference": "master" 
       } 
      } 
     } 
    ] 
} 

は、しかし:

$ composer -vvv update 
... 
Cloning master 
Executing command (CWD): git clone --no-checkout 'https://github.com/queueit/KnownUser.V3.PHP.git' '.../sites/all/libraries/composer/queueit/KnownUser.V3.PHP' && cd '.../sites/all/libraries/composer/queueit/KnownUser.V3.PHP' && git remote add composer 'https://github.com/queueit/KnownUser.V3.PHP.git' && git fetch composer 

クローニングプロセスは、非常に長い時間がかかり、リポジトリのサイズは25メガバイトの上に育つ:

$ du -hs ~/.composer/cache/vcs/https---github.com-queueit-KnownUser.V3.PHP.git/ 
25M ~/.composer/cache/vcs/https---github.com-queueit-KnownUser.V3.PHP.git/ 

次に、Composerはタイムアウトで停止します。

[Symfony \ Component \ Process \ Exception \ ProcessTimedOutException]
プロセス "git clone --no-checkout 'https://github.com/queueit/KnownUser.V3.PHP.git' '.../sites/all/libraries/composer/queueit/KnownUser.V3.PHP' && cd '.../sites/all/libraries/composer/queueit/KnownUser.V3.PHP' && git remote add composer 'https://github.com/queueit/KnownUser.V3.PHP.git' && git fetch composer"が300秒のタイムアウトを超えました。

リポジトリが大きすぎてすべてのgitオブジェクトを複製できないと仮定します。私はa shallow cloneを使用して迅速にリポジトリのクローンを作成するにはどうすればよい


例えば、--depth 1または--single-branch gitパラメータをGitコマンドに渡すことで、Composerによって自動的に選択されますか?

私は変更がcomposer.jsonファイル内の自己完結型であることを期待するので、composer installを実行しているときに、他のシステムや他のユーザーがこのファイルを呼び出したときに外付けの構成は必要ありませんする必要があります。

答えて

2
のgitパラメータがハードコードされているような公式(任意パッチなし)サポートされていない 作曲を用い

浅いクローニング。

これを追加する機能リクエストが既にあります:Add support for git shallow clones。ただし、この機能を実装すると、問題が発生する可能性があります(深さがそれほど高くない場合は、ロックされたコミットに達しないなど)@stofなどです。

さらに、--git-clone-depthパラメータを追加して浅いクローンを実装しようとするpull requestがあります(テストでは、いくつかの良い結果が示されています)。しかし、変更はfaster git clones using cacheのために中止されました。迅速なハックのために


、それは例えば、src/Composer/Downloader/GitDownloader.phpdoDownload()でGitのパラメータを編集することが可能ですこの行に--depth 1 --single-branchを変更することで:

$command = 'git clone --no-checkout ...' 

かをGitの設定に深さ1設定を適用する方法を見つけます。


大きなリポジトリの(任意のハックなし)最も簡単な回避策は、同じように変数を指定することでタイムアウトを増やすことである。

COMPOSER_PROCESS_TIMEOUT=0 composer install 
関連する問題