我一直在研究 Bundler 的页面和 RubyGem 的页面(以及 SO 帖子),但似乎无法弄清楚这一点。
在 Gemfile 中,您可以向 Bundler 指定要使用的 Gem 版本。这就是我所知道的真实情况......剩下的就是我猜测幕后发生的事情。
所以看起来 Bundler 会转到 RubyGems.org 或其他一些来源,以找出 Gem 的版本、依赖项和源文件的位置。这是我的大假设。
然后最有可能 Bundler 去代码存储库,最有可能是 Github,下载源代码。这就是我坚持的地方。如果有人指定 1.0.0 版本,Bundler 怎么知道哪个 Git 提交对应于 1.0.0 版本?
-Bundler 是否通过标签?
- 或者 Bundler 是否会转到与版本号命名相同的 head aa 分支?
- 或者是否在 RubyForge 的某处指定了特定的提交?
- 或者直接通过 RubyForge 获得源代码的快照?
我想知道,因为如果我将 Gem 指定为 1.0.0 并进行捆绑安装。Bundle 在 1.0.0 分支的头部进行提交(如果 Bundler 是这样做的),那么如果该分支上有后续提交(但版本保持不变),这是否意味着我会有不同的版本那个宝石比那些在我之后捆绑的人(在分支上的后续提交之后)?
bundler 将版本解析为特定提交是有道理的,但是 bundler 如何选择提交?因为版本 1.0.0 可以存在于多个提交中。
感谢您的时间!