From 103698b371ee139b2f037b7ab3483a82c732b914 2010-02-21 14:38:34 From: Jean-Philippe Lang Date: 2010-02-21 14:38:34 Subject: [PATCH] Wraps changeset creation inside a single transation. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3469 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/lib/redmine/scm/adapters/abstract_adapter.rb b/lib/redmine/scm/adapters/abstract_adapter.rb index 9620729..a3ca61e 100644 --- a/lib/redmine/scm/adapters/abstract_adapter.rb +++ b/lib/redmine/scm/adapters/abstract_adapter.rb @@ -286,21 +286,23 @@ module Redmine end def save(repo) - if repo.changesets.find_by_scmid(scmid.to_s).nil? - changeset = Changeset.create!( + Changeset.transaction do + changeset = Changeset.new( :repository => repo, :revision => identifier, :scmid => scmid, :committer => author, :committed_on => time, :comments => message) - - paths.each do |file| - Change.create!( - :changeset => changeset, - :action => file[:action], - :path => file[:path]) - end + + if changeset.save + paths.each do |file| + Change.create( + :changeset => changeset, + :action => file[:action], + :path => file[:path]) + end + end end end end