From 4d8ad48f7dc610f58150daf92a859ed53fdd3a6c Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Sun, 28 Apr 2019 19:33:41 +0900 Subject: Support git as redmine-backporter's done destination --- tool/redmine-backporter.rb | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'tool/redmine-backporter.rb') diff --git a/tool/redmine-backporter.rb b/tool/redmine-backporter.rb index eef8bbb3ca..3c2d46d4ea 100755 --- a/tool/redmine-backporter.rb +++ b/tool/redmine-backporter.rb @@ -9,6 +9,7 @@ require 'strscan' require 'optparse' require 'abbrev' require 'pp' +require 'shellwords' begin require 'readline' rescue LoadError @@ -239,6 +240,10 @@ def find_svn_log(pattern) `svn log --xml --stop-on-copy --search="#{pattern}" #{RUBY_REPO_PATH}` end +def find_git_log(pattern) + `git #{RUBY_REPO_PATH ? "-C #{RUBY_REPO_PATH.shellecape}" : ""} log --grep="#{pattern}"` +end + def show_last_journal(http, uri) res = http.get("#{uri.path}?include=journals") res.value @@ -431,11 +436,19 @@ eom next end - log = find_svn_log("##@issue]") - if log && /revision="(?\d+)/ =~ log + if system("svn info #{RUBY_REPO_PATH&.shellescape} > /dev/null 2>&1") # SVN + if log = find_svn_log("##@issue]") && /revision="(?\d+)/ =~ log + rev = "r#{rev}" + end + else # Git + if log = find_git_log("##@issue]") + /^commit (?\h{40})$/ =~ log + end + end + if log && rev str = log[/merge revision\(s\) ([^:]+)(?=:)/] str.insert(5, "d") - str = "ruby_#{TARGET_VERSION.tr('.','_')} r#{rev} #{str}." + str = "ruby_#{TARGET_VERSION.tr('.','_')} #{rev} #{str}." if notes str << "\n" str << notes -- cgit v1.2.3