私はBundlerのページとRubyGemのページ(およびSOの投稿)を調査してきましたが、これを理解できないようです。
Gemfileで、使用するGemのバージョンをBundlerに指定します。それが私が真実だと知っていることのすべてです...残りは私が舞台裏で何が起こっているかを推測することです。
したがって、BundlerはRubyGems.orgまたはその他のソースにアクセスして、Gemのバージョン、依存関係、およびソースファイルの場所を把握しているように見えます。これが私の大きな前提です。
次に、おそらくBundlerはコードリポジトリ(おそらくGithub)にアクセスして、ソースコードをダウンロードします。これは私が立ち往生しているところです。誰かが1.0.0のバージョンを指定した場合、BundlerはどのGitコミットがバージョン1.0.0に対応するかをどのように知るのですか?
-Bundlerはタグで移動しますか?
-または、Bundlerはバージョン番号と同じ名前のブランチの先頭に移動しますか?
-または、RubyForgeのどこかに特定のコミットが指定されていますか?
-または、ソースコードのスナップショットをRubyForgeから直接入手できますか?
Gemを1.0.0に指定してバンドルインストールを実行すると、疑問に思います。Bundleは1.0.0ブランチの先頭でコミットを取得し(それがBundlerの方法である場合)、そのブランチで後続のコミットがある場合(ただし、バージョンは同じままです)、それは私が異なるバージョンを持っていることを意味しますその宝石は、私の後にバンドルする人よりも(ブランチでの後続のコミットの後)?
バンドラーがバージョンを特定のコミットに解決することは理にかなっていますが、バンドラーはどのようにコミットを選択しますか?バージョン1.0.0は複数のコミットにまたがって存在する可能性があるためです。
お時間をいただきありがとうございます!