diff --git a/app/models/repository/git.rb b/app/models/repository/git.rb index 37104cbf0..43c826562 100644 --- a/app/models/repository/git.rb +++ b/app/models/repository/git.rb @@ -218,21 +218,18 @@ class Repository::Git < Repository private :save_revisions def save_revision(rev) + parents = (rev.parents || []).collect{|rp| find_changeset_by_name(rp)}.compact changeset = Changeset.create( :repository => self, :revision => rev.identifier, :scmid => rev.scmid, :committer => rev.author, :committed_on => rev.time, - :comments => rev.message + :comments => rev.message, + :parents => parents ) unless changeset.new_record? rev.paths.each { |change| changeset.create_change(change) } - parents = {} - parents[changeset] = rev.parents unless rev.parents.nil? - parents.each do |ch, chparents| - ch.parents = chparents.collect{|rp| find_changeset_by_name(rp)}.compact - end end changeset end diff --git a/app/models/repository/mercurial.rb b/app/models/repository/mercurial.rb index c31682783..36dfb201f 100644 --- a/app/models/repository/mercurial.rb +++ b/app/models/repository/mercurial.rb @@ -140,19 +140,16 @@ class Repository::Mercurial < Repository (db_rev + 1).step(scm_rev, FETCH_AT_ONCE) do |i| scm.each_revision('', i, [i + FETCH_AT_ONCE - 1, scm_rev].min) do |re| transaction do + parents = (re.parents || []).collect{|rp| find_changeset_by_name(rp)}.compact cs = Changeset.create(:repository => self, :revision => re.revision, :scmid => re.scmid, :committer => re.author, :committed_on => re.time, - :comments => re.message) + :comments => re.message, + :parents => parents) 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