Merge branch 'lfs-badge' into 'master'
Added LFS badge to indicate LFS tracked files Closes #15567 See merge request gitlab-org/gitlab-ce!15845
This commit is contained in:
commit
1baea77438
11 changed files with 93 additions and 1 deletions
|
@ -396,3 +396,8 @@ span.idiff {
|
|||
.file-fork-suggestion-note {
|
||||
margin-right: 1.5em;
|
||||
}
|
||||
|
||||
.label-lfs {
|
||||
color: $common-gray-light;
|
||||
border: 1px solid $common-gray-light;
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ class Projects::TreeController < Projects::ApplicationController
|
|||
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
lfs_blob_ids
|
||||
@last_commit = @repository.last_commit_for_path(@commit.id, @tree.path) || @commit
|
||||
end
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ class ProjectsController < Projects::ApplicationController
|
|||
before_action :repository, except: [:index, :new, :create]
|
||||
before_action :assign_ref_vars, only: [:show], if: :repo_exists?
|
||||
before_action :tree, only: [:show], if: [:repo_exists?, :project_view_files?]
|
||||
before_action :lfs_blob_ids, only: [:show], if: [:repo_exists?, :project_view_files?]
|
||||
before_action :project_export_enabled, only: [:export, :download_export, :remove_export, :generate_new_export]
|
||||
|
||||
# Authorize
|
||||
|
|
|
@ -8,3 +8,6 @@
|
|||
|
||||
%small
|
||||
= number_to_human_size(blob.raw_size)
|
||||
|
||||
- if blob.stored_externally? && blob.external_storage == :lfs
|
||||
%span.label.label-lfs.append-right-5 LFS
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
- is_lfs_blob = @lfs_blob_ids.include?(blob_item.id)
|
||||
%tr{ class: "tree-item #{tree_hex_class(blob_item)}" }
|
||||
%td.tree-item-file-name
|
||||
= tree_icon(type, blob_item.mode, blob_item.name)
|
||||
- file_name = blob_item.name
|
||||
= link_to project_blob_path(@project, tree_join(@id || @commit.id, blob_item.name)), class: 'str-truncated', title: file_name do
|
||||
%span= file_name
|
||||
- if is_lfs_blob
|
||||
%span.label.label-lfs.prepend-left-5 LFS
|
||||
%td.hidden-xs.tree-commit
|
||||
%td.tree-time-ago.cgray.text-right
|
||||
= render 'projects/tree/spinner'
|
||||
|
|
5
changelogs/unreleased/lfs-badge.yml
Normal file
5
changelogs/unreleased/lfs-badge.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Added badge to tree & blob views to indicate LFS tracked files
|
||||
merge_request:
|
||||
author:
|
||||
type: added
|
|
@ -127,7 +127,6 @@ module ExtractsPath
|
|||
|
||||
@hex_path = Digest::SHA1.hexdigest(@path)
|
||||
@logs_path = logs_file_project_ref_path(@project, @ref, @path)
|
||||
|
||||
rescue RuntimeError, NoMethodError, InvalidPathError
|
||||
render_404
|
||||
end
|
||||
|
@ -136,6 +135,11 @@ module ExtractsPath
|
|||
@tree ||= @repo.tree(@commit.id, @path)
|
||||
end
|
||||
|
||||
def lfs_blob_ids
|
||||
blob_ids = tree.blobs.map(&:id)
|
||||
@lfs_blob_ids = Gitlab::Git::Blob.batch_lfs_pointers(@project.repository, blob_ids).map(&:id)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# overriden in subclasses, do not remove
|
||||
|
|
28
spec/features/projects/tree/tree_show_spec.rb
Normal file
28
spec/features/projects/tree/tree_show_spec.rb
Normal file
|
@ -0,0 +1,28 @@
|
|||
require 'spec_helper'
|
||||
|
||||
feature 'Projects tree' do
|
||||
let(:user) { create(:user) }
|
||||
let(:project) { create(:project, :repository) }
|
||||
|
||||
before do
|
||||
project.add_master(user)
|
||||
sign_in(user)
|
||||
|
||||
visit project_tree_path(project, 'master')
|
||||
end
|
||||
|
||||
it 'renders tree table' do
|
||||
expect(page).to have_selector('.tree-item')
|
||||
expect(page).not_to have_selector('.label-lfs', text: 'LFS')
|
||||
end
|
||||
|
||||
context 'LFS' do
|
||||
before do
|
||||
visit project_tree_path(project, File.join('master', 'files/lfs'))
|
||||
end
|
||||
|
||||
it 'renders LFS badge on blob item' do
|
||||
expect(page).to have_selector('.label-lfs', text: 'LFS')
|
||||
end
|
||||
end
|
||||
end
|
|
@ -9,6 +9,7 @@ describe TreeHelper do
|
|||
before do
|
||||
@id = sha
|
||||
@project = project
|
||||
@lfs_blob_ids = []
|
||||
end
|
||||
|
||||
it 'displays all entries without a warning' do
|
||||
|
|
40
spec/views/projects/tree/_blob_item.html.haml_spec.rb
Normal file
40
spec/views/projects/tree/_blob_item.html.haml_spec.rb
Normal file
|
@ -0,0 +1,40 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'projects/tree/_blob_item' do
|
||||
let(:project) { create(:project, :repository) }
|
||||
let(:repository) { project.repository }
|
||||
let(:blob_item) { Gitlab::Git::Tree.where(repository, SeedRepo::Commit::ID, 'files/ruby').first }
|
||||
|
||||
before do
|
||||
assign(:project, project)
|
||||
assign(:repository, repository)
|
||||
assign(:id, File.join('master', ''))
|
||||
assign(:lfs_blob_ids, [])
|
||||
end
|
||||
|
||||
it 'renders blob item' do
|
||||
render_partial(blob_item)
|
||||
|
||||
expect(rendered).to have_content(blob_item.name)
|
||||
expect(rendered).not_to have_selector('.label-lfs', text: 'LFS')
|
||||
end
|
||||
|
||||
describe 'LFS blob' do
|
||||
before do
|
||||
assign(:lfs_blob_ids, [blob_item].map(&:id))
|
||||
|
||||
render_partial(blob_item)
|
||||
end
|
||||
|
||||
it 'renders LFS badge' do
|
||||
expect(rendered).to have_selector('.label-lfs', text: 'LFS')
|
||||
end
|
||||
end
|
||||
|
||||
def render_partial(blob_item)
|
||||
render partial: 'projects/tree/blob_item', locals: {
|
||||
blob_item: blob_item,
|
||||
type: 'blob'
|
||||
}
|
||||
end
|
||||
end
|
|
@ -9,6 +9,7 @@ describe 'projects/tree/show' do
|
|||
before do
|
||||
assign(:project, project)
|
||||
assign(:repository, repository)
|
||||
assign(:lfs_blob_ids, [])
|
||||
|
||||
allow(view).to receive(:can?).and_return(true)
|
||||
allow(view).to receive(:can_collaborate_with_project?).and_return(true)
|
||||
|
|
Loading…
Reference in a new issue