為什么要使用別名?

下面由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教程使用教程欄目!

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享