2014-03-07 125 views
0

現在我正在使用Berkshelf從本地存儲庫或我正在使用的社區食譜(例如java/rvm等)中提取食譜。Berkshelf - 社區食譜版本

我正在將我的項目從使用分叉的社區食譜轉換爲直接從github.com拉出berkshelf。問題在於社區食譜沒有版本。我不能告訴berkshelf我使用的是社區食譜的舊版本,因爲它根本不存在於github上。沒有版本或與此相關的任何分支。我可以簡單地通過查看提交日誌(對於期望的版本)來分叉回購,但這是額外的開銷(維護分支),我試圖擺脫。

什麼是最優化的解決方案?我認爲berkshelf無法從社區食譜的某個地方獲取舊版本,這聽起來不對。

回答

1

社區食譜是版本。

site directive你Berkshelf文件將從URL「http://cookbooks.opscode.com/api/v1/cookbooks」下載社區食譜的頂部:

site :opscode 

cookbook "xxxx", "1.0" 
cookbook "yyyy", "2.0" 

正如賽斯指出,這比從GitHub檢索,因爲它確保你得到更好的發佈版本。另一個好處是可以自動檢索傳遞依賴關係。

社區食譜使用標籤發佈管理。如果你真的,真的,真的想保持檢索它們從GitHub直接,你可以做到以下幾點:

cookbook "artifact", github: "opscode-cookbooks/mysql", tag: "v4.0.14" 

如果以下Opscode公司的例子在github上所有食譜這將是巨大的。然後,當我們使用它們作爲依賴關係時,我們會知道哪個提交表示元數據文件中陳述的實際版本。......

1

對,這就是爲什麼你不應該使用SCM位置的食譜。相反,使用api.berkshelf.com社區食譜。

+0

說明:此答案僅適用於Berkshelf 3.0嗎? –

+0

看起來不錯,但聽起來像是很多開銷。我想我要分叉github食譜並添加我自己的標籤(看起來老版本的食譜沒有被標記),或者簡單地從社區網站拉出並在berkshelf上使用鎖定文件。通過這種方式,我仍然可以繼續我的操作,通過指向分叉並仍然能夠在我的分叉提供的隔離中測試升級的社區食譜。 P.S是否berkshelf 3.0與廚師10.x工作正常?升級到11就在我們的時間表上,但我現在所做的優先。 – keftes