summaryrefslogtreecommitdiffstats
path: root/app/models/repository
diff options
context:
space:
mode:
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>2012-02-11 05:42:43 +0000
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>2012-02-11 05:42:43 +0000
commit165327a074d8fc248da3a9721f1ad9a155b72cd6 (patch)
tree45d7206b0b31dd426c77e18390dffd2553384b39 /app/models/repository
parent1e5f16722fc3dc8e4250309bc4fc5c579461454b (diff)
downloadredmine-165327a074d8fc248da3a9721f1ad9a155b72cd6.tar.gz
redmine-165327a074d8fc248da3a9721f1ad9a155b72cd6.zip
scm: git: reduce saving heads times in fetching revisions (#8857, #9472)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8840 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/repository')
-rw-r--r--app/models/repository/git.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/app/models/repository/git.rb b/app/models/repository/git.rb
index 207a224ec..869138ee7 100644
--- a/app/models/repository/git.rb
+++ b/app/models/repository/git.rb
@@ -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)