git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8837 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/1.4.0
@@ -153,21 +153,25 @@ class Repository::Git < Repository | |||
from_scmid = nil | |||
from_scmid = h["branches"][br]["last_scmid"] if h["branches"][br] | |||
h["branches"][br] ||= {} | |||
scm.revisions('', from_scmid, br, {:reverse => true}) do |rev| | |||
db_rev = find_changeset_by_name(rev.revision) | |||
transaction do | |||
if db_rev.nil? | |||
db_saved_rev = save_revision(rev) | |||
parents = {} | |||
parents[db_saved_rev] = rev.parents unless rev.parents.nil? | |||
parents.each do |ch, chparents| | |||
ch.parents = chparents.collect{|rp| find_changeset_by_name(rp)}.compact | |||
begin | |||
scm.revisions('', from_scmid, br, {:reverse => true}) do |rev| | |||
db_rev = find_changeset_by_name(rev.revision) | |||
transaction do | |||
if db_rev.nil? | |||
db_saved_rev = save_revision(rev) | |||
parents = {} | |||
parents[db_saved_rev] = rev.parents unless rev.parents.nil? | |||
parents.each do |ch, chparents| | |||
ch.parents = chparents.collect{|rp| find_changeset_by_name(rp)}.compact | |||
end | |||
end | |||
h["branches"][br]["last_scmid"] = rev.scmid | |||
merge_extra_info(h) | |||
self.save | |||
end | |||
h["branches"][br]["last_scmid"] = rev.scmid | |||
merge_extra_info(h) | |||
self.save | |||
end | |||
rescue Redmine::Scm::Adapters::CommandFailed => e | |||
logger.error("save revisions error: #{e.message}") | |||
end | |||
end | |||
end |
@@ -290,8 +290,13 @@ module Redmine | |||
end | |||
revs | |||
rescue ScmCommandAborted => e | |||
logger.error("git log #{from_to.to_s} error: #{e.message}") | |||
revs | |||
err_msg = "git log error: #{e.message}" | |||
logger.error(err_msg) | |||
if block_given? | |||
raise CommandFailed, err_msg | |||
else | |||
revs | |||
end | |||
end | |||
def diff(path, identifier_from, identifier_to=nil) |
@@ -191,14 +191,16 @@ begin | |||
end | |||
def test_revisions_invalid_rev | |||
revs1 = [] | |||
@adapter.revisions('', | |||
assert_equal [], @adapter.revisions('', '1234abcd', "master") | |||
assert_raise Redmine::Scm::Adapters::CommandFailed do | |||
revs1 = [] | |||
@adapter.revisions('', | |||
'1234abcd', | |||
"master", | |||
{:reverse => true}) do |rev| | |||
revs1 << rev | |||
revs1 << rev | |||
end | |||
end | |||
assert_equal [], revs1 | |||
end | |||
def test_revisions_includes_master_two_revs | |||
@@ -277,14 +279,20 @@ begin | |||
end | |||
def test_revisions_invalid_rev_excludes | |||
revs1 = [] | |||
@adapter.revisions('', nil, nil, | |||
{:reverse => true, | |||
:includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'], | |||
:excludes => ['0123abcd4567']}) do |rev| | |||
revs1 << rev | |||
assert_equal [], | |||
@adapter.revisions('', nil, nil, | |||
{:reverse => true, | |||
:includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'], | |||
:excludes => ['0123abcd4567']}) | |||
assert_raise Redmine::Scm::Adapters::CommandFailed do | |||
revs1 = [] | |||
@adapter.revisions('', nil, nil, | |||
{:reverse => true, | |||
:includes => ['83ca5fd546063a3c7dc2e568ba3355661a9e2b2c'], | |||
:excludes => ['0123abcd4567']}) do |rev| | |||
revs1 << rev | |||
end | |||
end | |||
assert_equal [], revs1 | |||
end | |||
def test_getting_revisions_with_spaces_in_filename |