Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2019-10-09 09:06:19 +00:00
parent 78adf0c5cc
commit 3744bcc0d1
19 changed files with 111 additions and 51 deletions

View file

@ -1,6 +1,6 @@
<script> <script>
import { s__, __ } from '~/locale'; import { s__, __ } from '~/locale';
import { GlLink, GlButton } from '@gitlab/ui'; import { GlLink, GlButton, GlTooltip } from '@gitlab/ui';
import { GlAreaChart, GlLineChart, GlChartSeriesLabel } from '@gitlab/ui/dist/charts'; import { GlAreaChart, GlLineChart, GlChartSeriesLabel } from '@gitlab/ui/dist/charts';
import dateFormat from 'dateformat'; import dateFormat from 'dateformat';
import { debounceByAnimationFrame, roundOffFloat } from '~/lib/utils/common_utils'; import { debounceByAnimationFrame, roundOffFloat } from '~/lib/utils/common_utils';
@ -16,6 +16,7 @@ export default {
components: { components: {
GlAreaChart, GlAreaChart,
GlLineChart, GlLineChart,
GlTooltip,
GlButton, GlButton,
GlChartSeriesLabel, GlChartSeriesLabel,
GlLink, GlLink,
@ -72,6 +73,7 @@ export default {
isDeployment: false, isDeployment: false,
sha: '', sha: '',
}, },
showTitleTooltip: false,
width: 0, width: 0,
height: chartHeight, height: chartHeight,
svgs: {}, svgs: {},
@ -202,6 +204,12 @@ export default {
watch: { watch: {
containerWidth: 'onResize', containerWidth: 'onResize',
}, },
mounted() {
const graphTitleEl = this.$refs.graphTitle;
if (graphTitleEl && graphTitleEl.scrollWidth > graphTitleEl.offsetWidth) {
this.showTitleTooltip = true;
}
},
beforeDestroy() { beforeDestroy() {
window.removeEventListener('resize', debouncedResize); window.removeEventListener('resize', debouncedResize);
}, },
@ -265,8 +273,16 @@ export default {
<template> <template>
<div class="prometheus-graph"> <div class="prometheus-graph">
<div class="prometheus-graph-header"> <div class="prometheus-graph-header">
<h5 class="prometheus-graph-title js-graph-title">{{ graphData.title }}</h5> <h5
<div class="prometheus-graph-widgets js-graph-widgets"> ref="graphTitle"
class="prometheus-graph-title js-graph-title text-truncate append-right-8"
>
{{ graphData.title }}
</h5>
<gl-tooltip :target="() => $refs.graphTitle" :disabled="!showTitleTooltip">
{{ graphData.title }}
</gl-tooltip>
<div class="prometheus-graph-widgets js-graph-widgets flex-fill">
<slot></slot> <slot></slot>
</div> </div>
</div> </div>

View file

@ -475,7 +475,10 @@ export default {
:project-path="projectPath" :project-path="projectPath"
group-id="monitor-time-series-chart" group-id="monitor-time-series-chart"
> >
<div class="d-flex align-items-center"> <div
class="d-flex align-items-center"
:class="alertWidgetAvailable ? 'justify-content-between' : 'justify-content-end'"
>
<alert-widget <alert-widget
v-if="alertWidgetAvailable && graphData" v-if="alertWidgetAvailable && graphData"
:modal-id="`alert-modal-${index}-${graphIndex}`" :modal-id="`alert-modal-${index}-${graphIndex}`"
@ -486,7 +489,7 @@ export default {
/> />
<gl-dropdown <gl-dropdown
v-gl-tooltip v-gl-tooltip
class="mx-2" class="ml-2 mr-3"
toggle-class="btn btn-transparent border-0" toggle-class="btn btn-transparent border-0"
:right="true" :right="true"
:no-caret="true" :no-caret="true"

View file

@ -39,11 +39,14 @@
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
margin-bottom: $gl-padding-8; margin-bottom: $gl-padding-8;
}
h5 { .prometheus-graph-title {
font-size: $gl-font-size-large; font-size: $gl-font-size-large;
margin: 0; }
}
.alert-current-setting {
max-width: 240px;
} }
.prometheus-graph-cursor { .prometheus-graph-cursor {

View file

@ -2312,7 +2312,7 @@ class Project < ApplicationRecord
end end
def repository_with_same_path_already_exists? def repository_with_same_path_already_exists?
gitlab_shell.exists?(repository_storage, "#{disk_path}.git") gitlab_shell.repository_exists?(repository_storage, "#{disk_path}.git")
end end
def set_timestamps_for_create def set_timestamps_for_create

View file

@ -123,11 +123,9 @@ module Projects
mv_repository(old_path, new_path) mv_repository(old_path, new_path)
end end
# rubocop: disable CodeReuse/ActiveRecord
def repo_exists?(path) def repo_exists?(path)
gitlab_shell.exists?(project.repository_storage, path + '.git') gitlab_shell.repository_exists?(project.repository_storage, path + '.git')
end end
# rubocop: enable CodeReuse/ActiveRecord
def mv_repository(from_path, to_path) def mv_repository(from_path, to_path)
return true unless repo_exists?(from_path) return true unless repo_exists?(from_path)

View file

@ -20,16 +20,13 @@ module Projects
protected protected
# rubocop: disable CodeReuse/ActiveRecord
def has_wiki? def has_wiki?
gitlab_shell.exists?(project.repository_storage, "#{old_wiki_disk_path}.git") gitlab_shell.repository_exists?(project.repository_storage, "#{old_wiki_disk_path}.git")
end end
# rubocop: enable CodeReuse/ActiveRecord
# rubocop: disable CodeReuse/ActiveRecord
def move_repository(from_name, to_name) def move_repository(from_name, to_name)
from_exists = gitlab_shell.exists?(project.repository_storage, "#{from_name}.git") from_exists = gitlab_shell.repository_exists?(project.repository_storage, "#{from_name}.git")
to_exists = gitlab_shell.exists?(project.repository_storage, "#{to_name}.git") to_exists = gitlab_shell.repository_exists?(project.repository_storage, "#{to_name}.git")
# If we don't find the repository on either original or target we should log that as it could be an issue if the # If we don't find the repository on either original or target we should log that as it could be an issue if the
# project was not originally empty. # project was not originally empty.
@ -46,7 +43,6 @@ module Projects
gitlab_shell.mv_repository(project.repository_storage, from_name, to_name) gitlab_shell.mv_repository(project.repository_storage, from_name, to_name)
end end
# rubocop: enable CodeReuse/ActiveRecord
def rollback_folder_move def rollback_folder_move
move_repository(new_disk_path, old_disk_path) move_repository(new_disk_path, old_disk_path)

View file

@ -297,6 +297,12 @@ module Gitlab
end end
# rubocop: enable CodeReuse/ActiveRecord # rubocop: enable CodeReuse/ActiveRecord
def repository_exists?(storage, dir_name)
Gitlab::Git::Repository.new(storage, dir_name, nil, nil).exists?
rescue GRPC::Internal
false
end
def hooks_path def hooks_path
File.join(gitlab_shell_path, 'hooks') File.join(gitlab_shell_path, 'hooks')
end end

View file

@ -12641,6 +12641,9 @@ msgstr ""
msgid "Prometheus listen_address in config/gitlab.yml is not a valid URI" msgid "Prometheus listen_address in config/gitlab.yml is not a valid URI"
msgstr "" msgstr ""
msgid "PrometheusAlerts|%{count} alerts applied"
msgstr ""
msgid "PrometheusAlerts|Add alert" msgid "PrometheusAlerts|Add alert"
msgstr "" msgstr ""
@ -16017,6 +16020,9 @@ msgstr ""
msgid "The snippet is visible to any logged in user." msgid "The snippet is visible to any logged in user."
msgstr "" msgstr ""
msgid "The specified tab is invalid, please select another"
msgstr ""
msgid "The staging stage shows the time between merging the MR and deploying code to the production environment. The data will be automatically added once you deploy to production for the first time." msgid "The staging stage shows the time between merging the MR and deploying code to the production environment. The data will be automatically added once you deploy to production for the first time."
msgstr "" msgstr ""
@ -16671,9 +16677,6 @@ msgstr ""
msgid "Timeago|right now" msgid "Timeago|right now"
msgstr "" msgstr ""
msgid "Timeframe"
msgstr ""
msgid "Timeout" msgid "Timeout"
msgstr "" msgstr ""

View file

@ -153,7 +153,7 @@ describe ProfilesController, :request_store do
user.reload user.reload
expect(response.status).to eq(302) expect(response.status).to eq(302)
expect(gitlab_shell.exists?(project.repository_storage, "#{new_username}/#{project.path}.git")).to be_truthy expect(gitlab_shell.repository_exists?(project.repository_storage, "#{new_username}/#{project.path}.git")).to be_truthy
end end
end end
@ -171,7 +171,7 @@ describe ProfilesController, :request_store do
user.reload user.reload
expect(response.status).to eq(302) expect(response.status).to eq(302)
expect(gitlab_shell.exists?(project.repository_storage, "#{project.disk_path}.git")).to be_truthy expect(gitlab_shell.repository_exists?(project.repository_storage, "#{project.disk_path}.git")).to be_truthy
expect(before_disk_path).to eq(project.disk_path) expect(before_disk_path).to eq(project.disk_path)
end end
end end

View file

@ -89,7 +89,7 @@ describe Gitlab::BareRepositoryImport::Importer, :seed_helper do
repo_path = "#{project.disk_path}.git" repo_path = "#{project.disk_path}.git"
hook_path = File.join(repo_path, 'hooks') hook_path = File.join(repo_path, 'hooks')
expect(gitlab_shell.exists?(project.repository_storage, repo_path)).to be(true) expect(gitlab_shell.repository_exists?(project.repository_storage, repo_path)).to be(true)
expect(gitlab_shell.exists?(project.repository_storage, hook_path)).to be(true) expect(gitlab_shell.exists?(project.repository_storage, hook_path)).to be(true)
end end
@ -145,8 +145,8 @@ describe Gitlab::BareRepositoryImport::Importer, :seed_helper do
project = Project.find_by_full_path("#{admin.full_path}/#{project_path}") project = Project.find_by_full_path("#{admin.full_path}/#{project_path}")
expect(gitlab_shell.exists?(project.repository_storage, project.disk_path + '.git')).to be(true) expect(gitlab_shell.repository_exists?(project.repository_storage, project.disk_path + '.git')).to be(true)
expect(gitlab_shell.exists?(project.repository_storage, project.disk_path + '.wiki.git')).to be(true) expect(gitlab_shell.repository_exists?(project.repository_storage, project.disk_path + '.wiki.git')).to be(true)
end end
context 'with a repository already on disk' do context 'with a repository already on disk' do
@ -186,7 +186,7 @@ describe Gitlab::BareRepositoryImport::Importer, :seed_helper do
project = Project.find_by_full_path(project_path) project = Project.find_by_full_path(project_path)
expect(gitlab_shell.exists?(project.repository_storage, project.disk_path + '.wiki.git')).to be(true) expect(gitlab_shell.repository_exists?(project.repository_storage, project.disk_path + '.wiki.git')).to be(true)
end end
end end

View file

@ -422,6 +422,30 @@ describe Gitlab::Shell do
end end
end end
describe '#repository_exists?' do
context 'when the storage path does not exist' do
subject { described_class.new.repository_exists?(storage, "non-existing.git") }
it { is_expected.to be_falsey }
end
context 'when the repository does not exist' do
let(:project) { create(:project, :repository, :legacy_storage) }
subject { described_class.new.repository_exists?(storage, "#{project.repository.disk_path}-some-other-repo.git") }
it { is_expected.to be_falsey }
end
context 'when the repository exists' do
let(:project) { create(:project, :repository, :legacy_storage) }
subject { described_class.new.repository_exists?(storage, "#{project.repository.disk_path}.git") }
it { is_expected.to be_truthy }
end
end
describe '#remove' do describe '#remove' do
it 'removes the namespace' do it 'removes the namespace' do
subject.add_namespace(storage, "mepmep") subject.add_namespace(storage, "mepmep")

View file

@ -250,7 +250,7 @@ describe Namespace do
it "moves dir if path changed" do it "moves dir if path changed" do
namespace.update(path: namespace.full_path + '_new') namespace.update(path: namespace.full_path + '_new')
expect(gitlab_shell.exists?(project.repository_storage, "#{namespace.path}/#{project.path}.git")).to be_truthy expect(gitlab_shell.repository_exists?(project.repository_storage, "#{namespace.path}/#{project.path}.git")).to be_truthy
end end
context 'when #write_projects_repository_config raises an error' do context 'when #write_projects_repository_config raises an error' do
@ -358,7 +358,7 @@ describe Namespace do
namespace.update(path: namespace.full_path + '_new') namespace.update(path: namespace.full_path + '_new')
expect(before_disk_path).to eq(project.disk_path) expect(before_disk_path).to eq(project.disk_path)
expect(gitlab_shell.exists?(project.repository_storage, "#{project.disk_path}.git")).to be_truthy expect(gitlab_shell.repository_exists?(project.repository_storage, "#{project.disk_path}.git")).to be_truthy
end end
end end

View file

@ -4192,13 +4192,24 @@ describe Project do
end end
describe '#check_repository_path_availability' do describe '#check_repository_path_availability' do
let(:project) { build(:project) } let(:project) { build(:project, :repository, :legacy_storage) }
subject { project.check_repository_path_availability }
it 'skips gitlab-shell exists?' do context 'when the repository already exists' do
project.skip_disk_validation = true let(:project) { create(:project, :repository, :legacy_storage) }
expect(project.gitlab_shell).not_to receive(:exists?) it { is_expected.to be_falsey }
expect(project.check_repository_path_availability).to be_truthy end
context 'when the repository does not exist' do
it { is_expected.to be_truthy }
it 'skips gitlab-shell exists?' do
project.skip_disk_validation = true
expect(project.gitlab_shell).not_to receive(:repository_exists?)
is_expected.to be_truthy
end
end end
end end

View file

@ -119,7 +119,7 @@ describe Groups::DestroyService do
let!(:project) { create(:project, :legacy_storage, :empty_repo, namespace: group) } let!(:project) { create(:project, :legacy_storage, :empty_repo, namespace: group) }
it 'removes repository' do it 'removes repository' do
expect(gitlab_shell.exists?(project.repository_storage, "#{project.disk_path}.git")).to be_falsey expect(gitlab_shell.repository_exists?(project.repository_storage, "#{project.disk_path}.git")).to be_falsey
end end
end end
@ -127,7 +127,7 @@ describe Groups::DestroyService do
let!(:project) { create(:project, :empty_repo, namespace: group) } let!(:project) { create(:project, :empty_repo, namespace: group) }
it 'removes repository' do it 'removes repository' do
expect(gitlab_shell.exists?(project.repository_storage, "#{project.disk_path}.git")).to be_falsey expect(gitlab_shell.repository_exists?(project.repository_storage, "#{project.disk_path}.git")).to be_falsey
end end
end end
end end

View file

@ -24,8 +24,8 @@ describe Projects::DestroyService do
it 'deletes the project' do it 'deletes the project' do
expect(Project.unscoped.all).not_to include(project) expect(Project.unscoped.all).not_to include(project)
expect(project.gitlab_shell.exists?(project.repository_storage, path + '.git')).to be_falsey expect(project.gitlab_shell.repository_exists?(project.repository_storage, path + '.git')).to be_falsey
expect(project.gitlab_shell.exists?(project.repository_storage, remove_path + '.git')).to be_falsey expect(project.gitlab_shell.repository_exists?(project.repository_storage, remove_path + '.git')).to be_falsey
end end
end end

View file

@ -48,8 +48,8 @@ describe Projects::HashedStorage::MigrateRepositoryService do
it 'renames project and wiki repositories' do it 'renames project and wiki repositories' do
service.execute service.execute
expect(gitlab_shell.exists?(project.repository_storage, "#{new_disk_path}.git")).to be_truthy expect(gitlab_shell.repository_exists?(project.repository_storage, "#{new_disk_path}.git")).to be_truthy
expect(gitlab_shell.exists?(project.repository_storage, "#{new_disk_path}.wiki.git")).to be_truthy expect(gitlab_shell.repository_exists?(project.repository_storage, "#{new_disk_path}.wiki.git")).to be_truthy
end end
it 'updates project to be hashed and not read-only' do it 'updates project to be hashed and not read-only' do
@ -84,8 +84,8 @@ describe Projects::HashedStorage::MigrateRepositoryService do
service.execute service.execute
expect(gitlab_shell.exists?(project.repository_storage, "#{new_disk_path}.git")).to be_falsey expect(gitlab_shell.repository_exists?(project.repository_storage, "#{new_disk_path}.git")).to be_falsey
expect(gitlab_shell.exists?(project.repository_storage, "#{new_disk_path}.wiki.git")).to be_falsey expect(gitlab_shell.repository_exists?(project.repository_storage, "#{new_disk_path}.wiki.git")).to be_falsey
expect(project.repository_read_only?).to be_falsey expect(project.repository_read_only?).to be_falsey
end end

View file

@ -48,8 +48,8 @@ describe Projects::HashedStorage::RollbackRepositoryService, :clean_gitlab_redis
it 'renames project and wiki repositories' do it 'renames project and wiki repositories' do
service.execute service.execute
expect(gitlab_shell.exists?(project.repository_storage, "#{new_disk_path}.git")).to be_truthy expect(gitlab_shell.repository_exists?(project.repository_storage, "#{new_disk_path}.git")).to be_truthy
expect(gitlab_shell.exists?(project.repository_storage, "#{new_disk_path}.wiki.git")).to be_truthy expect(gitlab_shell.repository_exists?(project.repository_storage, "#{new_disk_path}.wiki.git")).to be_truthy
end end
it 'updates project to be legacy and not read-only' do it 'updates project to be legacy and not read-only' do
@ -84,8 +84,8 @@ describe Projects::HashedStorage::RollbackRepositoryService, :clean_gitlab_redis
service.execute service.execute
expect(gitlab_shell.exists?(project.repository_storage, "#{new_disk_path}.git")).to be_falsey expect(gitlab_shell.repository_exists?(project.repository_storage, "#{new_disk_path}.git")).to be_falsey
expect(gitlab_shell.exists?(project.repository_storage, "#{new_disk_path}.wiki.git")).to be_falsey expect(gitlab_shell.repository_exists?(project.repository_storage, "#{new_disk_path}.wiki.git")).to be_falsey
expect(project.repository_read_only?).to be_falsey expect(project.repository_read_only?).to be_falsey
end end

View file

@ -103,7 +103,7 @@ describe Projects::TransferService do
it 'rolls back repo location' do it 'rolls back repo location' do
attempt_project_transfer attempt_project_transfer
expect(gitlab_shell.exists?(project.repository_storage, "#{project.disk_path}.git")).to be(true) expect(gitlab_shell.repository_exists?(project.repository_storage, "#{project.disk_path}.git")).to be(true)
expect(original_path).to eq current_path expect(original_path).to eq current_path
end end

View file

@ -183,7 +183,7 @@ describe Users::DestroyService do
let!(:project) { create(:project, :empty_repo, :legacy_storage, namespace: user.namespace) } let!(:project) { create(:project, :empty_repo, :legacy_storage, namespace: user.namespace) }
it 'removes repository' do it 'removes repository' do
expect(gitlab_shell.exists?(project.repository_storage, "#{project.disk_path}.git")).to be_falsey expect(gitlab_shell.repository_exists?(project.repository_storage, "#{project.disk_path}.git")).to be_falsey
end end
end end
@ -191,7 +191,7 @@ describe Users::DestroyService do
let!(:project) { create(:project, :empty_repo, namespace: user.namespace) } let!(:project) { create(:project, :empty_repo, namespace: user.namespace) }
it 'removes repository' do it 'removes repository' do
expect(gitlab_shell.exists?(project.repository_storage, "#{project.disk_path}.git")).to be_falsey expect(gitlab_shell.repository_exists?(project.repository_storage, "#{project.disk_path}.git")).to be_falsey
end end
end end
end end