From dbf62a7d1ecca2ae7dbb8c70220cb1ff96431b9c Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 8 Jan 2019 16:08:22 +0000 Subject: [PATCH 1/4] Merge branch '50224-rails5-duplicate-key-value-violates-unique-constraint-index_gpg_signatures_on_commit_sha' into 'master' Resolve "[Rails5] duplicate key value violates unique constraint "index_gpg_signatures_on_commit_sha"" Closes #50224 See merge request gitlab-org/gitlab-ce!24226 (cherry picked from commit abe4e325a20435b6cb1ce6d6ba1a8dcd0a82ea14) df5b7a66 Wait for requests in LFS files spec --- spec/features/projects/files/user_browses_lfs_files_spec.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/features/projects/files/user_browses_lfs_files_spec.rb b/spec/features/projects/files/user_browses_lfs_files_spec.rb index c559a301ca1..d56476adb05 100644 --- a/spec/features/projects/files/user_browses_lfs_files_spec.rb +++ b/spec/features/projects/files/user_browses_lfs_files_spec.rb @@ -12,6 +12,7 @@ describe 'Projects > Files > User browses LFS files' do before do allow_any_instance_of(Project).to receive(:lfs_enabled?).and_return(false) visit project_tree_path(project, 'lfs') + wait_for_requests end it 'is possible to see raw content of LFS pointer' do @@ -26,10 +27,11 @@ describe 'Projects > Files > User browses LFS files' do end end - context 'when LFS is enabled' do + context 'when LFS is enabled', :js do before do allow_any_instance_of(Project).to receive(:lfs_enabled?).and_return(true) visit project_tree_path(project, 'lfs') + wait_for_requests end it 'shows an LFS object' do -- GitLab From 9b50c14a327f3055e9718635fa531d4ba3f278a5 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Tue, 8 Jan 2019 14:17:16 +0000 Subject: [PATCH 2/4] Merge branch '56076-releases-margin' into 'master' Fixes missing margin in releases block Closes #56076 See merge request gitlab-org/gitlab-ce!24229 (cherry picked from commit fa5c4ef2641fe7b55dd63bbe0d99e58fec9944e3) f03313e9 Fixes missing margin in releases block --- app/assets/javascripts/releases/components/release_block.vue | 2 +- changelogs/unreleased/56076-releases-margin.yml | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/56076-releases-margin.yml diff --git a/app/assets/javascripts/releases/components/release_block.vue b/app/assets/javascripts/releases/components/release_block.vue index 4295fef8f0a..1d47133e898 100644 --- a/app/assets/javascripts/releases/components/release_block.vue +++ b/app/assets/javascripts/releases/components/release_block.vue @@ -87,7 +87,7 @@ export default {
{{ __('Assets') }} diff --git a/changelogs/unreleased/56076-releases-margin.yml b/changelogs/unreleased/56076-releases-margin.yml new file mode 100644 index 00000000000..a3cae1e035f --- /dev/null +++ b/changelogs/unreleased/56076-releases-margin.yml @@ -0,0 +1,5 @@ +--- +title: Fixes missing margin in releases block +merge_request: +author: +type: fixed -- GitLab From baf1d390d6e99fa98cb9bdd6b6dd419e565f0c3f Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 8 Jan 2019 21:50:36 +0000 Subject: [PATCH 3/4] Merge branch '56093-11-7-rc2-prevents-people-from-merging-merge-requests-even-when-they-should-be-able-to' into 'master' Fix MR sidebar to correctly warning if assignee can't merge Closes #56093 See merge request gitlab-org/gitlab-ce!24243 (cherry picked from commit 71026ffd7e71da726a9b740d42093926f8477c3e) 76895008 Fix MR sidebar to correctly warning if assignee can't merge 469678b0 Remove CHANGELOG entry --- .../issuable/_sidebar_assignees.html.haml | 2 +- .../merge_requests/show.html.haml_spec.rb | 39 ++++++++++++++++--- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/app/views/shared/issuable/_sidebar_assignees.html.haml b/app/views/shared/issuable/_sidebar_assignees.html.haml index c5cce1823f0..1a59055f652 100644 --- a/app/views/shared/issuable/_sidebar_assignees.html.haml +++ b/app/views/shared/issuable/_sidebar_assignees.html.haml @@ -25,7 +25,7 @@ .value.hide-collapsed - if issuable_sidebar[:assignee] = link_to_member(@project, assignee, size: 32, extra_class: 'bold') do - - if issuable_sidebar[:assignee][:can_merge] + - unless issuable_sidebar[:assignee][:can_merge] %span.float-right.cannot-be-merged{ data: { toggle: 'tooltip', placement: 'left' }, title: _('Not allowed to merge') } = icon('exclamation-triangle', 'aria-hidden': 'true') %span.username diff --git a/spec/views/projects/merge_requests/show.html.haml_spec.rb b/spec/views/projects/merge_requests/show.html.haml_spec.rb index b0042be339c..d9bda1a3414 100644 --- a/spec/views/projects/merge_requests/show.html.haml_spec.rb +++ b/spec/views/projects/merge_requests/show.html.haml_spec.rb @@ -32,11 +32,7 @@ describe 'projects/merge_requests/show.html.haml' do assign(:noteable, closed_merge_request) assign(:notes, []) assign(:pipelines, Ci::Pipeline.none) - assign( - :issuable_sidebar, - MergeRequestSerializer.new(current_user: user, project: project) - .represent(closed_merge_request, serializer: 'sidebar') - ) + assign(:issuable_sidebar, serialize_issuable_sidebar(user, project, closed_merge_request)) preload_view_requirements @@ -45,6 +41,33 @@ describe 'projects/merge_requests/show.html.haml' do current_application_settings: Gitlab::CurrentSettings.current_application_settings) end + describe 'merge request assignee sidebar' do + context 'when assignee is allowed to merge' do + it 'does not show a warning icon' do + closed_merge_request.update(assignee_id: user.id) + project.add_maintainer(user) + assign(:issuable_sidebar, serialize_issuable_sidebar(user, project, closed_merge_request)) + + render + + expect(rendered).not_to have_css('.cannot-be-merged') + end + end + + context 'when assignee is not allowed to merge' do + it 'shows a warning icon' do + reporter = create(:user) + project.add_reporter(reporter) + closed_merge_request.update(assignee_id: reporter.id) + assign(:issuable_sidebar, serialize_issuable_sidebar(user, project, closed_merge_request)) + + render + + expect(rendered).to have_css('.cannot-be-merged') + end + end + end + context 'when the merge request is closed' do it 'shows the "Reopen" button' do render @@ -80,4 +103,10 @@ describe 'projects/merge_requests/show.html.haml' do expect(rendered).to have_css('a', visible: false, text: 'Close') end end + + def serialize_issuable_sidebar(user, project, merge_request) + MergeRequestSerializer + .new(current_user: user, project: project) + .represent(closed_merge_request, serializer: 'sidebar') + end end -- GitLab From 0f4551a97092ee780793b64b56a3d29ba8329632 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 8 Jan 2019 22:16:21 +0000 Subject: [PATCH 4/4] Merge branch 'sh-revert-mr-23135' into 'master' Revert "Merge branch '3062-improve-project-cache' into 'master'" Closes #56103 See merge request gitlab-org/gitlab-ce!24244 (cherry picked from commit a0aca3ac3a4ef56429104c27cd03ce00dcaeafce) e884795e Revert "Merge branch '3062-improve-project-cache' into 'master'" --- app/models/repository.rb | 12 ++---------- lib/gitlab/repository_cache.rb | 4 ++-- spec/lib/gitlab/repository_cache_spec.rb | 22 +++++++++++----------- spec/models/repository_spec.rb | 18 ------------------ 4 files changed, 15 insertions(+), 41 deletions(-) diff --git a/app/models/repository.rb b/app/models/repository.rb index b19ae2e0e6a..b47238b52f1 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -1072,19 +1072,11 @@ class Repository end def cache - @cache ||= if is_wiki - Gitlab::RepositoryCache.new(self, extra_namespace: 'wiki') - else - Gitlab::RepositoryCache.new(self) - end + @cache ||= Gitlab::RepositoryCache.new(self) end def request_store_cache - @request_store_cache ||= if is_wiki - Gitlab::RepositoryCache.new(self, extra_namespace: 'wiki', backend: Gitlab::SafeRequestStore) - else - Gitlab::RepositoryCache.new(self, backend: Gitlab::SafeRequestStore) - end + @request_store_cache ||= Gitlab::RepositoryCache.new(self, backend: Gitlab::SafeRequestStore) end def tags_sorted_by_committed_date diff --git a/lib/gitlab/repository_cache.rb b/lib/gitlab/repository_cache.rb index 6b0808f5304..56007574b1b 100644 --- a/lib/gitlab/repository_cache.rb +++ b/lib/gitlab/repository_cache.rb @@ -7,13 +7,13 @@ module Gitlab def initialize(repository, extra_namespace: nil, backend: Rails.cache) @repository = repository - @namespace = "project:#{repository.project.id}" + @namespace = "#{repository.full_path}:#{repository.project.id}" @namespace = "#{@namespace}:#{extra_namespace}" if extra_namespace @backend = backend end def cache_key(type) - "#{namespace}:#{type}" + "#{type}:#{namespace}" end def expire(key) diff --git a/spec/lib/gitlab/repository_cache_spec.rb b/spec/lib/gitlab/repository_cache_spec.rb index 1b9a8b4ab0d..741ee12633f 100644 --- a/spec/lib/gitlab/repository_cache_spec.rb +++ b/spec/lib/gitlab/repository_cache_spec.rb @@ -4,14 +4,14 @@ describe Gitlab::RepositoryCache do let(:backend) { double('backend').as_null_object } let(:project) { create(:project) } let(:repository) { project.repository } - let(:namespace) { "project:#{project.id}" } + let(:namespace) { "#{repository.full_path}:#{project.id}" } let(:cache) { described_class.new(repository, backend: backend) } describe '#cache_key' do subject { cache.cache_key(:foo) } it 'includes the namespace' do - expect(subject).to eq "#{namespace}:foo" + expect(subject).to eq "foo:#{namespace}" end context 'with a given namespace' do @@ -22,7 +22,7 @@ describe Gitlab::RepositoryCache do end it 'includes the full namespace' do - expect(subject).to eq "#{namespace}:#{extra_namespace}:foo" + expect(subject).to eq "foo:#{namespace}:#{extra_namespace}" end end end @@ -30,21 +30,21 @@ describe Gitlab::RepositoryCache do describe '#expire' do it 'expires the given key from the cache' do cache.expire(:foo) - expect(backend).to have_received(:delete).with("#{namespace}:foo") + expect(backend).to have_received(:delete).with("foo:#{namespace}") end end describe '#fetch' do it 'fetches the given key from the cache' do cache.fetch(:bar) - expect(backend).to have_received(:fetch).with("#{namespace}:bar") + expect(backend).to have_received(:fetch).with("bar:#{namespace}") end it 'accepts a block' do p = -> {} cache.fetch(:baz, &p) - expect(backend).to have_received(:fetch).with("#{namespace}:baz", &p) + expect(backend).to have_received(:fetch).with("baz:#{namespace}", &p) end end @@ -67,7 +67,7 @@ describe Gitlab::RepositoryCache do end it 'caches the value' do - expect(backend).to receive(:write).with("#{namespace}:#{key}", true) + expect(backend).to receive(:write).with("#{key}:#{namespace}", true) cache.fetch_without_caching_false(key) { true } end @@ -83,7 +83,7 @@ describe Gitlab::RepositoryCache do end it 'does not cache the value' do - expect(backend).not_to receive(:write).with("#{namespace}:#{key}", true) + expect(backend).not_to receive(:write).with("#{key}:#{namespace}", true) cache.fetch_without_caching_false(key, &p) end @@ -92,7 +92,7 @@ describe Gitlab::RepositoryCache do context 'when the cached value is truthy' do before do - backend.write("#{namespace}:#{key}", true) + backend.write("#{key}:#{namespace}", true) end it 'returns the cached value' do @@ -116,7 +116,7 @@ describe Gitlab::RepositoryCache do context 'when the cached value is falsey' do before do - backend.write("#{namespace}:#{key}", false) + backend.write("#{key}:#{namespace}", false) end it 'returns the result of the block' do @@ -126,7 +126,7 @@ describe Gitlab::RepositoryCache do end it 'writes the truthy value to the cache' do - expect(backend).to receive(:write).with("#{namespace}:#{key}", 'block result') + expect(backend).to receive(:write).with("#{key}:#{namespace}", 'block result') cache.fetch_without_caching_false(key) { 'block result' } end diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index 2063b4bbe75..ac5874fd0f7 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -2400,22 +2400,4 @@ describe Repository do repository.merge_base('master', 'fix') end end - - describe '#cache' do - subject(:cache) { repository.send(:cache) } - - it 'returns a RepositoryCache' do - expect(subject).to be_kind_of Gitlab::RepositoryCache - end - - it 'when is_wiki it includes wiki as part of key' do - allow(repository).to receive(:is_wiki) { true } - - expect(subject.namespace).to include('wiki') - end - - it 'when is_wiki is false extra_namespace is nil' do - expect(subject.namespace).not_to include('wiki') - end - end end -- GitLab