summaryrefslogtreecommitdiff
path: root/app/controllers/projects/tree_controller.rb
blob: 92e4bc16d9d772e91b33bd76a57e2c854be2e5af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Controller for viewing a repository's file structure
class Projects::TreeController < Projects::ApplicationController
  include ExtractsPath

  before_action :require_non_empty_project, except: [:new, :create]
  before_action :assign_ref_vars
  before_action :authorize_download_code!

  def show
    return not_found! unless @repository.commit(@ref)

    if tree.entries.empty?
      if @repository.blob_at(@commit.id, @path)
        redirect_to(
          namespace_project_blob_path(@project.namespace, @project,
                                      File.join(@ref, @path))
        ) and return
      elsif @path.present?
        return not_found!
      end
    end

    respond_to do |format|
      format.html
      # Disable cache so browser history works
      format.js { no_cache_headers }
    end
  end
end