下面由composer教學欄位來介紹使用分支別名的原因,希望對需要的朋友有幫助!
為什麼要使用別名?
當你使用版本控制系統倉庫時,你只能從那些看起來像版本的分支得到一個可比較的版本,例如 2.0 或 2.0.x 。對於 master 分支,你只能得到一個 dev-master 版本。對於 bugfix 分支,你將得到 dev-bugfix 版本。
如果你的 master 分支是用來標記 1.0 的開發流程,如 1.0.1 , 1.0.2 , 1.0.3 等,依賴於你的庫的包可能需要的是 1.0.
如果有人想要使用最新的dev-master ,將會遇到一個問題:有的套件可能需要的是1.0.* ,所以這兩個將會導致衝突,因為dev-master 並不匹配1.0.* 。
基於以上,別名出現了。
分支別名
dev-master 分支是主 VCS 倉庫中的一個。有些人會想要最新的主開發版本,這是很常見的。因此,Composer 允許您將 dev-master 分支別名為 1.0.x-dev 版本。它是透過在composer.json 中指定extra 下的branch-alias 欄位來完成的:
{ "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } } }
如果別名為不可比較的版本(例如dev-develop),則必須為分支名稱加上前綴dev- 。您也可以為可比較的版本加上別名(即以數字開頭,以 .x-dev 結尾),但只作為更具體的版本。例如,1.x-dev 可以被別名為 1.2.x-dev。
別名必須是可比較的開發版本,且 branch-alias 必須出現在它所引用的分支上。對於 dev-master 您需要在 master 分支上提交它。
因此,許多人現在都需要 1.0.* 並且他將很樂意安裝 dev-master 。
要使用分支別名,您必須擁有別名的套件的儲存庫。如果要為第三方包添加別名而不維護它的分支,請使用,內聯別名,如下所述。
需要內嵌別名
分支別名對於主要開發線非常有用。但是為了使用它們,您需要控制來源儲存庫,並且需要提交對版本控制的變更。
當您想要嘗試某個程式庫的錯誤修復時,這並不是很有趣,該程式庫是本機專案的依賴項。
因此,您可以在 require and require-dev 欄位中對套件進行別名。假設您在 monolog/monolog 套件中發現了一個錯誤。您在 GitHub 上克隆了 Monolog 並在一個名叫 bugfix 的分支中解決了這個問題。現在,您要在本機專案中安裝該版本的 monolog 。
您使用的是 symfony/monolog-bundle ,需要 monolog/monolog 版本 1.* 。因此,您需要使用 dev-bugfix 來符合該約束。
將其新增至專案的根composer.json 中:
{ "repositories": [ { "type": "vcs", "url": "https://github.com/you/monolog" } ], "require": { "symfony/monolog-bundle": "2.0", "monolog/monolog": "dev-bugfix as 1.0.x-dev" } }
這將從您的Github 取得monolog/monolog 的dev-bugfix 的版本,並將其別名為1.0.x -dev 。
注意:內聯別名是僅限 root 使用者使用的功能。如果需要具有內聯別名的包,則使用別名(as 的右側)用作版本約束。 as 的左邊部分被丟棄了。因此,如果 A 需要 B 和 B 需要 monolog/monolog 版本 dev-bugfix 為 1.0.x-dev ,則安裝 A 也將使 B 也需要 1.0.x-dev ,其可能作為分支別名或實際的 1.0 分支存在。如果沒有,則必須在 A 的 composer.json 中再次進行內聯別名。
注意:應避免使用內嵌別名,尤其是對於已發佈的套件 / 函式庫。如果您發現了錯誤,請嘗試將您的修復程式合併到上游,這有助於避免使用您套件的使用者出現問題。
更多composer技術文章,請造訪composer指令使用教學欄位!
以上是為什麼要使用別名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!