我的项目使用我自己的库,该库位于bitbucket.org上的私有Mercurial存储库中。该库没有配置composer.json。
我尝试将该库作为我项目的依赖项。
首先我给composer.json写了以下字符串:
{
"require": {
"php": ">=5.4",
"myname/mylibname": "dev"
},
"repositories":[
{
"type": "hg",
"url" : "https://bitbucket.org/myname/mylibname"
}
]
}
正在运行composer install
我收到了错误消息:
[RuntimeException的]
无法克隆https://bitbucket.org/myname/mylibname,无法从中读取包裹 中止:需要http授权
我将"type": "hg"
更改为"type": "vcs"
并收到另一个错误:
[作曲\库\ InvalidRepositoryException]
在https:/ *** / mylibname的任何分支或标记中找不到有效的composer.json,无法从中加载包。
在额外阅读文档后,我将我的库的描述添加到我的项目的composer.json中,它开始看起来如此:
{
"require": {
"php": ">=5.4",
"myname/mylibname": "dev"
},
"repositories":[
{
"type": "vcs",
"url" : "https://bitbucket.org/myname/mylibname"
},
{
"type":"package",
"package":{
"name":"myname/mylibname",
"version": "dev",
"source":{
"type":"vcs",
"url":"https://bitbucket.org/myname/mylibname",
"reference":"dev"
}
}
}
]}
发生了同样的错误:
[作曲\库\ InvalidRepositoryException]
在https:/ *** / mylibname的任何分支或标记中找不到有效的composer.json,无法从中加载包。
我删除了部分:
{
"type": "vcs",
"url" : "https://bitbucket.org/myname/mylibname"
},
并收到错误:
[InvalidArgumentException]
未知的下载程序类型:vcs。可用类型:git,svn,hg,perforce,zip,rar,tar,gzip,phar,file。
我将"type": "vcs"
更改回"type": "hg"
,composer.json看起来像:
{
"require": {
"php": ">=5.4",
"myname/mylibname": "dev"
},
"repositories":[
{
"type":"package",
"package":{
"name":"myname/mylibname",
"version": "dev",
"source":{
"type":"hg",
"url":"https://bitbucket.org/myname/mylibname",
"reference":"dev"
}
}
}
]}
并出错:
[RuntimeException的]
无法执行hg clone' https:/ *** / mylibname' ' /路径/到/ myproject的' 中止:需要http授权
我的auth.json的结构,除了composer.json之外是:
{
"http-basic": {
"bitbucket.org": {
"username": "myusername",
"password": "mypassword"
}
}
}
答案 0 :(得分:5)
似乎bitbucket-oauth
方法在作曲家1.1的当前状态中是错误的。这意味着您必须在客户端上设置SSH密钥,或者如果您像我一样,并且由于部署服务器而无法设置密钥,则必须使用基本身份验证。
我完成这项工作的唯一方法是:
<强>〜/ .composer / auth.json 强>
{
"http-basic": {
"bitbucket.org": {
"username": "bitbucketUsername",
"password": "PasswordToBitbucket"
}
}
}
<强> composer.json 强>
"repositories": [
{
"url": "https://username@bitbucket.org/username/my-package.git",
"type": "git"
}
],
"require": {
"username/my-package": "dev-master"
},
答案 1 :(得分:1)
只需删除https://即可。适合我:)
{
"require": {
"php": ">=5.4",
"myname/mylibname": "dev"
},
"repositories":[
{
"type":"package",
"package":{
"name":"myname/mylibname",
"version": "dev",
"source":{
"type":"hg",
"url":"bitbucket.org/myname/mylibname",
"reference":"dev"
}
}
}
]}
答案 2 :(得分:1)
That对我来说并不合适,但它让我指出了正确的方向。确保安装了SSH密钥以通过git @访问它。
{
"repositories": [
{
"type": "package",
"package": {
"name": "myname/mylibname",
"version": "master",
"source": {
"type": "git",
"url": "git@bitbucket.org:myname/mylibname.git",
"reference": "master"
}
}
}
]
}
答案 3 :(得分:1)
1.2.0版以上的Composer已使用bitbucket oauth进行了排序,如果多个开发人员正在一个项目上,这是比ssh-keys更好的方法,因为auth.json可以保留在项目存储库中( (如果是私有的),则只需设置一次。
auth.json
{
"bitbucket-oauth": {
"bitbucket.org": {
"consumer-key": "key",
"consumer-secret": "secret"
}
}
}
composer.json
"repositories":[
{
"type": "vcs",
"url": "git@bitbucket.org:path/to.git"
}
]
答案 4 :(得分:0)
对我的评论。 我已经测试了我在作曲家建议中遇到的上述场景,即存储库需要至少有一个稳定版本。
https://getcomposer.org/doc/04-schema.md#minimum-stability
由于这个原因,我使用了&#34; dev &#34; TAG 以及 SSH 连接,它可以正常运行。
{
"require": {
"php": ">=5.4",
"myname/mylibname": "dev"
},
"repositories":[
{
"type":"package",
"package":{
"name":"myname/mylibname",
"version": "dev",
"source":{
"type":"git",
"url":"git@bitbucket.org:myname/mylibname.git",
"reference":"dev"
}
}
}
]}
答案 5 :(得分:0)
我认为我最好为这种混乱做出贡献,并分享对我有用的配置。首先,我绝对无法从作曲家那里获得推荐的设置以进行工作。但是,可以做到以下几点:
1。编辑~.composer/auth.json
并配置http-basic
键。
{
"bitbucket-oauth": {},
"github-oauth": {},
"gitlab-oauth": {},
"gitlab-token": {},
"http-basic": {
"bitbucket.org": {
"username": "USERNAME",
"password": "PASSWORD"
}
}
}
2。使用以下命令在您的composer.json
(即私有存储库)中定义软件包。另外请记住,这不是个人的BitBucket帐户,我是一个团队的成员,因此USERNAME@bitbucket.org是我的用户名,第二个实例是公司(https:// {USERNAME} @ bitbucket.org / {USERNAME || VENDOR} / {REPO} .git)。
"require": {
"{USERNAME||VENDOR}/{REPO}": "dev-{BRANCH}
}
"repositories:" [
{
"type": "package",
"package": {
"name": "{USERNAME/VENDOR/REPO}",
"version": "master",
"source": {
"url":
"https://{URL}",
"type": "git",
"reference": "master"
}
}
}
]
需要考虑的杂项和值得注意的事情:
dev
autoload
选项添加到package
(请参阅this)我希望这可以帮助任何对此感到沮丧的人,这绝对是每个人都有问题的地方。感谢@Tomasz Czechowski提供的答案,最终使这个问题对我有用!
答案 6 :(得分:0)
另一个使用 OAuth使用者授权的 bitbucket git repo 的示例,该示例实际上是有效的。请注意,回购以https开头,否则composer将失败,并显示错误“未定义的偏移量:1”。
auth.json
{
"bitbucket-oauth": {
"bitbucket.org": {
"consumer-key": "...",
"consumer-secret": "..."
}
}
}
composer.json
"repositories": [
{
"type": "git-bitbucket",
"url": "https://bitbucket.org/workspace/repo.git"
}
]