如何在协作上下文中处理bundler更新(Gemfile.lock)?

use*_*833 15 collaboration version-control ruby-on-rails bundler gemfile

我是一个特定项目的独立程序员,但现在有其他人加入了合作者.只有我在图片中,bundler更新是顺利的,我从来没有想过Gemfile.lock被Git跟踪.

新协作者bundle install在克隆回购后运行,并Gemfile.lock更新如下:

Gemfile.lock的

@@ -141,7 +141,7 @@ GEM
       rack-ssl (~> 1.3.2)
       rake (>= 0.8.7)
       rdoc (~> 3.4)
-      thor (< 2.0, >= 0.14.6)
+      thor (>= 0.14.6, < 2.0)
     raindrops (0.10.0)
     rake (0.9.2.2)
     rdoc (3.12)
@@ -164,7 +164,7 @@ GEM
     sprockets (2.1.3)
       hike (~> 1.2)
       rack (~> 1.0)
-      tilt (!= 1.3.0, ~> 1.1)
+      tilt (~> 1.1, != 1.3.0)
     thor (0.16.0)
     tilt (1.3.3)
     treetop (1.4.10)
@@ -175,7 +175,7 @@ GEM
     tzinfo (0.3.33)
     uglifier (1.3.0)
       execjs (>= 0.3.0)
-      multi_json (>= 1.0.2, ~> 1.0)
+      multi_json (~> 1.0, >= 1.0.2)
     unicorn (4.3.1)
       kgio (~> 2.6)
       rack
Run Code Online (Sandbox Code Playgroud)

此更改被推送到master下的命名分支.我该怎么处理这个变化?

大声思考:我是否合并了GitHub上的Pull Request?我是否只是在没有拉请求的情况下从上游拉出来?我是否运行特定的bundler命令来与其他协作者进行同步Gemfile.lock?是否还有其他合作者可以采取不同的做法,以便他们不会导致任何宝石更新(而只是下载现有指定的宝石Gemfile.lock)?围绕这种情况的最佳做法是什么?

mea*_*gar 33

Gemfile.lock 应该是版本控制的.您应该对其进行任何更改.当某人(您信任的人)更新它时,您应该运行bundle install以安装当前在Gemfile.lock中锁定的gem.

刚刚运行bundle install不会更新现有的Gemfile.lock.为此,您需要运行bundle update.

总而言之,Gemfile.lock中的版本没有实际更改.所有改变的是几行参数的顺序.您可以安全地合并这些更改或忽略它们; 生成的Gemfile.lock将(功能上)相同.

  • 在版本控制下使用Gemfile.lock被认为是最佳实践.这可确保在您安装应用程序的任何位置构建相同的依赖关系包,无论是另一个开发人员处理源代码,还是生产服务器的包. (2认同)