簡體   English   中英

在composer依賴項中使用包fork

[英]Use a package fork in a composer dependency

我正在開發一個laravel包(我們稱之為包A),它需要另一個包(包B https://github.com/dropbox/dropbox-sdk-php )。

我已經制作了一個包B的分支( https://github.com/EmilioBravo/dropbox-sdk-php ),在一個新的分支“fix64”中做了一些更改,並將我的GitHub repo添加為composer.json中的一個存儲庫。包裝A,如作曲家文檔中所示:

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/EmilioBravo/dropbox-sdk-php"
    }
],
"require": {
    "php": ">=5.4.0",
    "illuminate/support": "4.2.*",
    "dropbox/dropbox-sdk": "dev-fix64"
},

如果我從包A中調用composer update它會正確地下載我的fork,但是,如果我在另一個項目(Project C)中使用包A作為依賴項並從中調用composer update,那么composer說它找不到dev-fix64 。

問題1

 - emilio-bravo/platform dev-dropboxfix requires dropbox/dropbox-sdk dev-fix64 -> no matching package found. 
  • emilio-bravo / platform dev-dropboxfix需要dropbox / dropbox -sdk dev-fix64 - >找不到匹配的包。

  • emilio-bravo / platform dev-dropboxfix的安裝請求 - > emilio-bravo / platform [dev-dropboxfix]可滿足。

只有當我在項目C composer.json中添加我的repo作為存儲庫時,它才會找到我的fork的分支。

另一種方法是我發現將我的叉子克隆到滿意的存儲庫中。

但感覺不對。 我怎樣才能讓作曲家從GitHub找到我的前叉?

將自定義存儲庫添加到主項目是使Composer了解新源的唯一方法。

它是故意這樣做的,因為否則repos可以添加repos可以添加repos ...而不保證有一個有限的repos列表。

此外,添加一個repo並沒有說明在那里找到哪個軟件,Composer將掃描每個標簽和分支。 理論上,存儲庫可以擁有另一個分支,用於完全不同的,眾所周知的包,提供更新版本的包,並添加一些惡意行為。

一般來說,Composer似乎非常適合防止遠程代碼執行,除了一個不知情的人做出錯誤的決定。

因此,如果您在packagist.org上發布包中發現錯誤,那么每個人的最佳方式是提出拉取請求。 第二種最好的方法是以新名稱分叉項目並將其發布在packagist.org上。 使用具有相同項目名稱的forked repo修補問題並將Composer指向它是最糟糕的解決方案,通常只適用於您自己項目的依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM