Commit e00e54b69ca7cd1c4cfbb726b87372c479ff8b73

Authored by Sato Hiroyuki
1 parent 46fa9218

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
... ...