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
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)
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
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