summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2018-03-08 00:21:49 +0000
committerDouwe Maan <douwe@gitlab.com>2018-03-08 00:21:49 +0000
commitbeb1f43816b465b9cff05a91634403a637b4e097 (patch)
tree47c8813f17db19a18e4924a547c7545bf6207c7c
parent1558bd1263ffa733f70d9b1268d2010bc0f704b8 (diff)
parent12e68d621512ea65f110081fc2d8ed1f385e6cfa (diff)
downloadgitlab-ce-beb1f43816b465b9cff05a91634403a637b4e097.tar.gz
Merge branch 'bvl-port-ee-improvements-from-maintainer-push' into 'master'
Port changes from EE: https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/4885 (Maintainer push to fork) See merge request gitlab-org/gitlab-ce!17629
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/mr_widget_maintainer_edit.vue3
-rw-r--r--app/assets/stylesheets/pages/merge_requests.scss3
-rw-r--r--doc/user/project/merge_requests/img/allow_maintainer_push.pngbin502758 -> 99079 bytes
-rw-r--r--doc/user/project/merge_requests/maintainer_access.md2
-rw-r--r--lib/gitlab/user_access.rb9
-rw-r--r--spec/javascripts/vue_mr_widget/components/mr_widget_maintainer_edit_spec.js33
6 files changed, 32 insertions, 18 deletions
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_maintainer_edit.vue b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_maintainer_edit.vue
index 7a69cce695e..f0298f732ea 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_maintainer_edit.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_maintainer_edit.vue
@@ -10,8 +10,9 @@
},
};
</script>
+
<template>
- <section class="mr-info-list mr-maintainer-edit">
+ <section class="mr-info-list mr-links">
<p v-if="maintainerEditAllowed">
{{ s__("mrWidget|Allows edits from maintainers") }}
</p>
diff --git a/app/assets/stylesheets/pages/merge_requests.scss b/app/assets/stylesheets/pages/merge_requests.scss
index f8708a2c0a3..f887a11004f 100644
--- a/app/assets/stylesheets/pages/merge_requests.scss
+++ b/app/assets/stylesheets/pages/merge_requests.scss
@@ -453,8 +453,7 @@
}
}
-.mr-links,
-.mr-maintainer-edit {
+.mr-links {
padding-left: $status-icon-size + $status-icon-margin;
}
diff --git a/doc/user/project/merge_requests/img/allow_maintainer_push.png b/doc/user/project/merge_requests/img/allow_maintainer_push.png
index e73cc1ab5a5..1631527071b 100644
--- a/doc/user/project/merge_requests/img/allow_maintainer_push.png
+++ b/doc/user/project/merge_requests/img/allow_maintainer_push.png
Binary files differ
diff --git a/doc/user/project/merge_requests/maintainer_access.md b/doc/user/project/merge_requests/maintainer_access.md
index 1ade5db1587..7feccc28f6b 100644
--- a/doc/user/project/merge_requests/maintainer_access.md
+++ b/doc/user/project/merge_requests/maintainer_access.md
@@ -1,4 +1,4 @@
-# Allow maintainer pushes for merge requests accross forks
+# Allow maintainer pushes for merge requests across forks
This feature is available for merge requests across forked projects that are
publicly accessible. It makes it easier for maintainers of projects to collaborate
diff --git a/lib/gitlab/user_access.rb b/lib/gitlab/user_access.rb
index fd68b9f2b48..24393f96d96 100644
--- a/lib/gitlab/user_access.rb
+++ b/lib/gitlab/user_access.rb
@@ -63,15 +63,12 @@ module Gitlab
request_cache def can_push_to_branch?(ref)
return false unless can_access_git?
+ return false unless user.can?(:push_code, project) || project.branch_allows_maintainer_push?(user, ref)
if protected?(ProtectedBranch, project, ref)
- return true if project.user_can_push_to_empty_repo?(user)
-
- protected_branch_accessible_to?(ref, action: :push)
- elsif user.can?(:push_code, project)
- true
+ project.user_can_push_to_empty_repo?(user) || protected_branch_accessible_to?(ref, action: :push)
else
- project.branch_allows_maintainer_push?(user, ref)
+ true
end
end
diff --git a/spec/javascripts/vue_mr_widget/components/mr_widget_maintainer_edit_spec.js b/spec/javascripts/vue_mr_widget/components/mr_widget_maintainer_edit_spec.js
index 65b3f721281..cee22d5342a 100644
--- a/spec/javascripts/vue_mr_widget/components/mr_widget_maintainer_edit_spec.js
+++ b/spec/javascripts/vue_mr_widget/components/mr_widget_maintainer_edit_spec.js
@@ -2,22 +2,39 @@ import Vue from 'vue';
import maintainerEditComponent from '~/vue_merge_request_widget/components/mr_widget_maintainer_edit.vue';
import mountComponent from 'spec/helpers/vue_mount_component_helper';
-describe('MRWidgetAuthor', () => {
+describe('RWidgetMaintainerEdit', () => {
+ let Component;
let vm;
beforeEach(() => {
- const Component = Vue.extend(maintainerEditComponent);
-
- vm = mountComponent(Component, {
- maintainerEditAllowed: true,
- });
+ Component = Vue.extend(maintainerEditComponent);
});
afterEach(() => {
vm.$destroy();
});
- it('renders the message when maintainers are allowed to edit', () => {
- expect(vm.$el.textContent.trim()).toEqual('Allows edits from maintainers');
+ describe('when a maintainer is allowed to edit', () => {
+ beforeEach(() => {
+ vm = mountComponent(Component, {
+ maintainerEditAllowed: true,
+ });
+ });
+
+ it('it renders the message', () => {
+ expect(vm.$el.textContent.trim()).toEqual('Allows edits from maintainers');
+ });
+ });
+
+ describe('when a maintainer is not allowed to edit', () => {
+ beforeEach(() => {
+ vm = mountComponent(Component, {
+ maintainerEditAllowed: false,
+ });
+ });
+
+ it('hides the message', () => {
+ expect(vm.$el.textContent.trim()).toEqual('');
+ });
});
});