【问题标题】:How to clone repository with Composer without --prefer-source? (using Symfony 2)如何在没有 --prefer-source 的情况下使用 Composer 克隆存储库? (使用 Symfony 2)
【发布时间】:2013-02-25 19:01:44
【问题描述】:

场景:我正在使用 Symfony 2.2。在我的所需包列表中也是我的 github 存储库之一,我们称之为“TestLib”。

我知道我可以将 github url 定义为 Symfony 的 composer.json 中的附加存储库,以通过 Composer 从 Github 下载“TestLib”。

问题:我无法提交到“TestLib”存储库,因为“TestLib”目录中没有本地 .git 目录。我猜作曲家是从 Github 获取一个 zip 而不是克隆它。

所以我的问题是:有没有办法在 Symfony 的 composer.json 中指定 Composer 应该克隆 TestLib?

问题 2:也许我的工作流程是错误的 - 所以如果你也有这种情况 - 你会如何处理?

【问题讨论】:

  • 为什么排除 --prefer-source 作为可能的解决方案?
  • 在 Google 搜索我遇到的问题后,我偶然发现了这个问题。我的猜测是作者不想获取所有内容的来源,而只是为了 TestLib,因为这是我目前遇到的问题。哇,要回答一个问题却发现你是一个月前提出这个问题的人,这真是令人发指的 stackInception

标签: php symfony composer-php


【解决方案1】:

如果我发现供应商有问题,我通常会使用 rm -rf vendor/foo/bar 将其删除,然后运行 ​​composer install --prefer-source 以将其作为 git 存储库取回。

【讨论】:

  • 但是您将每个包都作为源,我们需要一种方法来指定添加到 composer.json 的 require 部分的单个包的 perfer-source
【解决方案2】:

@dev 添加到包版本也会克隆存储库。

{
  "require": {
    'package': '*@dev'
  }
}

也可以将source 设置为composer.json 中的首选项

{
 "config": {
     "preferred-install": "source"
 }
}

【讨论】:

    【解决方案3】:

    我所做的是将我的 github 存储库添加到 packagist.org 然后我这样做了:

    composer require malhal/createdby dev-master --prefer-source
    

    这似乎将 require 行添加到 composer.json 并将其作为 git repo 获取,不幸的是,这仅适用于一次,因此如果您无法重用 composer.json 进行新安装并且需要删除 require 行,然后记住再次执行相同的命令。此命令还会下载 git 存储库,您不必再进行作曲家更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 2017-08-24
      • 2016-04-06
      • 2018-02-20
      • 2019-01-26
      • 2016-12-12
      • 2016-02-26
      相关资源
      最近更新 更多