我一直在研究Bundler的页面和RubyGem的页面(和SO帖子),但似乎无法弄清楚。Bundler如何破译哪个提交对应某个Gem版本?
在Gemfile中,您指定Bundler使用哪个版本的Gem。这就是我所知道的所有真实情况......剩下的就是我猜测幕后发生的事情。
因此,Bundler看起来像是去了RubyGems.org或其他一些资源来找出Gem的版本,依赖关系和源文件的位置。这是我的重要假设。
然后Bundler很可能会去代码库,最有可能的是Github,下载源代码。这是我坚持的地方。如果某人指定1.0.0的版本,Bundler如何知道哪个Git commit与版本1.0.0相对应?
-Bundes go by tags?
- 或Bundler是否将头部命名为与版本号相同的分支?
- 或者在RubyForge的某处指定了具体的提交吗?
- 或直接通过RubyForge的源代码的快照吗?
我想知道,因为如果我指定一个Gem在1.0.0和做一个捆绑安装。 Bundle在1.0.0分支的头部提交提交(如果Bundler是这样做的话),那么如果该分支上有后续提交(但版本保持不变),这是否意味着我将拥有不同版本的那个宝石比在我后面捆绑的人(在后续的分支提交之后)?
这将是有道理的,bundler解析版本为特定的提交,但bundler如何选择提交?因为版本1.0.0可以跨多个提交存在。
谢谢你的时间!
@ steveh512哇...我不知道the.gem文件。这是完全合理的。谢谢你的信息。 –