diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2017-04-05 14:58:41 -0500 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-04-05 14:58:41 -0500 |
commit | 72af8a41bc5e7b1ce0402aa156ec527670d778da (patch) | |
tree | f313089abcd54b2d36d19ad36bb1805e71c86c73 | |
parent | cd73ba0ebd625d3469ef4d0fc2b250c1ccda0bb2 (diff) | |
download | bundler-seg-load-gempspec-chdir.tar.gz |
[Definition] Avoid computing diff in converge_locked_specs unless it’s neededseg-load-gempspec-chdir
-rw-r--r-- | lib/bundler/definition.rb | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index b1124218cf..5dca425c7e 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -776,14 +776,15 @@ module Bundler resolve = SpecSet.new(converged) resolve = resolve.for(expand_dependencies(deps, true), @unlock[:gems]) - diff = @locked_specs.to_a - resolve.to_a + diff = nil # Now, we unlock any sources that do not have anymore gems pinned to it sources.all_sources.each do |source| next unless source.respond_to?(:unlock!) unless resolve.any? {|s| s.source == source } - source.unlock! if !diff.empty? && diff.any? {|s| s.source == source } + diff ||= @locked_specs.to_a - resolve.to_a + source.unlock! if diff.any? {|s| s.source == source } end end |