2015-04-01 61 views
2

我想在我的基于PHP的项目中使用adldap/adldap库。虽然此软件包的维护人员尚未将此软件包添加到packagist,但他们已包含composer.json文件。所以,通常情况下,我只需添加以下我的MY composer.json,并开始我的一天。作曲家:喜欢VCS Repository over Packagist

"repositories": [ 
{ 
    "type": "vcs", 
    "url": "https://github.com/adldap/adLDAP" 
}], 

"require": { 
    /* my other packages */ 
    "adldap/adldap":"4.04" 
}, 

但是,这是行不通的,因为adldap/adldap已经声称by a different project in packagist,和作曲家总是假定我希望packagist包。 (让事情变得更加复杂,packagist包是原始项目的一个分支,并且是不接受上游变更的分支)。

有没有办法让作曲家更喜欢配置的VCS存储库中的版本?或者我坚持亲自分包,更改名称,并将作曲家指向我的叉子? (或者other forks之一保持解决这个问题?)

+0

我想说,如果Packagist标识符不指向真正的文章,即使不是规则,也会蔑视系统的精神。有没有办法通知Packagist管理员?你可以联系fork维护者看看他们是否愿意改变它? (我想现在已经太晚了,如果其他人依靠这个标识符)。 – halfer 2015-04-01 17:30:12

+2

@halfer好像我不是唯一能注意到的人 - https://github.com/ztec/adLDAP/issues/5我可能会通过twitter将它运行到旗杆上,但不管精神/规则,很高兴知道是否有办法告诉作曲家哪个包更喜欢 – 2015-04-01 20:13:49

+0

好点。我已经在这个问题上添加了一个注释来提请注意这个问题。 – halfer 2015-04-01 21:26:43

回答

5

该软件包的问题是,“v4.0.4”版本分支不包含composer.json文件。这意味着作曲家不能拿起它并跳过这个分支。

您可能可以使用要求内联别名来使此工作。 https://getcomposer.org/doc/articles/aliases.md#require-inline-alias

{ 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "https://github.com/adldap/adLDAP" 
     } 
    ], 
    "require": { 
     "adldap/adldap": "dev-master as 4.0.4-dev" 
    } 
} 

这会从GitHub和别名它dev-master版本的adldap/adldap取到4.0.4-dev

我不知道这是否是一种好方法,也许太冒昧,但它会起作用。

未来:他们应该在他们的下一个版本中包含composer.json文件,以便您可以摆脱内联别名并需要普通版本。


上面的示例使用相同的回购,但不同的分支用于别名。 下一个示例使用不同的回购协议,并使用参考分支(称为补丁)。这个repo /分支被用来代替原来的软件包。 “引用分支”意味着你从分叉回购中选择一个分支,并用“dev-”作为前缀。 经过composer install之后,您应该获得adldap/adldap的分叉回购,而不是packagist中的回购。

{ 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "https://github.com/repo-of-the-fork/adldap" 
     } 
    ], 
    "require": { 
     "adldap/adldap": "dev-patch" 
    } 
} 

虽然这可能会独立解决,但当其他软件包依赖特定版本的adldap时,它可能无法解析。为了解决这个问题,你可以再次使用“inline alias”技巧:dev-patch as 4.0.4-dev

+0

有用,谢谢!有没有一个命令让你意识到4.0.4分支缺少一个composer.json,还是只是本能? – 2015-04-01 20:10:21

+0

我很高兴我能帮上忙!我以详细模式使用了Composer:'composer install -vvv' – 2015-04-01 20:18:27

+0

另外,对于其他发布,我仍然有兴趣知道作曲家是否有办法说:“当我尝试使用时,使用该存储库上的版本, *“作为版本,如果与packagist版本一起使用,这就是导致这个问题的原因。 – 2015-04-01 20:28:00