Commit 8e662033 authored by tmaruyama's avatar tmaruyama

scm: mercurial: transaction for each imported revisions (#10470)

Subversion transaction switched at r2563.
Subversion and Mercurial have a sequential revision number.
So, Mercurial can use the same logic with Subversion.

git-svn-id: https://svn.redmine.org/redmine/trunk@9288 e93f8b46-1217-0410-a6f0-8f06a7374b81
parent 2d0dace3
......@@ -138,19 +138,21 @@ class Repository::Mercurial < Repository
logger.debug "Fetching changesets for repository #{url}" if logger
(db_rev + 1).step(scm_rev, FETCH_AT_ONCE) do |i|
transaction do
scm.each_revision('', i, [i + FETCH_AT_ONCE - 1, scm_rev].min) do |re|
scm.each_revision('', i, [i + FETCH_AT_ONCE - 1, scm_rev].min) do |re|
transaction do
cs = Changeset.create(:repository => self,
:revision => re.revision,
:scmid => re.scmid,
:committer => re.author,
:committed_on => re.time,
:comments => re.message)
re.paths.each { |e| cs.create_change(e) }
parents = {}
parents[cs] = re.parents unless re.parents.nil?
parents.each do |ch, chparents|
ch.parents = chparents.collect{|rp| find_changeset_by_name(rp)}.compact
unless cs.new_record?
re.paths.each { |e| cs.create_change(e) }
parents = {}
parents[cs] = re.parents unless re.parents.nil?
parents.each do |ch, chparents|
ch.parents = chparents.collect{|rp| find_changeset_by_name(rp)}.compact
end
end
end
end
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment