如何告诉composer将哪个键用于给定的composer存储库?

时间:2014-10-24 06:49:20

标签: php git ssh composer-php

我有以下情况:

我在bitbucket上的私有存储库上托管了一个项目,我使用部署密钥#1。

在这个项目中,composer文件是一个托管在一个令人满意的存储库上的依赖项,并使用部署密钥#2通过另一个私有bitbucket存储库。

我将部署密钥#1存储在〜/ .ssh / id_rsa中,因此git pull开箱即用,部署密钥#2存储在〜/ .ssh / id_composer中 如何在运行composer update时告诉作曲家使用第二个键?

这是我迄今为止在composer.json中所做的,但它没有帮助,而且我无法找到我应该指定的必要选项。

"repositories": [
    {
    "type": "composer",
    "url": "http://custom-satis-repo-url",
    "options": {
        "git": {
        "pubkey_file": "~/.ssh/id_composer.pub",
        "privkey_file": "~/.ssh/id_composer"
        }
    }
    }
],

任何帮助都将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:6)

实现此目的的一种方法是使用ssh配置文件。

更一般地说,这允许您配置SSH连接以使用“虚拟”主机的特定凭据,从而允许您更改连接到Git repos的方式,因此可用于修改使用ssh的Composer依赖关系

编辑vim ~/.ssh/config,例如

Host fake-repo-url
User git
HostName actual-repo-url
IdentityFile ~/.ssh/id_composer

您需要将fake-repo-urls放入令人满意的package.json中,这会使任何没有配置的人都无用 - 但我认为这很好,因为您限制访问。

(我使用这个技巧来掩盖个人帐户在只读部署主机上的'编辑 - 远程',这需要非常偶然的提交!)

ssh config上有很多指南,例如this one at nixCraft

第二个想法:

或者您可以调查'scripts' option in Composer。您可以运行一个脚本,在更新/安装过程中交换一些东西。