Commit e00e54b69ca7cd1c4cfbb726b87372c479ff8b73
1 parent
46fa9218
Exists in
master
and in
4 other branches
Fix timeout error while showing the very large repo like git repo.
Showing
1 changed file
with
21 additions
and
4 deletions
Show diff stats
app/models/network/graph.rb
... | ... | @@ -66,13 +66,30 @@ module Network |
66 | 66 | |
67 | 67 | # Skip count that the target commit is displayed in center. |
68 | 68 | def count_to_display_commit_in_center |
69 | - commit_index = find_commits.index do |c| | |
70 | - c.id == @commit.id | |
69 | + offset = -1 | |
70 | + skip = 0 | |
71 | + while offset == -1 | |
72 | + tmp_commits = find_commits(skip) | |
73 | + if tmp_commits.size > 0 | |
74 | + index = tmp_commits.index do |c| | |
75 | + c.id == @commit.id | |
76 | + end | |
77 | + | |
78 | + if index | |
79 | + # Find the target commit | |
80 | + offset = index + skip | |
81 | + else | |
82 | + skip += self.class.max_count | |
83 | + end | |
84 | + else | |
85 | + # Cant't find the target commit in the repo. | |
86 | + offset = 0 | |
87 | + end | |
71 | 88 | end |
72 | 89 | |
73 | - if commit_index && (self.class.max_count / 2 < commit_index) then | |
90 | + if self.class.max_count / 2 < offset then | |
74 | 91 | # get max index that commit is displayed in the center. |
75 | - commit_index - self.class.max_count / 2 | |
92 | + offset - self.class.max_count / 2 | |
76 | 93 | else |
77 | 94 | 0 |
78 | 95 | end | ... | ... |