<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -45,20 +45,22 @@ class Repository::Git &lt; Repository
 
       unless changesets.find_by_scmid(scm_revision)
         scm.revisions('', db_revision, nil, :reverse =&gt; true) do |revision|
-          transaction do
-            changeset = Changeset.create(:repository =&gt; self,
-                                         :revision =&gt; revision.identifier,
-                                         :scmid =&gt; revision.scmid,
-                                         :committer =&gt; revision.author, 
-                                         :committed_on =&gt; revision.time,
-                                         :comments =&gt; revision.message)
-            
-            revision.paths.each do |change|
-              Change.create(:changeset =&gt; changeset,
-                            :action =&gt; change[:action],
-                            :path =&gt; change[:path],
-                            :from_path =&gt; change[:from_path],
-                            :from_revision =&gt; change[:from_revision])
+          if changesets.find_by_scmid(revision.scmid.to_s).nil?
+            transaction do
+              changeset = Changeset.create!(:repository =&gt; self,
+                                           :revision =&gt; revision.identifier,
+                                           :scmid =&gt; revision.scmid,
+                                           :committer =&gt; revision.author, 
+                                           :committed_on =&gt; revision.time,
+                                           :comments =&gt; revision.message)
+              
+              revision.paths.each do |change|
+                Change.create!(:changeset =&gt; changeset,
+                              :action =&gt; change[:action],
+                              :path =&gt; change[:path],
+                              :from_path =&gt; change[:from_path],
+                              :from_revision =&gt; change[:from_revision])
+              end
             end
           end
         end</diff>
      <filename>app/models/repository/git.rb</filename>
    </modified>
    <modified>
      <diff>@@ -42,7 +42,7 @@ class RepositoryGitTest &lt; Test::Unit::TestCase
     def test_fetch_changesets_incremental
       @repository.fetch_changesets
       # Remove the 3 latest changesets
-      @repository.changesets.find(:all, :order =&gt; 'id DESC', :limit =&gt; 3).each(&amp;:destroy)
+      @repository.changesets.find(:all, :order =&gt; 'committed_on DESC', :limit =&gt; 3).each(&amp;:destroy)
       @repository.reload
       assert_equal 3, @repository.changesets.count
       </diff>
      <filename>test/unit/repository_git_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>5f9f6ea2e1736ba6fbdde65d878d09728b1f309b</id>
    </parent>
  </parents>
  <author>
    <name>Jean-Philippe Lang</name>
    <email>jp_lang@yahoo.fr</email>
  </author>
  <url>http://github.com/squeejee/redmine/commit/8236563d6bdc361ba0a0d9b292442fa5d2a39e07</url>
  <id>8236563d6bdc361ba0a0d9b292442fa5d2a39e07</id>
  <committed-date>2008-10-25T03:23:29-07:00</committed-date>
  <authored-date>2008-10-25T03:23:29-07:00</authored-date>
  <message>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</message>
  <tree>90518cba6a6fdaf4521c367056d10f04db1a8f4b</tree>
  <committer>
    <name>Jean-Philippe Lang</name>
    <email>jp_lang@yahoo.fr</email>
  </committer>
</commit>
