diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-10-25 10:23:29 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-10-25 10:23:29 +0000 |
commit | 8236563d6bdc361ba0a0d9b292442fa5d2a39e07 (patch) | |
tree | 90518cba6a6fdaf4521c367056d10f04db1a8f4b /app/models/repository | |
parent | 5f9f6ea2e1736ba6fbdde65d878d09728b1f309b (diff) | |
download | redmine-8236563d6bdc361ba0a0d9b292442fa5d2a39e07.tar.gz redmine-8236563d6bdc361ba0a0d9b292442fa5d2a39e07.zip |
Check that git changeset is not in the database before creating it (#1419).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@1953 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/repository')
-rw-r--r-- | app/models/repository/git.rb | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/app/models/repository/git.rb b/app/models/repository/git.rb index 2f440fe29..6fcb760e6 100644 --- a/app/models/repository/git.rb +++ b/app/models/repository/git.rb @@ -45,20 +45,22 @@ class Repository::Git < Repository unless changesets.find_by_scmid(scm_revision) scm.revisions('', db_revision, nil, :reverse => true) do |revision| - transaction do - changeset = Changeset.create(:repository => self, - :revision => revision.identifier, - :scmid => revision.scmid, - :committer => revision.author, - :committed_on => revision.time, - :comments => revision.message) - - revision.paths.each do |change| - Change.create(:changeset => changeset, - :action => change[:action], - :path => change[:path], - :from_path => change[:from_path], - :from_revision => change[:from_revision]) + if changesets.find_by_scmid(revision.scmid.to_s).nil? + transaction do + changeset = Changeset.create!(:repository => self, + :revision => revision.identifier, + :scmid => revision.scmid, + :committer => revision.author, + :committed_on => revision.time, + :comments => revision.message) + + revision.paths.each do |change| + Change.create!(:changeset => changeset, + :action => change[:action], + :path => change[:path], + :from_path => change[:from_path], + :from_revision => change[:from_revision]) + end end end end |