diff --git a/tool/file2lastrev.rb b/tool/file2lastrev.rb index 5117f0a51f..100206d270 100755 --- a/tool/file2lastrev.rb +++ b/tool/file2lastrev.rb @@ -47,7 +47,7 @@ rescue VCS::NotFoundError => e abort "#{File.basename(Program)}: #{e.message}" unless @suppress_not_found else begin - last, changed, modified, branch = vcs.get_revisions(ARGV.shift) + last, changed, modified, branch, title = vcs.get_revisions(ARGV.shift) rescue => e abort "#{File.basename(Program)}: #{e.message}" unless @suppress_not_found exit false @@ -65,6 +65,9 @@ when :revision_h name = branch.sub(/\A(.{#{limit-e.size}}).{#{e.size+1},}/o) {$1+e} puts "#define RUBY_BRANCH_NAME #{name.dump}" end + if title + puts "#define RUBY_LAST_COMMIT_TITLE #{title.dump}" + end when :doxygen puts "r#{changed}/r#{last}" when :modified diff --git a/tool/vcs.rb b/tool/vcs.rb index 1e087b6542..9d11b3b8c1 100644 --- a/tool/vcs.rb +++ b/tool/vcs.rb @@ -260,6 +260,7 @@ class VCS logcmd << "--grep=^ *git-svn-id: .*@[0-9][0-9]*" idpat = /git-svn-id: .*?@(\d+) \S+\Z/ log = IO.pread(logcmd) + commit = log[/\Acommit (\w+)/, 1] last = log[idpat, 1] if path cmd = logcmd @@ -271,7 +272,9 @@ class VCS end modified = log[/^Date:\s+(.*)/, 1] branch = IO.pread(gitcmd + %W[symbolic-ref HEAD])[%r'\A(?:refs/heads/)?(.+)', 1] - [last, changed, modified, branch] + title = IO.pread(gitcmd + ["log", "--format=%s", "-n1", "#{commit}..HEAD"]) + title = nil if title.empty? + [last, changed, modified, branch, title] end Branch = Struct.new(:to_str) diff --git a/version.c b/version.c index b2a4d2d25e..45761b3251 100644 --- a/version.c +++ b/version.c @@ -78,6 +78,9 @@ void ruby_show_version(void) { PRINT(description); +#ifdef RUBY_LAST_COMMIT_TITLE + fputs("last_commit=" RUBY_LAST_COMMIT_TITLE, stdout); +#endif #ifdef HAVE_MALLOC_CONF if (malloc_conf) printf("malloc_conf=%s\n", malloc_conf); #endif