From f7f00b89e61ed87b3a61870a59c948d9d98287ed Mon Sep 17 00:00:00 2001 From: naruse Date: Sun, 6 Nov 2016 12:57:45 +0000 Subject: * tool/vcs.rb (export_changelog): generate ChangeLog file from vcs's log. [Feature #12283] * tool/make-snapshot (package): overwrite ChangeLog by generated ChangeLog. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56638 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- tool/make-snapshot | 12 ++++++++++++ tool/vcs.rb | 20 ++++++++++++++++++++ 2 files changed, 32 insertions(+) (limited to 'tool') diff --git a/tool/make-snapshot b/tool/make-snapshot index e96deb003c..788c2b9a0a 100755 --- a/tool/make-snapshot +++ b/tool/make-snapshot @@ -205,6 +205,7 @@ def package(vcs, rev, destdir, tmp = nil) end end + srcdir = File.realpath($srcdir) Dir.chdir(tmp) if tmp if !File.directory?(v) @@ -212,6 +213,17 @@ def package(vcs, rev, destdir, tmp = nil) v.size == 1 or abort "not exported" v = v[0] end + + # get last revision from previous ChangeLog archive + last_ChangeLog = Dir["#{v}/doc/ChangeLog-*"].grep(/-\d+\z/).last + open(last_ChangeLog) do |f| + f.readline + unless /\Ar(\d+) / =~ f.readline + abort "Cannot find revision from '#{last_ChangeLog}'" + end + vcs.export_changelog(srcdir, url, $1.to_i+1, revision.to_i, "#{v}/ChangeLog") + end + open("#{v}/revision.h", "wb") {|f| f.puts "#define RUBY_REVISION #{revision}"} version ||= (versionhdr = IO.read("#{v}/version.h"))[RUBY_VERSION_PATTERN, 1] version or return diff --git a/tool/vcs.rb b/tool/vcs.rb index 93d642efec..173c306e3c 100644 --- a/tool/vcs.rb +++ b/tool/vcs.rb @@ -280,6 +280,16 @@ class VCS def after_export(dir) FileUtils.rm_rf(dir+"/.svn") end + + def export_changelog(srcdir, url, from, to, path) + IO.popen({'TZ' => 'JST-9'}, "svn log -r#{to}:#{from} #{url}") do |r| + open(path, 'w') do |w| + IO.copy_stream(r, w) + end + end + sleep 10 + exit + end end class GIT < self @@ -355,5 +365,15 @@ class VCS def after_export(dir) FileUtils.rm_rf("#{dir}/.git") end + + def export_changelog(srcdir, url, from, to, path) + from = `git -C #{srcdir} log -n1 --format=format:%H --grep='^ *git-svn-id: .*@#{from} '` + to = `git -C #{srcdir} log -n1 --format=format:%H --grep='^ *git-svn-id: .*@#{to} '` + IO.popen({'TZ' => 'JST-9'}, "git -C #{srcdir} log --date=iso-local --topo-order #{from}..#{to}") do |r| + open(path, 'w') do |w| + IO.copy_stream(r, w) + end + end + end end end -- cgit v1.2.3