app/controllers/rails_info/version_control/diffs_controller.rb
class RailsInfo::VersionControl::DiffsController < RailsInfoController
def new
repository = Grit::Repo.new(params[:repository_path])
diff = repository.diff(
repository.commit(params[:rev_to]), repository.commit(params[:rev]), params[:path]
)
unless diff.length == 1
raise NotImplementedError.new("Diff length != 1 but #{diff.length}")
end
render text: DiffToHtml::GitConverter.new.get_single_file_diff_body(diff.first.diff)
rescue Exception => e
if Rails.env.development?
raise e.class.name + ': ' + e.message + ' ... ' + e.backtrace.join("\n")
else
logger.error e.class.name + ': ' + e.message + ' ... ' + e.backtrace.join("\n")
render text: 'Internal server error.'
end
end
end