summaryrefslogtreecommitdiff
path: root/tool/vcs.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-04-18 02:58:45 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-04-18 02:58:45 +0000
commit2103197ccebe4f6efea1e4160d46471396507d6b (patch)
tree3e9c0da51e938fec45c49004ea4d8afdd3915ac2 /tool/vcs.rb
parentae73dc367ab0027f9e96156a07560d6b40265db5 (diff)
downloadruby-2103197ccebe4f6efea1e4160d46471396507d6b.tar.gz
vcs.rb: env for command
* tool/vcs.rb (VCS::SVN::COMMAND, VCS::GIT::COMMAND): customize command paths by environment variables. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'tool/vcs.rb')
-rw-r--r--tool/vcs.rb32
1 files changed, 17 insertions, 15 deletions
diff --git a/tool/vcs.rb b/tool/vcs.rb
index 296703c1dc..d54094a409 100644
--- a/tool/vcs.rb
+++ b/tool/vcs.rb
@@ -193,16 +193,17 @@ class VCS
class SVN < self
register(".svn")
+ COMMAND = ENV['SVN'] || 'svn'
def self.get_revisions(path, srcdir = nil)
if srcdir and local_path?(path)
path = File.join(srcdir, path)
end
if srcdir
- info_xml = IO.pread(%W"svn 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 ||= IO.pread(%W"svn 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]
@@ -219,7 +220,7 @@ class VCS
end
def get_info
- @info ||= IO.pread(%W"svn info --xml #{@srcdir}")
+ @info ||= IO.pread(%W"#{COMMAND} info --xml #{@srcdir}")
end
def url
@@ -252,7 +253,7 @@ class VCS
end
def branch_list(pat)
- IO.popen(%W"svn ls #{branch('')}") do |f|
+ IO.popen(%W"#{COMMAND} ls #{branch('')}") do |f|
f.each do |line|
line.chomp!
line.chomp!('/')
@@ -262,7 +263,7 @@ class VCS
end
def grep(pat, tag, *files, &block)
- cmd = %W"svn cat"
+ cmd = %W"#{COMMAND} cat"
files.map! {|n| File.join(tag, n)} if tag
set = block.binding.eval("proc {|match| $~ = match}")
IO.popen([cmd, *files]) do |f|
@@ -282,7 +283,7 @@ class VCS
subdir = nil if subdir.empty?
FileUtils.mkdir_p(svndir = dir+"/.svn")
FileUtils.ln_s(Dir.glob(rootdir+"/.svn/*"), svndir)
- system("svn", "-q", "revert", "-R", subdir || ".", :chdir => dir) or return false
+ system(COMMAND, "-q", "revert", "-R", subdir || ".", :chdir => dir) or return false
FileUtils.rm_rf(svndir) unless keep_temp
if subdir
tmpdir = Dir.mktmpdir("tmp-co.", "#{dir}/#{subdir}")
@@ -297,7 +298,7 @@ class VCS
return true
end
end
- IO.popen(%W"svn 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?
@@ -310,7 +311,7 @@ class VCS
def export_changelog(url, from, to, path)
range = [to, (from+1 if from)].compact.join(':')
IO.popen({'TZ' => 'JST-9', 'LANG' => 'C', 'LC_ALL' => 'C'},
- %W"svn log -r#{range} #{url}") do |r|
+ %W"#{COMMAND} log -r#{range} #{url}") do |r|
open(path, 'w') do |w|
IO.copy_stream(r, w)
end
@@ -320,6 +321,7 @@ class VCS
class GIT < self
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)
@@ -338,7 +340,7 @@ class VCS
end
def self.get_revisions(path, srcdir = nil)
- gitcmd = %W[git]
+ gitcmd = [COMMAND]
logcmd = gitcmd + %W[log -n1 --date=iso]
logcmd << "--grep=^ *git-svn-id: .*@[0-9][0-9]*"
idpat = /git-svn-id: .*?@(\d+) \S+\Z/
@@ -389,12 +391,12 @@ class VCS
end
def stable
- cmd = %W"git for-each-ref --format=\%(refname:short) refs/heads/ruby_[0-9]*"
+ cmd = %W"#{COMMAND} for-each-ref --format=\%(refname:short) refs/heads/ruby_[0-9]*"
branch(cmd_read(cmd)[/.*^(ruby_\d+_\d+)$/m, 1])
end
def branch_list(pat)
- cmd = %W"git for-each-ref --format=\%(refname:short) refs/heads/#{pat}"
+ cmd = %W"#{COMMAND} for-each-ref --format=\%(refname:short) refs/heads/#{pat}"
cmd_pipe(cmd) {|f|
f.each {|line|
line.chomp!
@@ -404,7 +406,7 @@ class VCS
end
def grep(pat, tag, *files, &block)
- cmd = %W[git grep -h --perl-regexp #{tag} --]
+ cmd = %W[#{COMMAND} grep -h --perl-regexp #{tag} --]
set = block.binding.eval("proc {|match| $~ = match}")
cmd_pipe(cmd+files) do |f|
f.grep(pat) do |s|
@@ -415,7 +417,7 @@ class VCS
end
def export(revision, url, dir, keep_temp = false)
- ret = system("git", "clone", "-s", (@srcdir || '.').to_s, "-b", url, dir)
+ ret = system(COMMAND, "clone", "-s", (@srcdir || '.').to_s, "-b", url, dir)
FileUtils.rm_rf("#{dir}/.git") if ret and !keep_temp
ret
end
@@ -428,12 +430,12 @@ class VCS
range = [from, to].map do |rev|
rev or next
rev = cmd_read({'LANG' => 'C', 'LC_ALL' => 'C'},
- %W"git log -n1 --format=format:%H" <<
+ %W"#{COMMAND} log -n1 --format=format:%H" <<
"--grep=^ *git-svn-id: .*@#{rev} ")
rev unless rev.empty?
end.join('..')
cmd_pipe({'TZ' => 'JST-9', 'LANG' => 'C', 'LC_ALL' => 'C'},
- %W"git log --date=iso-local --topo-order #{range}") do |r|
+ %W"#{COMMAND} log --date=iso-local --topo-order #{range}") do |r|
open(path, 'w') do |w|
sep = "-"*72
w.puts sep