diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-08-30 10:14:15 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-08-30 11:23:21 +0900 |
commit | 55f496c89b820f57d9e07c744675da8c43d6aa46 (patch) | |
tree | ac2739479f221e843ab557793c6e5acf75992642 /tool | |
parent | 1191049436556955893d7f6037eb626e6f51a004 (diff) | |
download | ruby-55f496c89b820f57d9e07c744675da8c43d6aa46.tar.gz |
Support revision in git-svn log
Diffstat (limited to 'tool')
-rw-r--r-- | tool/lib/vcs.rb | 35 |
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 |