我一直在研究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文件。這是完全合理的。謝謝你的信息。 –