]> source.dussan.org Git - redmine.git/commitdiff
scm: git: reduce saving heads times in fetching revisions (#8857, #9472)
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Sat, 11 Feb 2012 05:42:43 +0000 (05:42 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Sat, 11 Feb 2012 05:42:43 +0000 (05:42 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8840 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/repository/git.rb

index 207a224ec81147e68ba8da5b2832e7ef7eb3fa52..869138ee7552b3a55ca094f48eee84482eb0d576 100644 (file)
@@ -162,10 +162,12 @@ class Repository::Git < Repository
     opts[:excludes] = prev_db_heads
     opts[:includes] = repo_heads
     begin
+      cnt = 0
       scm.revisions('', nil, nil, opts) do |rev|
+        cnt += 1
         db_rev = find_changeset_by_name(rev.scmid)
-        transaction do
-          if db_rev.nil?
+        if db_rev.nil?
+          transaction do
             db_saved_rev = save_revision(rev)
             parents = {}
             parents[db_saved_rev] = rev.parents unless rev.parents.nil?
@@ -173,6 +175,9 @@ class Repository::Git < Repository
               ch.parents = chparents.collect{|rp| find_changeset_by_name(rp)}.compact
             end
           end
+        end
+        if cnt > 100
+          cnt = 0
           h["heads"] = prev_db_heads.dup
           h["heads"] << rev.scmid
           merge_extra_info(h)