summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-06-21 16:09:39 -0500
committerSamuel Giddins <segiddins@segiddins.me>2017-06-23 12:43:55 -0500
commit47256d20cb05ebc724ee67173094682153b6b4aa (patch)
treee58b564d5ff11311da39fce38fd3e5ea16b24768
parent383da3e625a8006ce3b7fa1eb91d190de3325917 (diff)
downloadbundler-47256d20cb05ebc724ee67173094682153b6b4aa.tar.gz
[Definition] Fully unlock on 2.0 when the dep in the Gemfile changes
-rw-r--r--lib/bundler/definition.rb9
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