rosa-build/app/controllers/git/commits_controller.rb

45 lines
1.3 KiB
Ruby

# -*- encoding : utf-8 -*-
class Git::CommitsController < Git::BaseController
helper_method :split_commits_by_date
def index
@branch_name = params[:treeish] || @project.default_branch
@branch = @project.branch(@branch_name)
@path = params[:path]
if @path.present?
@commits = @git_repository.repo.log(@branch_name, @path)
@render_paginate = false
else
@commits, @page, @last_page = @git_repository.paginate_commits(@branch_name, :page => params[:page])
@render_paginate = true
end
end
def show
@commit = @git_repository.commit(params[:id]) # @git_repository.commits(params[:id]).first
respond_to do |format|
format.html
format.diff { render :text => (@commit.diffs.map{|d| d.diff}.join("\n") rescue ''), :content_type => "text/plain" }
format.patch { render :text => (@commit.to_patch rescue ''), :content_type => "text/plain" }
end
end
protected
def split_commits_by_date(commits)
res = commits.sort{|x, y| y.authored_date <=> x.authored_date}.inject({}) do |h, commit|
dt = commit.authored_date
h[dt.year] ||= {}
h[dt.year][dt.month] ||= {}
h[dt.year][dt.month][dt.day] ||= []
h[dt.year][dt.month][dt.day] << commit
h
end
return res
end
end