diff options
author | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2012-02-11 05:42:43 +0000 |
---|---|---|
committer | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2012-02-11 05:42:43 +0000 |
commit | 165327a074d8fc248da3a9721f1ad9a155b72cd6 (patch) | |
tree | 45d7206b0b31dd426c77e18390dffd2553384b39 /app/models/repository | |
parent | 1e5f16722fc3dc8e4250309bc4fc5c579461454b (diff) | |
download | redmine-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.rb | 9 |
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) |