2

我已经在我的本地主机中克隆了一个在 VPS 中正常工作的存储库。

$ sudo git clone https://msalsas@bitbucket.org/msalsas/itransformer-2.0.git

但是当我尝试清除缓存时:

$ sudo php app/console cache:clear

我收到此错误:

PHP Warning:  require(/home/manolo/MiServer/itransformer-2.0/vendor/kriswallsmith/assetic/src/functions.php): failed to open stream: No such file or directory in /home/manolo/MiServer/itransformer-2.0/vendor/composer/autoload_real.php on line 42
PHP Fatal error:  require(): Failed opening required '/home/manolo/MiServer/itransformer-2.0/vendor/kriswallsmith/assetic/src/functions.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/manolo/MiServer/itransformer-2.0/vendor/composer/autoload_real.php on line 42

我在 bitbucket.org 上有存储库。这是我在 kriswallsmith 的供应商目录表单 bitbucket 存储库中看到的内容:

资产 → 0e18168c45df [0e18168c45df]

为什么看不到里面的文件和文件夹?它也发生在所有供应商目录中。我的本地主机中的供应商目录是空的。

我试过这样做:

$ sudo php composer.phar self-update
$ sudo php composer.phar update kriswallsmith/assetic

我得到下一个错误:

Loading composer repositories with package information
Updating dependencies (including require-dev)                             
 - Removing twig/twig (v1.13.1)
 - Installing twig/twig (v1.13.2)
Loading from cache

 - Updating kriswallsmith/assetic 1.1.x-dev (0e18168 => 1d671c5)



[RuntimeException]                                                           
The .git directory is missing from /home/manolo/MiServer/itransformer-2.0/v  
endor/kriswallsmith/assetic, see http://getcomposer.org/commit-deps for mor  
e information                                                              



update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-custom-installers] [--no-scripts] [--no-progress] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [packages1] ... [packagesN]

很明显,因为vendor/kriswallsmith/assetic内没有文件夹或文件。

如果我输入:

$ sudo php composer.phar install

我明白了:

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
- Removing twig/twig (v1.13.2)
- Installing twig/twig (v1.13.1)
Downloading: 100%         

Generating autoload files
PHP Warning:  require(/home/manolo/MiServer/itransformer-2.0/vendor/kriswallsmith/assetic/src/functions.php): failed to open stream: No such file or directory in /home/manolo/MiServer/itransformer-2.0/vendor/composer/autoload_real.php on line 43
PHP Fatal error:  require(): Failed opening required '/home/manolo/MiServer/itransformer-2.0/vendor/kriswallsmith/assetic/src/functions.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/manolo/MiServer/itransformer-2.0/vendor/composer/autoload_real.php on line 43
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap handling the post-install-cmd event terminated with an exception



[RuntimeException]                                     
An error occurred when generating the bootstrap file.  



install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader]
4

2 回答 2

3

错误是提交的供应商目录。特别是如果通过 git 检索供应商,则会执行供应商的整个 git 克隆。然后,如果您提交更改,除了已经从另一个 git 存储库添加的文件之外,所有更改都会被添加。

很简单:永远不要将供应商提交给 VCS。你有 composer 并且有一个承诺的 composer.lock 每个人都会得到完全相同的版本。

如果您必须更改捆绑代码,请对其进行分叉并从您的分叉中加载代码!. 稍后,如果更改通常会影响捆绑包,请创建对原始包的拉取请求;)

于 2013-12-28T20:56:25.340 回答
0

要重复评论中的答案:

问题是,他将供应商目录提交给了他的 git。

解决方案:永远不要将您的供应商目录放入您的 VCS

于 2013-12-28T02:00:12.430 回答