scm: darcs: fix Darcs adapter recognizes new files as modified files above Darcs 2.4 (#7415).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4749 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Toshi MARUYAMA 2011-01-23 04:17:26 +00:00
parent abd2762aed
commit e173f7e72d
1 changed files with 30 additions and 1 deletions

View File

@ -168,8 +168,37 @@ module Redmine
}) })
end end
# Retrieve changed paths for a single patch
def get_paths_for_patch(hash) def get_paths_for_patch(hash)
paths = get_paths_for_patch_raw(hash)
if self.class.client_version_above?([2, 4])
orig_paths = paths
paths = []
add_paths = []
add_paths_name = []
mod_paths = []
other_paths = []
orig_paths.each do |path|
if path[:action] == 'A'
add_paths << path
add_paths_name << path[:path]
elsif path[:action] == 'M'
mod_paths << path
else
other_paths << path
end
end
add_paths_name.each do |add_path|
mod_paths.delete_if { |m| m[:path] == add_path }
end
paths.concat add_paths
paths.concat mod_paths
paths.concat other_paths
end
paths
end
# Retrieve changed paths for a single patch
def get_paths_for_patch_raw(hash)
cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --summary --xml-output" cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --summary --xml-output"
cmd << " --match #{shell_quote("hash #{hash}")} " cmd << " --match #{shell_quote("hash #{hash}")} "
paths = [] paths = []