summaryrefslogtreecommitdiffstats
path: root/app/models/repository
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-10-25 10:23:29 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-10-25 10:23:29 +0000
commit8236563d6bdc361ba0a0d9b292442fa5d2a39e07 (patch)
tree90518cba6a6fdaf4521c367056d10f04db1a8f4b /app/models/repository
parent5f9f6ea2e1736ba6fbdde65d878d09728b1f309b (diff)
downloadredmine-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.rb30
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