summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>2011-03-14 02:23:54 +0000
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>2011-03-14 02:23:54 +0000
commitbf6ec48bea07f2fb9ce15823992f6306ae2719ef (patch)
tree3673d2d1c26b9f3f6030ad782a99be6d89f91e7f /lib
parent0445c1e9cbd65f9d0136bf196b0086a305586300 (diff)
downloadredmine-bf6ec48bea07f2fb9ce15823992f6306ae2719ef.tar.gz
redmine-bf6ec48bea07f2fb9ce15823992f6306ae2719ef.zip
scm: mercurial: wrap revision of cat and annotate with URL encoding (#1981, #7246).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5112 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib')
-rw-r--r--lib/redmine/scm/adapters/mercurial/redminehelper.py4
-rw-r--r--lib/redmine/scm/adapters/mercurial_adapter.rb4
2 files changed, 6 insertions, 2 deletions
diff --git a/lib/redmine/scm/adapters/mercurial/redminehelper.py b/lib/redmine/scm/adapters/mercurial/redminehelper.py
index 3e82e95f7..7b3b639f2 100644
--- a/lib/redmine/scm/adapters/mercurial/redminehelper.py
+++ b/lib/redmine/scm/adapters/mercurial/redminehelper.py
@@ -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):
diff --git a/lib/redmine/scm/adapters/mercurial_adapter.rb b/lib/redmine/scm/adapters/mercurial_adapter.rb
index d5266e9bf..f39b397a2 100644
--- a/lib/redmine/scm/adapters/mercurial_adapter.rb
+++ b/lib/redmine/scm/adapters/mercurial_adapter.rb
@@ -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(.*)$}