summaryrefslogtreecommitdiff
path: root/lib/bundler
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2021-11-17 15:14:30 +0100
committergit <svn-admin@ruby-lang.org>2021-12-03 20:00:51 +0900
commit4c5e862434157c4ef258f432431262b3685c4036 (patch)
treef7fa23c27fc7d46aeed79f91b382b35e463f303d /lib/bundler
parent248fae0ec43c2df6d9b545acc7f56bdfd5f89dec (diff)
[rubygems/rubygems] Improve source gemfile/lockfile equivalence checks
Since we no longer have multiple global sources, each top level dependency is always pinned to a single source, so it makes little sense to talk about adding or removing a source. Instead, source changes always mean to change the source one or more dependencies are pinned to. This logic can now be much simpler. https://github.com/rubygems/rubygems/commit/f1d33fa0df
Diffstat (limited to 'lib/bundler')
-rw-r--r--lib/bundler/definition.rb30
1 files changed, 10 insertions, 20 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index 0c29cdc62f..2ac05d606f 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -371,35 +371,25 @@ module Bundler
added.concat new_platforms.map {|p| "* platform: #{p}" }
deleted.concat deleted_platforms.map {|p| "* platform: #{p}" }
- gemfile_sources = sources.lock_sources
-
- new_sources = gemfile_sources - @locked_sources
- deleted_sources = @locked_sources - gemfile_sources
-
new_deps = @dependencies - locked_dependencies
deleted_deps = locked_dependencies - @dependencies
- if @locked_sources != gemfile_sources
- if new_sources.any?
- added.concat new_sources.map {|source| "* source: #{source}" }
- end
-
- if deleted_sources.any?
- deleted.concat deleted_sources.map {|source| "* source: #{source}" }
- end
- end
-
added.concat new_deps.map {|d| "* #{pretty_dep(d)}" } if new_deps.any?
deleted.concat deleted_deps.map {|d| "* #{pretty_dep(d)}" } if deleted_deps.any?
both_sources = Hash.new {|h, k| h[k] = [] }
@dependencies.each {|d| both_sources[d.name][0] = d }
- locked_dependencies.each {|d| both_sources[d.name][1] = d.source }
+ locked_dependencies.each {|d| both_sources[d.name][1] = d }
+
+ both_sources.each do |name, (dep, lock_dep)|
+ next if dep.nil? || lock_dep.nil?
+
+ gemfile_source = dep.source || sources.default_source
+ lock_source = lock_dep.source || sources.default_source
+ next if lock_source.include?(gemfile_source)
- both_sources.each do |name, (dep, lock_source)|
- next if lock_source.nil? || lock_source.can_lock?(dep)
- gemfile_source_name = dep.source || "no specified source"
- lockfile_source_name = lock_source
+ gemfile_source_name = dep.source ? gemfile_source.identifier : "no specified source"
+ lockfile_source_name = lock_dep.source ? lock_source.identifier : "no specified source"
changed << "* #{name} from `#{lockfile_source_name}` to `#{gemfile_source_name}`"
end