Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2015-08-20 11:02:12 +0300
committerStan Hu <stanhu@gmail.com>2015-08-20 11:27:29 +0300
commit0a5b005da170fe81afea012b56f4810125b13ead (patch)
tree82014eb7c0d9711588e1e3376b21a92b48bb6da6 /app/controllers/projects/blame_controller.rb
parent55fc58bda4a5592f2f8deaecec9526fbe4eecd6f (diff)
Fix blame view line groupings
Closes #2305
Diffstat (limited to 'app/controllers/projects/blame_controller.rb')
-rw-r--r--app/controllers/projects/blame_controller.rb24
1 files changed, 23 insertions, 1 deletions
diff --git a/app/controllers/projects/blame_controller.rb b/app/controllers/projects/blame_controller.rb
index 45e157c90cb..9ea518e6c85 100644
--- a/app/controllers/projects/blame_controller.rb
+++ b/app/controllers/projects/blame_controller.rb
@@ -8,6 +8,28 @@ class Projects::BlameController < Projects::ApplicationController
def show
@blob = @repository.blob_at(@commit.id, @path)
- @blame = Gitlab::Git::Blame.new(@repository, @commit.id, @path)
+ @blame = group_blame_lines
+ end
+
+ def group_blame_lines
+ blame = Gitlab::Git::Blame.new(@repository, @commit.id, @path)
+
+ prev_sha = nil
+ groups = []
+ current_group = nil
+
+ blame.each do |commit, line|
+ if prev_sha && prev_sha == commit.sha
+ current_group[:lines] << line
+ else
+ groups << current_group if current_group.present?
+ current_group = { commit: commit, lines: [line] }
+ end
+
+ prev_sha = commit.sha
+ end
+
+ groups << current_group if current_group.present?
+ groups
end
end