From 103698b371ee139b2f037b7ab3483a82c732b914 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 21 Feb 2010 14:38:34 +0000 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 --- lib/redmine/scm/adapters/abstract_adapter.rb | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/redmine/scm/adapters/abstract_adapter.rb b/lib/redmine/scm/adapters/abstract_adapter.rb index 962072950..a3ca61e23 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