summaryrefslogtreecommitdiff
path: root/tool/vcs.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-02-28 01:23:31 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-02-28 01:23:31 +0000
commit68e6d3f1d564dcf7cafd06d55a311e7205f1d4e4 (patch)
treec9e39243e8c92b376e611913c618789f49c2c7ad /tool/vcs.rb
parent53e7ed077fa1188909b4b1f095535bcfe3a7c45b (diff)
tool/vcs.rb: discard error messages
* tool/vcs.rb (VCS#get_revisions): discard error messages for all VCS not only SVN. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45203 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'tool/vcs.rb')
-rw-r--r--tool/vcs.rb32
1 files changed, 18 insertions, 14 deletions
diff --git a/tool/vcs.rb b/tool/vcs.rb
index dbde585..9a11ac4 100644
--- a/tool/vcs.rb
+++ b/tool/vcs.rb
@@ -38,11 +38,27 @@ class VCS
super()
end
+ NullDevice = defined?(IO::NULL) ? IO::NULL :
+ %w[/dev/null NUL NIL: NL:].find {|dev| File.exist?(dev)}
+
# return a pair of strings, the last revision and the last revision in which
# +path+ was modified.
def get_revisions(path)
path = relative_to(path)
- last, changed, modified, *rest = Dir.chdir(@srcdir) {self.class.get_revisions(path)}
+ last, changed, modified, *rest = Dir.chdir(@srcdir) {
+ begin
+ if NullDevice
+ save_stderr = STDERR.dup
+ STDERR.reopen NullDevice, 'w'
+ end
+ self.class.get_revisions(path)
+ ensure
+ if save_stderr
+ STDERR.reopen save_stderr
+ save_stderr.close
+ end
+ end
+ }
last or raise VCS::NotFoundError, "last revision not found"
changed or raise VCS::NotFoundError, "changed revision not found"
modified &&= Time.parse(modified)
@@ -73,19 +89,7 @@ class VCS
register(".svn")
def self.get_revisions(path)
- begin
- nulldevice = %w[/dev/null NUL NIL: NL:].find {|dev| File.exist?(dev)}
- if nulldevice
- save_stderr = STDERR.dup
- STDERR.reopen nulldevice, 'w'
- end
- info_xml = `svn info --xml "#{path}"`
- ensure
- if save_stderr
- STDERR.reopen save_stderr
- save_stderr.close
- end
- end
+ info_xml = `svn info --xml "#{path}"`
_, last, _, changed, _ = info_xml.split(/revision="(\d+)"/)
modified = info_xml[/<date>([^<>]*)/, 1]
[last, changed, modified]