From e00e54b69ca7cd1c4cfbb726b87372c479ff8b73 Mon Sep 17 00:00:00 2001 From: Sato Hiroyuki Date: Tue, 19 Mar 2013 10:22:55 +0900 Subject: [PATCH] Fix timeout error while showing the very large repo like git repo. --- app/models/network/graph.rb | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/app/models/network/graph.rb b/app/models/network/graph.rb index 16512b90f..4b1abf521 100644 --- a/app/models/network/graph.rb +++ b/app/models/network/graph.rb @@ -66,13 +66,30 @@ module Network # Skip count that the target commit is displayed in center. def count_to_display_commit_in_center - commit_index = find_commits.index do |c| - c.id == @commit.id + offset = -1 + skip = 0 + while offset == -1 + tmp_commits = find_commits(skip) + if tmp_commits.size > 0 + index = tmp_commits.index do |c| + c.id == @commit.id + end + + if index + # Find the target commit + offset = index + skip + else + skip += self.class.max_count + end + else + # Cant't find the target commit in the repo. + offset = 0 + end end - if commit_index && (self.class.max_count / 2 < commit_index) then + if self.class.max_count / 2 < offset then # get max index that commit is displayed in the center. - commit_index - self.class.max_count / 2 + offset - self.class.max_count / 2 else 0 end -- 2.11.0