Detection order

* tool/vcs.rb (VCS.detect): detect each VCS while travarsing
  parent directories.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66304 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2018-12-10 01:58:27 +00:00
parent 93cb2b3563
commit fec4b2225e

View File

@ -125,14 +125,13 @@ class VCS
end end
def self.detect(path) def self.detect(path)
@@dirs.each do |dir, klass, pred| curr = path
curr = path begin
loop { @@dirs.each do |dir, klass, pred|
return klass.new(curr) if pred ? pred[curr, dir] : File.directory?(File.join(curr, dir)) return klass.new(curr) if pred ? pred[curr, dir] : File.directory?(File.join(curr, dir))
prev, curr = curr, File.realpath(File.join(curr, '..')) end
break if curr == prev # stop at the root directory prev, curr = curr, File.realpath(File.join(curr, '..'))
} end until curr == prev # stop at the root directory
end
raise VCS::NotFoundError, "does not seem to be under a vcs: #{path}" raise VCS::NotFoundError, "does not seem to be under a vcs: #{path}"
end end