diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2022-09-17 21:16:06 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-17 21:16:06 +0900 |
commit | 38a7a13ac6ed6bba2584def7d7121257eb85e051 (patch) | |
tree | 1c20408e50d0fdd78e6277d9fa2dea05d785a88f /tool/lib | |
parent | ca4cbe59eda77a3855094c843486759868794e85 (diff) | |
download | ruby-38a7a13ac6ed6bba2584def7d7121257eb85e051.tar.gz |
Auto-generate the release date on version.h from git CommitDate (#6382)
* Auto-generate the release date on version.h
from git CommitDate
* Generate revision.h on mswin
Diffstat (limited to 'tool/lib')
-rw-r--r-- | tool/lib/vcs.rb | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/tool/lib/vcs.rb b/tool/lib/vcs.rb index 05d95061c4..d33d41dba1 100644 --- a/tool/lib/vcs.rb +++ b/tool/lib/vcs.rb @@ -95,6 +95,15 @@ class VCS opts end + def self.release_date(time) + t = time.utc + [ + t.strftime('#define RUBY_RELEASE_YEAR %Y'), + t.strftime('#define RUBY_RELEASE_MONTH %-m'), + t.strftime('#define RUBY_RELEASE_DAY %-d'), + ] + end + attr_reader :srcdir def initialize(path) @@ -204,7 +213,8 @@ class VCS revision_handler(rev).short_revision(rev) end - def revision_header(last, modified = nil, branch = nil, title = nil, limit: 20) + # make-snapshot generates only release_date whereas file2lastrev generates both release_date and release_datetime + def revision_header(last, release_date, release_datetime = nil, branch = nil, title = nil, limit: 20) short = short_revision(last) if /[^\x00-\x7f]/ =~ title and title.respond_to?(:force_encoding) title = title.dup.force_encoding("US-ASCII") @@ -225,10 +235,11 @@ class VCS title = title.dump.sub(/\\#/, '#') code << "#define RUBY_LAST_COMMIT_TITLE #{title}" end - if modified - t = modified.utc + if release_datetime + t = release_datetime.utc code << t.strftime('#define RUBY_RELEASE_DATETIME "%FT%TZ"') end + code += VCS.release_date(release_date) code end @@ -386,7 +397,10 @@ class VCS end class GIT < self - register(".git") {|path, dir| File.exist?(File.join(path, dir))} + register(".git") do |path, dir| + File.exist?(File.join(path, dir)) && + (`#{COMMAND} -v` rescue false) # make sure git command exists + end COMMAND = ENV["GIT"] || 'git' def cmd_args(cmds, srcdir = nil) |