OSDN Git Service

scm: mercurial: wrap revision of cat and annotate with URL encoding (#1981, #7246).
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Mon, 14 Mar 2011 02:23:54 +0000 (02:23 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Mon, 14 Mar 2011 02:23:54 +0000 (02:23 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5112 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/scm/adapters/mercurial/redminehelper.py
lib/redmine/scm/adapters/mercurial_adapter.rb

index 3e82e95..7b3b639 100644 (file)
@@ -120,9 +120,13 @@ def _manifest(ui, repo, path, rev):
     ui.write('</manifest>\n')
 
 def rhannotate(ui, repo, *pats, **opts):
+    rev = urllib.unquote_plus(opts.pop('rev', None))
+    opts['rev'] = rev
     return commands.annotate(ui, repo, *map(urllib.unquote_plus, pats), **opts)
 
 def rhcat(ui, repo, file1, *pats, **opts):
+    rev = urllib.unquote_plus(opts.pop('rev', None))
+    opts['rev'] = rev
     return commands.cat(ui, repo, urllib.unquote_plus(file1), *map(urllib.unquote_plus, pats), **opts)
 
 def rhdiff(ui, repo, *pats, **opts):
index d5266e9..f39b397 100644 (file)
@@ -252,7 +252,7 @@ module Redmine
 
         def cat(path, identifier=nil)
           p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path))
-          hg 'rhcat', '-r', hgrev(identifier), hgtarget(p) do |io|
+          hg 'rhcat', '-r', CGI.escape(hgrev(identifier)), hgtarget(p) do |io|
             io.binmode
             io.read
           end
@@ -263,7 +263,7 @@ module Redmine
         def annotate(path, identifier=nil)
           p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path))
           blame = Annotate.new
-          hg 'rhannotate', '-ncu', '-r', hgrev(identifier), hgtarget(p) do |io|
+          hg 'rhannotate', '-ncu', '-r', CGI.escape(hgrev(identifier)), hgtarget(p) do |io|
             io.each_line do |line|
               line.force_encoding('ASCII-8BIT') if line.respond_to?(:force_encoding)
               next unless line =~ %r{^([^:]+)\s(\d+)\s([0-9a-f]+):\s(.*)$}