summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tool/vcs.rb13
1 files changed, 6 insertions, 7 deletions
diff --git a/tool/vcs.rb b/tool/vcs.rb
index ca9c8964b5..db3e5cf4bc 100644
--- a/tool/vcs.rb
+++ b/tool/vcs.rb
@@ -125,14 +125,13 @@ class VCS
end
def self.detect(path)
- @@dirs.each do |dir, klass, pred|
- curr = path
- loop {
+ curr = path
+ begin
+ @@dirs.each do |dir, klass, pred|
return klass.new(curr) if pred ? pred[curr, dir] : File.directory?(File.join(curr, dir))
- prev, curr = curr, File.realpath(File.join(curr, '..'))
- break if curr == prev # stop at the root directory
- }
- end
+ end
+ prev, curr = curr, File.realpath(File.join(curr, '..'))
+ end until curr == prev # stop at the root directory
raise VCS::NotFoundError, "does not seem to be under a vcs: #{path}"
end