summaryrefslogtreecommitdiff
path: root/tool/vcs.rb
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-13 08:38:43 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-13 08:38:43 +0000
commit4b4f7c428c86deb7fa8743173e695122d00e66b1 (patch)
treef6ba8fa0b71fe05f716fe4bed8bc33a0d9736b92 /tool/vcs.rb
parentb9426859e7af1f2662dc8d45aee0203feb59ac5e (diff)
Revert r61054
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61202 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'tool/vcs.rb')
-rw-r--r--tool/vcs.rb76
1 files changed, 31 insertions, 45 deletions
diff --git a/tool/vcs.rb b/tool/vcs.rb
index 437d647041..552abd0fd2 100644
--- a/tool/vcs.rb
+++ b/tool/vcs.rb
@@ -116,32 +116,6 @@ class VCS
String === path or path.respond_to?(:to_path)
end
- def self.cmd_args(cmds, srcdir = nil)
- if srcdir and local_path?(srcdir)
- (opts = cmds.last).kind_of?(Hash) or cmds << (opts = {})
- opts[:chdir] ||= srcdir
- end
- cmds
- end
-
- def self.cmd_pipe_at(srcdir, cmds, &block)
- IO.popen(*cmd_args(cmds, srcdir), &block)
- rescue Errno::ENOENT => e
- raise VCS::NotFoundError, e.message
- end
-
- def self.cmd_read_at(srcdir, cmds)
- IO.pread(*cmd_args(cmds, srcdir))
- rescue Errno::ENOENT => e
- raise VCS::NotFoundError, e.message
- end
-
- def self.system(*cmds)
- Process.wait(Process.spawn(*cmds))
- rescue Errno::ENOENT => e
- raise VCS::NotFoundError, e.message
- end
-
attr_reader :srcdir
def initialize(path)
@@ -217,18 +191,6 @@ class VCS
def after_export(dir)
end
- def cmd_pipe(*cmds, &block)
- self.class.cmd_pipe_at(@srcdir, cmds, &block)
- end
-
- def cmd_read(*cmds)
- self.class.cmd_read_at(@srcdir, cmds)
- end
-
- def system(*cmds)
- self.class.system(*cmds)
- end
-
class SVN < self
register(".svn")
COMMAND = ENV['SVN'] || 'svn'
@@ -238,10 +200,10 @@ class VCS
path = File.join(srcdir, path)
end
if srcdir
- info_xml = cmd_read_at(nil, [%W"#{COMMAND} info --xml #{srcdir}"])
+ info_xml = IO.pread(%W"#{COMMAND} info --xml #{srcdir}")
info_xml = nil unless info_xml[/<url>(.*)<\/url>/, 1] == path.to_s
end
- info_xml ||= cmd_read_at(nil, [%W"#{COMMAND} info --xml #{path}"])
+ info_xml ||= IO.pread(%W"#{COMMAND} info --xml #{path}")
_, last, _, changed, _ = info_xml.split(/revision="(\d+)"/)
modified = info_xml[/<date>([^<>]*)/, 1]
branch = info_xml[%r'<relative-url>\^/(?:branches/|tags/)?([^<>]+)', 1]
@@ -258,7 +220,7 @@ class VCS
end
def get_info
- @info ||= cmd_read(%W"#{COMMAND} info --xml")
+ @info ||= IO.pread(%W"#{COMMAND} info --xml #{@srcdir}")
end
def url
@@ -291,7 +253,7 @@ class VCS
end
def branch_list(pat)
- cmd_pipe(%W"#{COMMAND} ls #{branch('')}") do |f|
+ IO.popen(%W"#{COMMAND} ls #{branch('')}") do |f|
f.each do |line|
line.chomp!
line.chomp!('/')
@@ -304,7 +266,7 @@ class VCS
cmd = %W"#{COMMAND} cat"
files.map! {|n| File.join(tag, n)} if tag
set = block.binding.eval("proc {|match| $~ = match}")
- cmd_pipe([cmd, *files]) do |f|
+ IO.popen([cmd, *files]) do |f|
f.grep(pat) do |s|
set[$~]
yield s
@@ -336,7 +298,7 @@ class VCS
return true
end
end
- cmd_pipe(%W"#{COMMAND} export -r #{revision} #{url} #{dir}") do |pipe|
+ IO.popen(%W"#{COMMAND} export -r #{revision} #{url} #{dir}") do |pipe|
pipe.each {|line| /^A/ =~ line or yield line}
end
$?.success?
@@ -348,7 +310,7 @@ class VCS
def export_changelog(url, from, to, path)
range = [to, (from+1 if from)].compact.join(':')
- cmd_pipe({'TZ' => 'JST-9', 'LANG' => 'C', 'LC_ALL' => 'C'},
+ IO.popen({'TZ' => 'JST-9', 'LANG' => 'C', 'LC_ALL' => 'C'},
%W"#{COMMAND} log -r#{range} #{url}") do |r|
open(path, 'w') do |w|
IO.copy_stream(r, w)
@@ -365,6 +327,22 @@ class VCS
register(".git") {|path, dir| File.exist?(File.join(path, dir))}
COMMAND = ENV["GIT"] || 'git'
+ def self.cmd_args(cmds, srcdir = nil)
+ if srcdir and local_path?(srcdir)
+ (opts = cmds.last).kind_of?(Hash) or cmds << (opts = {})
+ opts[:chdir] ||= srcdir
+ end
+ cmds
+ end
+
+ def self.cmd_pipe_at(srcdir, cmds, &block)
+ IO.popen(*cmd_args(cmds, srcdir), &block)
+ end
+
+ def self.cmd_read_at(srcdir, cmds)
+ IO.pread(*cmd_args(cmds, srcdir))
+ end
+
def self.get_revisions(path, srcdir = nil)
gitcmd = [COMMAND]
desc = cmd_read_at(srcdir, [gitcmd + %w[describe --tags --match REV_*]])
@@ -400,6 +378,14 @@ class VCS
self
end
+ def cmd_pipe(*cmds, &block)
+ self.class.cmd_pipe_at(@srcdir, cmds, &block)
+ end
+
+ def cmd_read(*cmds)
+ self.class.cmd_read_at(@srcdir, cmds)
+ end
+
Branch = Struct.new(:to_str)
def branch(name)