From 4b1e16e13b62ba31556440a739866955451325ff Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Wed, 16 Feb 2011 11:17:58 +0000 Subject: [PATCH] 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 --- lib/redmine/scm/adapters/mercurial_adapter.rb | 26 +++++++------------ 1 file 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)