diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index d7246dadf0ec90..1970782d55b96e 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -394,8 +394,8 @@ def ensure_equivalent_gemfile_and_lockfile(explicit_flag = false) lock_source = lock_dep.source || sources.default_source next if lock_source.include?(gemfile_source) - gemfile_source_name = dep.source ? gemfile_source.identifier : "no specified source" - lockfile_source_name = lock_dep.source ? lock_source.identifier : "no specified source" + gemfile_source_name = dep.source ? gemfile_source.to_gemfile : "no specified source" + lockfile_source_name = lock_dep.source ? lock_source.to_gemfile : "no specified source" changed << "* #{name} from `#{lockfile_source_name}` to `#{gemfile_source_name}`" end diff --git a/lib/bundler/source/git.rb b/lib/bundler/source/git.rb index 42897813b47742..f7ad6057b46b79 100644 --- a/lib/bundler/source/git.rb +++ b/lib/bundler/source/git.rb @@ -46,6 +46,14 @@ def to_lock out << " specs:\n" end + def to_gemfile + specifiers = %w[ref branch tag submodules glob].map do |opt| + "#{opt}: #{options[opt]}" if options[opt] + end + + uri_with_specifiers(specifiers) + end + def hash [self.class, uri, ref, branch, name, version, glob, submodules].hash end @@ -80,7 +88,12 @@ def to_s "" end - specifiers = [rev, glob_for_display].compact + uri_with_specifiers([rev, glob_for_display]) + end + + def uri_with_specifiers(specifiers) + specifiers.compact! + suffix = if specifiers.any? " (#{specifiers.join(", ")})" diff --git a/lib/bundler/source/rubygems.rb b/lib/bundler/source/rubygems.rb index af55ba0f2c8caf..af57acbbc2739a 100644 --- a/lib/bundler/source/rubygems.rb +++ b/lib/bundler/source/rubygems.rb @@ -123,6 +123,7 @@ def identifier end end alias_method :name, :identifier + alias_method :to_gemfile, :identifier def specs @specs ||= begin