From 1bdc2d5150ea4bc51b868091a0cc8766c86043d5 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 20 Jan 2016 08:17:57 +0000 Subject: vcs.rb: git worktree * tool/vcs.rb (VCS.detect, VCS::GIT): support working directory created by `git worktree`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53601 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- tool/vcs.rb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'tool/vcs.rb') diff --git a/tool/vcs.rb b/tool/vcs.rb index ca8aa6a391..4d8936cb54 100644 --- a/tool/vcs.rb +++ b/tool/vcs.rb @@ -67,13 +67,15 @@ class VCS class NotFoundError < RuntimeError; end @@dirs = [] - def self.register(dir) - @@dirs << [dir, self] + def self.register(dir, &pred) + @@dirs << [dir, self, pred] end def self.detect(path) - @@dirs.each do |dir, klass| - return klass.new(path) if File.directory?(File.join(path, dir)) + @@dirs.each do |dir, klass, pred| + if pred ? pred[path, dir] : File.directory?(File.join(path, dir)) + return klass.new(path) + end prev = path loop { curr = File.realpath(File.join(prev, '..')) @@ -282,7 +284,7 @@ class VCS end class GIT < self - register(".git") + register(".git") {|path, dir| File.exist?(File.join(path, dir))} def self.get_revisions(path, srcdir = nil) gitcmd = %W[git] -- cgit v1.2.3