##// END OF EJS Templates
scm: git: reduce saving heads times in fetching revisions (#8857, #9472)...
Toshi MARUYAMA -
r9023:bcba955456c7
parent child
Show More
@@ -154,10 +154,13 class Repository::Git < Repository
154 from_scmid = h["branches"][br]["last_scmid"] if h["branches"][br]
154 from_scmid = h["branches"][br]["last_scmid"] if h["branches"][br]
155 h["branches"][br] ||= {}
155 h["branches"][br] ||= {}
156 begin
156 begin
157 cnt = 0
158 last_rev_scmid = nil
157 scm.revisions('', from_scmid, br, {:reverse => true}) do |rev|
159 scm.revisions('', from_scmid, br, {:reverse => true}) do |rev|
160 cnt += 1
158 db_rev = find_changeset_by_name(rev.revision)
161 db_rev = find_changeset_by_name(rev.revision)
159 transaction do
162 if db_rev.nil?
160 if db_rev.nil?
163 transaction do
161 db_saved_rev = save_revision(rev)
164 db_saved_rev = save_revision(rev)
162 parents = {}
165 parents = {}
163 parents[db_saved_rev] = rev.parents unless rev.parents.nil?
166 parents[db_saved_rev] = rev.parents unless rev.parents.nil?
@@ -165,11 +168,20 class Repository::Git < Repository
165 ch.parents = chparents.collect{|rp| find_changeset_by_name(rp)}.compact
168 ch.parents = chparents.collect{|rp| find_changeset_by_name(rp)}.compact
166 end
169 end
167 end
170 end
168 h["branches"][br]["last_scmid"] = rev.scmid
171 end
172 last_rev_scmid = rev.scmid
173 if cnt > 100
174 cnt = 0
175 h["branches"][br]["last_scmid"] = last_rev_scmid
169 merge_extra_info(h)
176 merge_extra_info(h)
170 self.save
177 self.save
171 end
178 end
172 end
179 end
180 unless last_rev_scmid.nil?
181 h["branches"][br]["last_scmid"] = last_rev_scmid
182 merge_extra_info(h)
183 self.save
184 end
173 rescue Redmine::Scm::Adapters::CommandFailed => e
185 rescue Redmine::Scm::Adapters::CommandFailed => e
174 logger.error("save revisions error: #{e.message}")
186 logger.error("save revisions error: #{e.message}")
175 end
187 end
General Comments 0
You need to be logged in to leave comments. Login now