diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2017-06-21 16:09:39 -0500 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-06-23 12:43:55 -0500 |
commit | 47256d20cb05ebc724ee67173094682153b6b4aa (patch) | |
tree | e58b564d5ff11311da39fce38fd3e5ea16b24768 | |
parent | 383da3e625a8006ce3b7fa1eb91d190de3325917 (diff) | |
download | bundler-47256d20cb05ebc724ee67173094682153b6b4aa.tar.gz |
[Definition] Fully unlock on 2.0 when the dep in the Gemfile changes
-rw-r--r-- | lib/bundler/definition.rb | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index 6d16acd495..0819bb91c5 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -54,7 +54,8 @@ module Bundler def initialize(lockfile, dependencies, sources, unlock, ruby_version = nil, optional_groups = []) @unlocking = unlock == true || !unlock.empty? - @dependencies = dependencies + @dependencies = dependencies + @dependencies_by_name = dependencies.group_by(&:name) @sources = sources @unlock = unlock @optional_groups = optional_groups @@ -953,8 +954,10 @@ module Bundler def additional_base_requirements_for_resolve return [] unless @locked_gems && Bundler.feature_flag.only_update_to_newer_versions? @locked_gems.specs.reduce({}) do |requirements, locked_spec| - dep = Gem::Dependency.new(locked_spec.name, ">= #{locked_spec.version}") - requirements[locked_spec.name] = DepProxy.new(dep, locked_spec.platform) + name = locked_spec.name + next requirements if @locked_deps[name] != @dependencies_by_name[name] + dep = Gem::Dependency.new(name, ">= #{locked_spec.version}") + requirements[name] = DepProxy.new(dep, locked_spec.platform) requirements end.values end |