summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>2011-02-16 11:17:58 +0000
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>2011-02-16 11:17:58 +0000
commit4b1e16e13b62ba31556440a739866955451325ff (patch)
treedc13e33a4751dba82b1dfe2bc009387ee02b0ecc
parent671b16f898844149db71fec8ff1d32911f7ca48f (diff)
downloadredmine-4b1e16e13b62ba31556440a739866955451325ff.tar.gz
redmine-4b1e16e13b62ba31556440a739866955451325ff.zip
scm: mercurial: rewrite MercurialAdapter#diff by using helper extension (#4455, #7518).
fix incompatibility of diff with Mercurial < 1.1. Contributed by Yuya Nishihara. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4854 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--lib/redmine/scm/adapters/mercurial_adapter.rb26
1 files changed, 9 insertions, 17 deletions
diff --git a/lib/redmine/scm/adapters/mercurial_adapter.rb b/lib/redmine/scm/adapters/mercurial_adapter.rb
index 9092e1579..93cfcf625 100644
--- a/lib/redmine/scm/adapters/mercurial_adapter.rb
+++ b/lib/redmine/scm/adapters/mercurial_adapter.rb
@@ -159,27 +159,19 @@ module Redmine
end
def diff(path, identifier_from, identifier_to=nil)
- path ||= ''
- diff_args = ''
- diff = []
+ hg_args = %w|rhdiff|
if identifier_to
- diff_args = "-r #{hgrev(identifier_to, true)} -r #{hgrev(identifier_from, true)}"
+ hg_args << '-r' << hgrev(identifier_to) << '-r' << hgrev(identifier_from)
else
- if self.class.client_version_above?([1, 2])
- diff_args = "-c #{hgrev(identifier_from, true)}"
- else
- return []
- end
+ hg_args << '-c' << hgrev(identifier_from)
end
- cmd = "#{self.class.sq_bin} -R #{target('')} --config diff.git=false diff --nodates #{diff_args}"
- cmd << " -I #{target(path)}" unless path.empty?
- shellout(cmd) do |io|
- io.each_line do |line|
- diff << line
- end
+ hg_args << CGI.escape(hgtarget(path)) unless path.blank?
+
+ hg *hg_args do |io|
+ io.collect
end
- return nil if $? && $?.exitstatus != 0
- diff
+ rescue HgCommandAborted
+ nil # means not found
end
def cat(path, identifier=nil)