更改程序包的Composer git源

时间:2013-01-31 23:17:57

标签: php github composer-php git-fork

我使用Composer与这个composer.json:

拉入一个包
{
    "require": {
        "torophp/torophp": "dev-master",
    },
}

当我运行composer install时,它似乎直接从GitHub中提取此包。

我在github上创建了一个repo的fork,但有一些小改动。有没有办法让作曲家在GitHub而不是原版上拉我的版本?

1 个答案:

答案 0 :(得分:42)

如果这是您的composer.json

"require": {
  "torophp/torophp": "dev-master"
}

并且您想要更改它并使用您的fork,只需将您的存储库添加到composer.json,如下所示:

"repositories": [
   {
     "type": "vcs",
     "url": "https://github.com/your-github-username/torophp"
   }
]

重要:请勿更改"require"部分,必须继续使用torophp/torophp

添加"repositories"部分后,运行composer update(或composer.phar update),然后编辑将下载您的分叉(即使它回显“安装torophp / torophp”< / em>在操作期间)。


更新(2014年9月18日): 正如@efesaid在评论中提到的那样:

  

如果您的包在packagist上发布,则需要添加   --prefer-source选项强制从VCS安装。

<小时/> 注意:对于那些从HTTP(S)源提取问题的用户(即在尝试更新时获得[RuntimeException] Failed to clone https://github.com/your-github-username/torophp, could not read packages from it),您可以更改composer.json以使用git协议代替。为此,请按以下方式更改composer.json并再次运行composer update

"repositories": [
   {
     "type": "git",
     "url": "git://github.com/your-github-username/torophp.git"
   }
]

现在进入vendor/torophp/torophp并运行git remote -v进行双重检查,以便使用所需的存储库源。

从那里,您可以将更改提交到fork并从origin(git pull origin master)更新它。

<小时/> 更新:要在GitHub上使用私有存储库,必须使用git协议,并且还必须为git客户端安装SSH密钥。

作曲家参考:Loading a package from a VCS repository