我对bundler及其生成的文件有点陌生.我有一份来自GitHub的git回购协议的副本,很多人都在为它捐款,所以我惊讶地发现bundler创建了一个回购协议中不存在的文件,而且不在.gitignore个列表中.

因为我已经Forking 了,我知道将其添加到回购协议中不会 destruct 主回购协议的任何内容,但如果我执行拉取请求,会导致问题吗?

存储库中应该包含Gemfile.lock个吗?

推荐答案

2021年的简单答案是:

这里有一些理由(cherry摘自 comments ):

@约瑟瓦林https://github.com/heartcombo/devise/pull/3147#issuecomment-52193788

档案.锁应该留在存储库中,因为贡献者和开发人员应该能够Forking 项目,并使用保证工作的版本运行它.

@拉斐尔弗兰卡https://github.com/rails/rails/pull/18951#issuecomment-74888396

我认为即使对于插件,忽略锁文件也不是一个好主意.

这意味着"git clone;bundle;rake test"序列不能保证通过,因为您的几十个依赖项中有一个已经升级,导致代码中断.此外,正如@chancancode所说,它使平分变得更加困难.

Rails还有一个文件.锁定git:

Ruby相关问答推荐

try 安装Chruby时出现问题,终端问题

Ruby;人;docs-使用\";?

有没有更好的方法来加入剩余不变的子列表?

如何在 Shopify 脚本编辑器中显示数组值?

define_method:如何动态创建带参数的方法

Nokogiri/Xpath 命名空间查询

这些 Ruby 命名空间约定之间有什么区别?

从href html标签中提取带有Ruby中nokogiri的链接(URL)?

无法从同一网络上的另一台计算机访问本地 Sinatra 服务器

用反斜杠单引号替换单引号

Ruby:继承与类变量一起工作的代码

我不明白Ruby本地范围(local scope)

与 String 相比,在 Ruby 中使用 StringIO 有哪些优势?

对于基于 GitHub 的 gem,强制Bundle 安装使用 https:// 而不是 git://

确定一个值是否存在于哈希数组中

Ruby 将标题发布到 slug

我的Ruby在哪里?

Ruby:define_method 与 def

什么是 Ruby 1.9 标准 CSV 库?

Rubocop 25 线块大小和 RSpec 测试