【问题标题】:Bundler: always use latest revision of git branch in GemfileBundler:始终在 Gemfile 中使用最新版本的 git 分支
【发布时间】:2012-01-09 14:15:11
【问题描述】:

我有一个带有私有 git 存储库的 Gemfile,格式如下:

gem 'magic_beans', :git => "git@git.example.com:magic_beans.git', :branch => 'super_beans'

当我bundle install 时,Gemfile.lock 将其锁定到特定的 SHA 修订版。

我可以让 bundler 始终检查和使用最新的 SHA 提交和/或更新 Gemfile.lock 吗?请注意,当我将更新推送到 super_beans 分支时,我并没有修改 gem 版本。

理想情况下,每次我运行 bundle 时,它都会检查上游 git repo 是否有更新的 SHA 版本的分支。

【问题讨论】:

    标签: ruby git bundler gemfile


    【解决方案1】:

    删除 .gemlock 对我有用:/

    【讨论】:

      【解决方案2】:

      在搜索了文档之后,我终于找到了这样做的神奇方法:

      bundle update magic_beans --source magic_beans

      也就是只更新magic_beans gem,不接触其他锁定的gem。关于这个的文档是:http://bundler.io/man/bundle-update.1.html

      【讨论】:

      • 第一个magic_beans 不是必须的。你可以做bundle update --source magic_beans。
      【解决方案3】:

      您可以运行 bundle update 将所有或特定的 gem 更新到最新的可用版本,如 docs 中所述。

      会有帮助吗?

      【讨论】:

      • 我猜如果app和gem repos都属于你,并且gem经历了很多小的变化,那么在主应用程序上进行提交以始终指向最新提交是很痛苦的.
      【解决方案4】:

      这不是打包程序的工作方式。 关键是允许对依赖项进行无缝版本控制。 (尤其是让您确切知道在任何给定时间部署的代码版本)。

      如果想要最新版本,你应该运行。

      bundle update magic_beans
      

      这和你刚才说的功能完全一样

      gem "rails"
      

      不过,如果您有一系列特定的内容要更新,我建议您 然后添加一个自定义二进制文件(比如一个名为 bundle_update 的可执行文件)

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

      然后,当您想更新这些内容时,只需发送./bundle_update。

      【讨论】:

      • 如果我将:git 改为使用:path,bundle install 每次都会愉快地使用最新的 SHA。我会继续使用bundle update,但我认为这不一定是理想的解决方案。毕竟,在我的 Gemfile 中,我的范围不是:revision,而是:branch。感谢您的意见!
      • 我知道这已经很老了,但是设置 :path 总是会更新,因为它是从目录加载的,而不是从 git 存储库或远程 gem 加载。 :path 非常适合在本地一起开发两个项目,但一旦开始协作就会崩溃。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 2019-12-01
      相关资源
      最近更新 更多