2015-04-01 29 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