From 55f496c89b820f57d9e07c744675da8c43d6aa46 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 30 Aug 2019 10:14:15 +0900 Subject: [PATCH] Support revision in git-svn log --- tool/lib/vcs.rb | 35 +++++++++++++++++++++++++++++------ 1 file 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