diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rwxr-xr-x | tool/make-snapshot | 12 | ||||
-rw-r--r-- | tool/vcs.rb | 20 |
3 files changed, 40 insertions, 0 deletions
@@ -1,3 +1,11 @@ +Sun Nov 6 21:54:28 2016 NARUSE, Yui <[email protected]> + + * tool/vcs.rb (export_changelog): generate ChangeLog file from + vcs's log. [Feature #12283] + + * tool/make-snapshot (package): overwrite ChangeLog by generated + ChangeLog. + Sun Nov 6 21:36:33 2016 SHIBATA Hiroshi <[email protected]> * NEWS: Added entry for RDoc 5. 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 |