diff options
author | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2011-02-16 11:17:58 +0000 |
---|---|---|
committer | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2011-02-16 11:17:58 +0000 |
commit | 4b1e16e13b62ba31556440a739866955451325ff (patch) | |
tree | dc13e33a4751dba82b1dfe2bc009387ee02b0ecc | |
parent | 671b16f898844149db71fec8ff1d32911f7ca48f (diff) | |
download | redmine-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.rb | 26 |
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) |