2011-11-30 45 views
11

我有一個Gemfile中與以下格式的私人混帳回購協議:捆紮機:總是使用git分支的最新修訂版中的Gemfile

gem 'magic_beans', :git => "[email protected]:magic_beans.git', :branch => 'super_beans'

當我bundle install,則Gemfile.lock的鎖定到特定的SHA修訂版。

我可以使用捆綁器來始終檢查並使用最新的SHA提交和/或更新Gemfile.lock嗎?請注意,當我將更新推送到super_beans分支時,我不修改寶石版本。

理想情況下,每次運行bundle時,它都會檢查上游git回購以獲取該分支的新版SHA修訂版。

回答

19

這不是bundler的工作方式。 關鍵是允許無縫版本化依賴關係。 (特別是,您可以確切知道在任何給定時間都部署了哪個版本的代碼)。

如果想要最新版本,您應該運行。

bundle update magic_beans 

這是完全一樣的功能,如果你只是說

gem "rails" 

我雖然建議,如果您有一系列的具體事情要更新 然後添加一個自定義的二進制(說)

#!/usr/bin/env bash 
bundle install 
bundle update magic_beans 

名爲bundle_update可執行文件然後,只需做一個./bundle_update,當你想更新這些東西。

+0

如果我改變':git'而不是':path','bundle install'每次都會使用最新的SHA。我會繼續使用'bundle update',但我認爲這不一定是理想的解決方案。畢竟,在我的Gemfile中,我並不是在研究':revision'而是':branch'。感謝您的輸入! – pithyless

+1

我知道這是非常古老的,但設置':path'總是會更新,因爲它從目錄加載,而不是從git存儲庫或遠程gem加載。 ':path'很適合在本地開發兩個項目,但一旦開始合作就會崩潰。 –

1

docs中所述,您可以運行bundle update以將所有或特定寶石更新爲其最新的可用版本。

會有幫助嗎?

+1

我猜如果應用程序和寶石回收都屬於你,並且寶石經歷了很多小的變化,那麼在主應用程序上指示最新的提交也是很痛苦的。 – lulalala

1

通過文檔中搜索後,我終於找到了神奇方式來做到這一點:

bundle update magic_beans --source magic_beans

那就是隻更新magic_beans寶石,但不要接觸其他鎖定寶石。關於這個的文檔是:http://bundler.io/man/bundle-update.1.html

+0

第一個'magic_beans'沒有必要。你可以做'捆綁更新 - 源magic_beans'。 – lukeasrodgers

相關問題