自第二次bundle install
执行以来,只要 Gemfile 没有更改,就会从 Gemfile.lock 加载依赖项。
但我想知道如何检测这两个文件之间的更改。
例如,如果我将新的依赖项直接添加到 Gemfile.lock 中而不将其添加到 Gemfile 中(与最佳实践相反,因为 Gemfile.lock 是从 Gemfile 自动生成的),是否会bundle install
认为 Gemfile 已更改?
实际上,bundle install
进程是否会比较整个 Gemfile 和 Gemfile.lock 树以检测更改?
如果是这样,即使我直接将依赖项添加到 Gemfile.lock,Gemfile 也会被检测为已更改(因为不同)并会重新擦除 Gemfile.lock(因此丢失添加的依赖项......)
bundle install
第二次上线以来的流程是怎样的?
更清楚地说,我的问题是:
更改仅基于 Gemfile 吗?这意味着捆绑器会保留每个执行编号 N 的 Gemfile 快照,bundle install
并且仅将其与bundle install
执行 N+1 进行比较?
或者在 bundler 内存中没有创建快照,并且 bundler 每次都会与 Gemfile.lock 进行比较,以检测是否必须将 Gemfile 视为已更改。