aboutsummaryrefslogtreecommitdiffstats
path: root/tool
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-08-30 10:14:15 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-08-30 11:23:21 +0900
commit55f496c89b820f57d9e07c744675da8c43d6aa46 (patch)
treeac2739479f221e843ab557793c6e5acf75992642 /tool
parent1191049436556955893d7f6037eb626e6f51a004 (diff)
downloadruby-55f496c89b820f57d9e07c744675da8c43d6aa46.tar.gz
Support revision in git-svn log
Diffstat (limited to 'tool')
-rw-r--r--tool/lib/vcs.rb35
1 files changed, 29 insertions, 6 deletions
diff --git a/tool/lib/vcs.rb b/tool/lib/vcs.rb
index db8b91e348..e38db077b5 100644
--- a/tool/lib/vcs.rb
+++ b/tool/lib/vcs.rb
@@ -252,12 +252,16 @@ class VCS
def after_export(dir)
end
+ def revision_handler(rev)
+ self.class
+ end
+
def revision_name(rev)
- self.class.revision_name(rev)
+ revision_handler(rev).revision_name(rev)
end
def short_revision(rev)
- self.class.short_revision(rev)
+ revision_handler(rev).short_revision(rev)
end
class SVN < self
@@ -446,12 +450,26 @@ class VCS
cmd_read_at(@srcdir, cmds)
end
+ def svn_revision(log)
+ if /^ *git-svn-id: .*@(\d+) .*\n+\z/ =~ log
+ $1.to_i
+ end
+ end
+
def _get_revisions(path, srcdir = nil)
gitcmd = [COMMAND]
last = cmd_read_at(srcdir, [[*gitcmd, 'rev-parse', 'HEAD']]).rstrip
log = cmd_read_at(srcdir, [[*gitcmd, 'log', '-n1', '--date=iso', '--pretty=fuller', *path]])
changed = log[/\Acommit (\h+)/, 1]
modified = log[/^CommitDate:\s+(.*)/, 1]
+ if rev = svn_revision(log)
+ if changed == last
+ last = rev
+ else
+ last = svn_revision(cmd_read_at(srcdir, [[*gitcmd, 'log', '-n1', '--format=%B', last]]))
+ end
+ changed = rev
+ end
branch = cmd_read_at(srcdir, [gitcmd + %W[symbolic-ref --short HEAD]])
if branch.empty?
branch_list = cmd_read_at(srcdir, [gitcmd + %W[branch --list --contains HEAD]]).lines.to_a
@@ -488,6 +506,15 @@ class VCS
rev[0, 10]
end
+ def revision_handler(rev)
+ case rev
+ when Integer
+ SVN
+ else
+ super
+ end
+ end
+
def without_gitconfig
home = ENV.delete('HOME')
yield
@@ -627,10 +654,6 @@ class VCS
SVN.revision_name(rev)
end
- def self.short_revision(rev)
- SVN.short_revision(rev)
- end
-
def format_changelog(r, path)
open(path, 'w') do |w|
sep = "-"*72