Commit df6aada2 authored by Rémy Coutable's avatar Rémy Coutable

Resolve conflicts

Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parent 9a9d7ad9
......@@ -47,12 +47,9 @@ import BlobLinePermalinkUpdater from './blob/blob_line_permalink_updater';
import BlobForkSuggestion from './blob/blob_fork_suggestion';
import UserCallout from './user_callout';
import { ProtectedTagCreate, ProtectedTagEditList } from './protected_tags';
<<<<<<< HEAD
import GeoNodes from './geo_nodes';
import ServiceDeskRoot from './projects/settings_service_desk/service_desk_root';
=======
>>>>>>> ce/master
const ShortcutsBlob = require('./shortcuts_blob');
......@@ -356,10 +353,7 @@ const ShortcutsBlob = require('./shortcuts_blob');
// Initialize Protected Branch Settings
new gl.ProtectedBranchCreate();
new gl.ProtectedBranchEditList();
<<<<<<< HEAD
new UsersSelect();
=======
>>>>>>> ce/master
// Initialize Protected Tag Settings
new ProtectedTagCreate();
new ProtectedTagEditList();
......
......@@ -169,14 +169,11 @@ export default Vue.component('environment-folder-view', {
:environments="state.environments"
:can-create-deployment="canCreateDeploymentParsed"
:can-read-environment="canReadEnvironmentParsed"
<<<<<<< HEAD
:play-icon-svg="playIconSvg"
:terminal-icon-svg="terminalIconSvg"
:commit-icon-svg="commitIconSvg"
:toggleDeployBoard="toggleDeployBoard"
:store="store"
=======
>>>>>>> ce/master
:service="service"/>
<table-pagination v-if="state.paginationInformation && state.paginationInformation.totalPages > 1"
......
......@@ -16,13 +16,10 @@ import eventHub from './event_hub';
this.tokensContainer = this.container.querySelector('.tokens-container');
this.filteredSearchTokenKeys = gl.FilteredSearchTokenKeys;
<<<<<<< HEAD
if (page === 'issues' || page === 'boards') {
this.filteredSearchTokenKeys = gl.FilteredSearchTokenKeysWithWeights;
}
=======
>>>>>>> ce/master
this.recentSearchesStore = new RecentSearchesStore();
let recentSearchesKey = 'issue-recent-searches';
if (page === 'merge_requests') {
......
......@@ -790,13 +790,10 @@ a.allowed-to-push {
}
}
<<<<<<< HEAD
.disabled-item {
@extend .btn.disabled;
}
=======
>>>>>>> ce/master
.protected-tags-list {
.dropdown-menu-toggle {
width: 100%;
......
......@@ -3,7 +3,6 @@ class Projects::ProtectedBranchesController < Projects::ProtectedRefsController
def project_refs
@project.repository.branches
<<<<<<< HEAD
end
def create_service_class
......@@ -20,20 +19,6 @@ class Projects::ProtectedBranchesController < Projects::ProtectedRefsController
def access_levels
[:merge_access_levels, :push_access_levels]
=======
end
def create_service_class
::ProtectedBranches::CreateService
end
def update_service_class
::ProtectedBranches::UpdateService
end
def load_protected_ref
@protected_ref = @project.protected_branches.find(params[:id])
>>>>>>> ce/master
end
def protected_ref_params
......
......@@ -30,11 +30,7 @@ class Projects::ProtectedRefsController < Projects::ApplicationController
@protected_ref = update_service_class.new(@project, current_user, protected_ref_params).execute(@protected_ref)
if @protected_ref.valid?
<<<<<<< HEAD
render json: @protected_ref, status: :ok, include: access_levels
=======
render json: @protected_ref, status: :ok
>>>>>>> ce/master
else
render json: @protected_ref.errors, status: :unprocessable_entity
end
......
......@@ -17,13 +17,10 @@ class Projects::ProtectedTagsController < Projects::ProtectedRefsController
@protected_ref = @project.protected_tags.find(params[:id])
end
<<<<<<< HEAD
def access_levels
[:create_access_levels]
end
=======
>>>>>>> ce/master
def protected_ref_params
params.require(:protected_tag).permit(:name, create_access_levels_attributes: [:access_level, :id])
end
......
......@@ -8,17 +8,13 @@ module Projects
@deploy_keys = DeployKeysPresenter.new(@project, current_user: current_user)
define_protected_refs
<<<<<<< HEAD
project.create_push_rule unless project.push_rule
@push_rule = project.push_rule
=======
>>>>>>> ce/master
end
private
<<<<<<< HEAD
def remote_mirror
@remote_mirror = @project.remote_mirrors.first_or_initialize
end
......@@ -35,18 +31,6 @@ module Projects
{
selected_merge_access_levels: @protected_branch.merge_access_levels.map { |access_level| access_level.user_id || access_level.access_level },
selected_push_access_levels: @protected_branch.push_access_levels.map { |access_level| access_level.user_id || access_level.access_level },
=======
def define_protected_refs
@protected_branches = @project.protected_branches.order(:name).page(params[:page])
@protected_tags = @project.protected_tags.order(:name).page(params[:page])
@protected_branch = @project.protected_branches.new
@protected_tag = @project.protected_tags.new
load_gon_index
end
def access_levels_options
{
>>>>>>> ce/master
create_access_levels: levels_for_dropdown(ProtectedTag::CreateAccessLevel),
push_access_levels: levels_for_dropdown(ProtectedBranch::PushAccessLevel),
merge_access_levels: levels_for_dropdown(ProtectedBranch::MergeAccessLevel)
......@@ -72,10 +56,7 @@ module Projects
gon.push(protectable_tags_for_dropdown)
gon.push(protectable_branches_for_dropdown)
gon.push(access_levels_options)
<<<<<<< HEAD
gon.push(current_project_id: @project.id) if @project
=======
>>>>>>> ce/master
end
end
end
......
......@@ -33,7 +33,6 @@ module BranchesHelper
def protected_branch?(project, branch)
ProtectedBranch.protected?(project, branch.name)
end
<<<<<<< HEAD
def access_levels_data(access_levels)
access_levels.map do |level|
......@@ -53,6 +52,4 @@ module BranchesHelper
end
end
end
=======
>>>>>>> ce/master
end
......@@ -3,10 +3,7 @@ module ProtectedBranchAccess
included do
include ProtectedRefAccess
<<<<<<< HEAD
include EE::ProtectedBranchAccess
=======
>>>>>>> ce/master
belongs_to :protected_branch
......
......@@ -36,12 +36,10 @@ class Group < Namespace
validates :avatar, file_size: { maximum: 200.kilobytes.to_i }
<<<<<<< HEAD
validates :two_factor_grace_period, presence: true, numericality: { greater_than_or_equal_to: 0 }
validates :repository_size_limit,
numericality: { only_integer: true, greater_than_or_equal_to: 0, allow_nil: true }
=======
validates :two_factor_grace_period, presence: true, numericality: { greater_than_or_equal_to: 0 }
>>>>>>> ce/master
mount_uploader :avatar, AvatarUploader
has_many :uploads, as: :model, dependent: :destroy
......
......@@ -10,15 +10,13 @@ class GroupMember < Member
validates :source_type, format: { with: /\ANamespace\z/ }
default_scope { where(source_type: SOURCE_TYPE) }
<<<<<<< HEAD
after_create :update_two_factor_requirement, unless: :invite?
after_destroy :update_two_factor_requirement, unless: :invite?
scope :with_ldap_dn, -> { joins(user: :identities).where("identities.provider LIKE ?", 'ldap%') }
scope :with_identity_provider, ->(provider) do
joins(user: :identities).where(identities: { provider: provider })
end
=======
after_create :update_two_factor_requirement, unless: :invite?
after_destroy :update_two_factor_requirement, unless: :invite?
>>>>>>> ce/master
def self.access_level_roles
Gitlab::Access.options_with_owner
......
......@@ -987,14 +987,11 @@ class Project < ActiveRecord::Base
Gitlab::UrlSanitizer.new("#{web_url}.git", credentials: credentials).full_url
end
<<<<<<< HEAD
# No need to have a Kerberos Web url. Kerberos URL will be used only to clone
def kerberos_url_to_repo
"#{Gitlab.config.build_gitlab_kerberos_url + Gitlab::Application.routes.url_helpers.namespace_project_path(self.namespace, self)}.git"
end
=======
>>>>>>> ce/master
def user_can_push_to_empty_repo?(user)
!ProtectedBranch.default_branch_protected? || team.max_member_access(user.id) > Gitlab::Access::DEVELOPER
end
......
......@@ -7,14 +7,9 @@ module ChatMessage
attr_reader :title
def initialize(params)
<<<<<<< HEAD
@user_name = params[:user][:username]
@project_name = params[:project_name]
@project_url = params[:project_url]
@action = params[:object_attributes][:action]
=======
super
>>>>>>> ce/master
@action = params[:object_attributes][:action]
obj_attr = params[:object_attributes]
obj_attr = HashWithIndifferentAccess.new(obj_attr)
......
......@@ -11,7 +11,6 @@ class ProtectedBranch < ActiveRecord::Base
accepts_nested_attributes_for :push_access_levels, allow_destroy: true
accepts_nested_attributes_for :merge_access_levels, allow_destroy: true
<<<<<<< HEAD
# Returns all merge access levels (for protected branches in scope) that grant merge
# access to the given user.
scope :merge_access_by_user, -> (user) { MergeAccessLevel.joins(:protected_branch).where(protected_branch_id: self.ids).merge(MergeAccessLevel.by_user(user)) }
......@@ -46,8 +45,6 @@ class ProtectedBranch < ActiveRecord::Base
end
end
=======
>>>>>>> ce/master
# Check if branch name is marked as protected in the system
def self.protected?(project, ref_name)
return true if project.empty_repo? && default_branch_protected?
......
......@@ -90,15 +90,7 @@ class User < ActiveRecord::Base
has_many :events, dependent: :destroy, foreign_key: :author_id
has_many :subscriptions, dependent: :destroy
has_many :recent_events, -> { order "id DESC" }, foreign_key: :author_id, class_name: "Event"
<<<<<<< HEAD
has_many :assigned_issues, dependent: :destroy, foreign_key: :assignee_id, class_name: "Issue"
has_many :assigned_merge_requests, dependent: :destroy, foreign_key: :assignee_id, class_name: "MergeRequest"
has_many :oauth_applications, class_name: 'Doorkeeper::Application', as: :owner, dependent: :destroy
has_many :approvals, dependent: :destroy
has_many :approvers, dependent: :destroy
=======
has_many :oauth_applications, class_name: 'Doorkeeper::Application', as: :owner, dependent: :destroy
>>>>>>> ce/master
has_one :abuse_report, dependent: :destroy, foreign_key: :user_id
has_many :reported_abuse_reports, dependent: :destroy, foreign_key: :reporter_id, class_name: "AbuseReport"
has_many :spam_logs, dependent: :destroy
......@@ -109,6 +101,9 @@ class User < ActiveRecord::Base
has_many :award_emoji, dependent: :destroy
has_many :path_locks, dependent: :destroy
has_many :approvals, dependent: :destroy
has_many :approvers, dependent: :destroy
# Protected Branch Access
has_many :protected_branch_merge_access_levels, dependent: :destroy, class_name: ProtectedBranch::MergeAccessLevel
has_many :protected_branch_push_access_levels, dependent: :destroy, class_name: ProtectedBranch::PushAccessLevel
......
......@@ -34,17 +34,6 @@ module Projects
unless remove_legacy_registry_tags
raise_error('Failed to remove some tags in project container registry. Please try again or contact administrator.')
<<<<<<< HEAD
=======
end
unless remove_repository(repo_path)
raise_error('Failed to remove project repository. Please try again or contact administrator.')
end
unless remove_repository(wiki_path)
raise_error('Failed to remove wiki repository. Please try again or contact administrator.')
>>>>>>> ce/master
end
end
......@@ -79,11 +68,11 @@ module Projects
def trash_repositories!
unless remove_repository(repo_path)
raise_error('Failed to remove project repository. Please try again or contact administrator')
raise_error('Failed to remove project repository. Please try again or contact administrator.')
end
unless remove_repository(wiki_path)
raise_error('Failed to remove wiki repository. Please try again or contact administrator')
raise_error('Failed to remove wiki repository. Please try again or contact administrator.')
end
end
......@@ -114,15 +103,12 @@ module Projects
ContainerRepository.build_root_repository(project).tap do |repository|
return repository.has_tags? ? repository.delete_tags! : true
end
<<<<<<< HEAD
end
def remove_tracking_entries!
return unless Gitlab::Geo.secondary?
Geo::ProjectRegistry.where(project_id: project.id).delete_all
=======
>>>>>>> ce/master
end
def raise_error(message)
......
......@@ -33,12 +33,8 @@
= sort_title_recently_updated
= link_to admin_users_path(sort: sort_value_oldest_updated, filter: params[:filter]) do
= sort_title_oldest_updated
<<<<<<< HEAD
= link_to 'Send email to users', admin_email_path, class: 'btn'
= link_to 'New User', new_admin_user_path, class: 'btn btn-new btn-search'
=======
= link_to 'New user', new_admin_user_path, class: 'btn btn-new btn-search'
>>>>>>> ce/master
.nav-block
%ul.nav-links.wide.scrolling-tabs.white.scrolling-tabs
......
......@@ -33,11 +33,8 @@
tree_join(@commit.sha, @path)), class: 'btn btn-sm js-data-file-blob-permalink-url'
.btn-group{ role: "group" }<
<<<<<<< HEAD
- if current_user
= lock_file_link(html_options: {class: 'btn btn-sm path-lock'})
=======
>>>>>>> ce/master
= edit_blob_link if blob_text_viewable?(blob)
- if current_user
= replace_blob_link
......
......@@ -9,13 +9,8 @@
.accept-action
- if @pipeline && @pipeline.active?
%span.btn-group
<<<<<<< HEAD
= button_tag class: "btn btn-info js-merge-when-pipeline-succeeds-button merge-when-pipeline-succeeds", disabled: !@merge_request.approved?, ":disabled" => "disableAcceptance" do
Merge When Pipeline Succeeds
=======
= button_tag class: "btn btn-info js-merge-when-pipeline-succeeds-button merge-when-pipeline-succeeds" do
Merge when pipeline succeeds
>>>>>>> ce/master
- unless @project.only_allow_merge_if_pipeline_succeeds?
= button_tag class: "btn btn-info dropdown-toggle", 'data-toggle' => 'dropdown', disabled: !@merge_request.approved?, ":disabled" => "disableAcceptance" do
= icon('caret-down')
......@@ -31,13 +26,8 @@
= icon('warning fw')
Merge immediately
- else
<<<<<<< HEAD
= f.button class: "btn btn-grouped js-merge-button accept-merge-request", disabled: !@merge_request.approved?, ":disabled" => "disableAcceptance" do
Accept Merge Request
=======
= f.button class: "btn btn-grouped js-merge-button accept-merge-request" do
Accept merge request
>>>>>>> ce/master
- if @merge_request.force_remove_source_branch?
.accept-control
The source branch will be removed.
......
......@@ -22,12 +22,8 @@
= text_field_tag :project_clone, default_url_to_repo(project), class: "js-select-on-focus form-control", readonly: true
.input-group-btn
<<<<<<< HEAD
= clipboard_button(clipboard_target: '#project_clone', title: "Copy URL to clipboard")
= geo_button(modal_target: '#modal-geo-info') if Gitlab::Geo.secondary?
=======
= clipboard_button(target: '#project_clone', title: "Copy URL to clipboard")
>>>>>>> ce/master
= geo_button(modal_target: '#modal-geo-info') if Gitlab::Geo.secondary?
:javascript
$('ul.clone-options-dropdown a').on('click',function(e){
......
......@@ -27,19 +27,11 @@
.scroll-container
%ul.tokens-container.list-unstyled
%li.input-token
<<<<<<< HEAD
%input.form-control.filtered-search{ placeholder: 'Search or filter results...', data: { id: "filtered-search-#{type.to_s}", 'project-id' => @project.id, 'username-params' => @users.to_json(only: [:id, :username]), 'base-endpoint' => namespace_project_path(@project.namespace, @project) } }
= icon('filter')
%button.clear-search.hidden{ type: 'button' }
= icon('times')
#js-dropdown-hint.filtered-search-input-dropdown-menu.filtered-search-input-dropdown-menu.dropdown-menu.hint-dropdown
=======
%input.form-control.filtered-search{ id: "filtered-search-#{type.to_s}", placeholder: 'Search or filter results...', data: { 'project-id' => @project.id, 'username-params' => @users.to_json(only: [:id, :username]), 'base-endpoint' => namespace_project_path(@project.namespace, @project) } }
= icon('filter')
%button.clear-search.hidden{ type: 'button' }
= icon('times')
#js-dropdown-hint.filtered-search-input-dropdown-menu.dropdown-menu.hint-dropdown
>>>>>>> ce/master
%ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { action: 'submit' } }
%button.btn.btn-link
......@@ -81,7 +73,7 @@
{{name}}
%span.dropdown-light-content
@{{username}}
<<<<<<< HEAD
- unless board && board.milestone_id
#js-dropdown-milestone.filtered-search-input-dropdown-menu.dropdown-menu{ data: { icon: 'clock-o', hint: 'milestone', tag: '%milestone' } }
%ul{ data: { dropdown: true } }
......@@ -99,24 +91,7 @@
%li.filter-dropdown-item
%button.btn.btn-link.js-data-value
{{title}}
=======
#js-dropdown-milestone.filtered-search-input-dropdown-menu.dropdown-menu{ data: { icon: 'clock-o', hint: 'milestone', tag: '%milestone' } }
%ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'none' } }
%button.btn.btn-link
No Milestone
%li.filter-dropdown-item{ data: { value: 'upcoming' } }
%button.btn.btn-link
Upcoming
%li.filter-dropdown-item{ 'data-value' => 'started' }
%button.btn.btn-link
Started
%li.divider
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item
%button.btn.btn-link.js-data-value
{{title}}
>>>>>>> ce/master
#js-dropdown-label.filtered-search-input-dropdown-menu.dropdown-menu{ data: { icon: 'tag', hint: 'label', tag: '~label', type: 'array' } }
%ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'none' } }
......@@ -129,7 +104,6 @@
%span.dropdown-label-box{ style: 'background: {{color}}' }
%span.label-title.js-data-value
{{title}}
<<<<<<< HEAD
- if type == :issues || type == :boards
#js-dropdown-weight.filtered-search-input-dropdown-menu.dropdown-menu{ data: { icon: 'balance-scale', hint: 'weight', tag: 'weight' } }
......@@ -146,8 +120,6 @@
%li.filter-dropdown-item{ 'data-value' => "#{weight}" }
%button.btn.btn-link= weight
=======
>>>>>>> ce/master
.filter-dropdown-container
- if type == :boards
- if can?(current_user, :admin_list, @project)
......
......@@ -148,7 +148,6 @@ constraints(ProjectUrlConstrainer.new) do
resource :release, only: [:edit, :update]
end
<<<<<<< HEAD
## EE-specific
resources :path_locks, only: [:index, :destroy] do
collection do
......@@ -167,9 +166,6 @@ constraints(ProjectUrlConstrainer.new) do
resources :push_access_levels, only: [:destroy]
end
end
=======
resources :protected_branches, only: [:index, :show, :create, :update, :destroy], constraints: { id: Gitlab::Regex.git_reference_regex }
>>>>>>> ce/master
resources :protected_tags, only: [:index, :show, :create, :update, :destroy], constraints: { id: Gitlab::Regex.git_reference_regex }
resources :variables, only: [:index, :show, :update, :create, :destroy]
......
......@@ -841,13 +841,10 @@ ActiveRecord::Schema.define(version: 20170406115029) do
t.text "description_html"
t.boolean "lfs_enabled"
t.integer "parent_id"
<<<<<<< HEAD
t.integer "shared_runners_minutes_limit"
t.integer "repository_size_limit", limit: 8
=======
t.boolean "require_two_factor_authentication", default: false, null: false
t.integer "two_factor_grace_period", default: 48, null: false
>>>>>>> ce/master
t.integer "shared_runners_minutes_limit"
t.integer "repository_size_limit", limit: 8
end
add_index "namespaces", ["created_at"], name: "index_namespaces_on_created_at", using: :btree
......@@ -1104,12 +1101,9 @@ ActiveRecord::Schema.define(version: 20170406115029) do
t.boolean "lfs_enabled"
t.text "description_html"
t.boolean "only_allow_merge_if_all_discussions_are_resolved"
<<<<<<< HEAD
t.integer "auto_cancel_pending_pipelines", default: 0, null: false
t.integer "repository_size_limit", limit: 8
t.integer "sync_time", default: 60, null: false
=======
t.integer "auto_cancel_pending_pipelines", default: 0, null: false
>>>>>>> ce/master
t.boolean "printing_merge_request_link_enabled", default: true, null: false
t.string "import_jid"
t.boolean "service_desk_enabled"
......@@ -1188,7 +1182,6 @@ ActiveRecord::Schema.define(version: 20170406115029) do
add_index "protected_tags", ["project_id"], name: "index_protected_tags_on_project_id", using: :btree
<<<<<<< HEAD
create_table "push_rules", force: :cascade do |t|
t.string "force_push_regex"
t.string "delete_branch_regex"
......@@ -1207,8 +1200,6 @@ ActiveRecord::Schema.define(version: 20170406115029) do
add_index "push_rules", ["project_id"], name: "index_push_rules_on_project_id", using: :btree
=======
>>>>>>> ce/master
create_table "releases", force: :cascade do |t|
t.string "tag"
t.text "description"
......@@ -1514,12 +1505,9 @@ ActiveRecord::Schema.define(version: 20170406115029) do
t.boolean "auditor", default: false, null: false
t.boolean "ghost"
t.boolean "notified_of_own_activity"
<<<<<<< HEAD
t.boolean "support_bot"
=======
t.boolean "require_two_factor_authentication_from_group", default: false, null: false
t.integer "two_factor_grace_period", default: 48, null: false
>>>>>>> ce/master
t.boolean "support_bot"
end
add_index "users", ["admin"], name: "index_users_on_admin", using: :btree
......@@ -1602,17 +1590,11 @@ ActiveRecord::Schema.define(version: 20170406115029) do
add_foreign_key "protected_branch_merge_access_levels", "users"
add_foreign_key "protected_branch_push_access_levels", "namespaces", column: "group_id"
add_foreign_key "protected_branch_push_access_levels", "protected_branches"
<<<<<<< HEAD
add_foreign_key "protected_branch_push_access_levels", "users"
add_foreign_key "protected_tag_create_access_levels", "namespaces", column: "group_id"
add_foreign_key "protected_tag_create_access_levels", "protected_tags"
add_foreign_key "protected_tag_create_access_levels", "users"
add_foreign_key "remote_mirrors", "projects"
=======
add_foreign_key "protected_tag_create_access_levels", "namespaces", column: "group_id"
add_foreign_key "protected_tag_create_access_levels", "protected_tags"
add_foreign_key "protected_tag_create_access_levels", "users"
>>>>>>> ce/master
add_foreign_key "subscriptions", "projects", on_delete: :cascade
add_foreign_key "system_note_metadata", "notes", name: "fk_d83a918cb1", on_delete: :cascade
add_foreign_key "timelogs", "issues", name: "fk_timelogs_issues_issue_id", on_delete: :cascade
......
......@@ -25,22 +25,15 @@ All technical content published by GitLab lives in the documentation, including:
- [GitLab basics](gitlab-basics/README.md) Find step by step how to start working on your commandline and on GitLab.
- [GitLab Pages](user/project/pages/index.md) Using GitLab Pages.
- [Importing and exporting projects between instances](user/project/settings/import_export.md).
<<<<<<< HEAD
- [Koding](user/project/koding.md) Learn how to use Koding, the online IDE.
=======
- [Importing to GitLab](workflow/importing/README.md) Import your projects from GitHub, Bitbucket, GitLab.com, FogBugz and SVN into GitLab.
>>>>>>> ce/master
- [Markdown](user/markdown.md) GitLab's advanced formatting system.
- [Migrating from SVN](workflow/importing/migrating_from_svn.md) Convert a SVN repository to Git and GitLab.
- [Permissions](user/permissions.md) Learn what each role in a project (external/guest/reporter/developer/master/owner) can do.
- [Profile Settings](profile/README.md)
- [Project Services](user/project/integrations/project_services.md) Integrate a project with external services, such as CI and chat.
- [Public access](public_access/public_access.md) Learn how you can allow public and internal access to projects.
<<<<<<< HEAD
- [Analytics](analytics/README.md)
=======
- [Search through GitLab](user/search/index.md): Search for issues, merge requests, projects, groups, todos, and issues in Issue Boards.
>>>>>>> ce/master
- [Snippets](user/snippets.md) Snippets allow you to create little bits of code.
- [SSH](ssh/README.md) Setup your ssh keys and deploy keys for secure access to your projects.
- [Webhooks](user/project/integrations/webhooks.md) Let GitLab notify you when new code has been pushed to your project.
......@@ -51,19 +44,11 @@ All technical content published by GitLab lives in the documentation, including:
- [Upload your GitLab License](user/admin_area/license.md) Upload the license you purchased for GitLab Enterprise Edition to unlock its features.
- [Audit Events](administration/audit_events.md) Check how user access changed in projects and groups.
- [Access restrictions](user/admin_area/settings/visibility_and_access_controls.md#enabled-git-access-protocols) Define which Git access protocols can be used to talk to GitLab
<<<<<<< HEAD
- [Authentication/Authorization](administration/auth/README.md) Configure
external authentication with LDAP, SAML, CAS and additional Omniauth providers.
- [Authentication/Authorization](administration/auth/README.md) Configure external authentication with LDAP, SAML, CAS and additional Omniauth providers.
- [Changing the appearance of the login page](customization/branded_login_page.md) Make the login page branded for your GitLab instance.
- [Custom git hooks](administration/custom_hooks.md) Custom git hooks (on the filesystem) for when webhooks aren't enough.
- [Email](tools/email.md) Email GitLab users from GitLab
- [Push Rules](push_rules/push_rules.md) Advanced push rules for your project.
- [Help message](customization/help_message.md) Set information about administrators of your GitLab instance.
- [Install](install/README.md) Requirements, directory structures and installation from source.
- [Integration](integration/README.md) How to integrate with systems such as JIRA, Redmine, LDAP and Twitter.
- [Restart GitLab](administration/restart_gitlab.md) Learn how to restart GitLab and its components.
=======
- [Authentication/Authorization](administration/auth/README.md) Configure external authentication with LDAP, SAML, CAS and additional Omniauth providers.
- [Container Registry](administration/container_registry.md) Configure Docker Registry with GitLab.
- [Custom Git hooks](administration/custom_hooks.md) Custom Git hooks (on the filesystem) for when webhooks aren't enough.
- [Debugging Tips](administration/troubleshooting/debug.md) Tips to debug problems when things go wrong
......@@ -77,7 +62,6 @@ All technical content published by GitLab lives in the documentation, including:
- [Housekeeping](administration/housekeeping.md) Keep your Git repository tidy and fast.
- [Install](install/README.md) Requirements, directory structures and installation from source.
- [Integration](integration/README.md) How to integrate with systems such as JIRA, Redmine, Twitter.
>>>>>>> ce/master
- [Issue closing pattern](administration/issue_closing_pattern.md) Customize how to close an issue from commit messages.
- [Koding](administration/integration/koding.md) Set up Koding to use with GitLab.
- [Libravatar](customization/libravatar.md) Use Libravatar instead of Gravatar for user avatars.
......@@ -97,29 +81,12 @@ All technical content published by GitLab lives in the documentation, including:
- [Update](update/README.md) Update guides to upgrade your installation.
- [Web terminals](administration/integration/terminal.md) Provide terminal access to environments from within GitLab.
- [Welcome message](customization/welcome_message.md) Add a custom welcome message to the sign-in page.
<<<<<<< HEAD
- [Header logo](customization/branded_page_and_email_header.md) Change the logo on the overall page and email header.
- [Reply by email](administration/reply_by_email.md) Allow users to comment on issues and merge requests by replying to notification emails.
- [Migrate GitLab CI to CE/EE](migrate_ci_to_ce/README.md) Follow this guide to migrate your existing GitLab CI data to GitLab CE/EE.
- [Downgrade back to CE](downgrade_ee_to_ce/README.md) Follow this guide if you need to downgrade from EE to CE.
- [Git LFS configuration](workflow/lfs/lfs_administration.md)
- [Housekeeping](administration/housekeeping.md) Keep your Git repository tidy and fast.
- [GitLab Pages configuration](administration/pages/index.md) Configure GitLab Pages.
- [Elasticsearch](integration/elasticsearch.md) Enable Elasticsearch.
- [GitLab GEO](gitlab-geo/README.md) Configure GitLab GEO, a secondary read-only GitLab instance.
- [GitLab performance monitoring with InfluxDB](administration/monitoring/performance/introduction.md) Configure GitLab and InfluxDB for measuring performance metrics.
- [GitLab performance monitoring with Prometheus](administration/monitoring/prometheus/index.md) Configure GitLab and Prometheus for measuring performance metrics.
- [Request Profiling](administration/monitoring/performance/request_profiling.md) Get a detailed profile on slow requests.
- [Monitoring uptime](user/admin_area/monitoring/health_check.md) Check the server status using the health check endpoint.
- [Debugging Tips](administration/troubleshooting/debug.md) Tips to debug problems when things go wrong
- [Sidekiq Troubleshooting](administration/troubleshooting/sidekiq.md) Debug when Sidekiq appears hung and is not processing jobs.
- [High Availability](administration/high_availability/README.md) Configure multiple servers for scaling or high availability.
- [Container Registry](administration/container_registry.md) Configure Docker Registry with GitLab.
- [Repository restrictions](user/admin_area/settings/account_and_limit_settings.md#repository-size-limit) Define size restrictions for your repositories to limit the space they occupy in your storage device. Includes LFS objects.
- [Auditor users](administration/auditor_users.md) Create auditor users, with read-only access to the entire system.
- [Database load balancing](administration/database_load_balancing.md) Distribute database queries amongst multiple database servers.
=======
>>>>>>> ce/master
## Contributor documentation
......
......@@ -333,7 +333,6 @@ Creates a new project issue.
POST /projects/:id/issues
```
<<<<<<< HEAD
|-------------------------------------------+---------+----------+------------------------------------------------------------------------------------------------------------------------------------------------------|
| Attribute | Type | Required | Description |
|-------------------------------------------+---------+----------+------------------------------------------------------------------------------------------------------------------------------------------------------|
......@@ -352,21 +351,6 @@ POST /projects/:id/issues
| - | - | - | as resolved. Use in combination with `merge_request_to_resolve_discussions_of`. |
| `weight` | integer | no | The weight of the issue in range 0 to 9 |
|-------------------------------------------+---------+----------+------------------------------------------------------------------------------------------------------------------------------------------------------|
=======
| Attribute | Type | Required | Description |
|-------------------------------------------|---------|----------|--------------|
| `id` | integer | yes | The ID of a project |
| `title` | string | yes | The title of an issue |
| `description` | string | no | The description of an issue |
| `confidential` | boolean | no | Set an issue to be confidential. Default is `false`. |
| `assignee_id` | integer | no | The ID of a user to assign issue |
| `milestone_id` | integer | no | The ID of a milestone to assign issue |
| `labels` | string | no | Comma-separated label names for an issue |
| `created_at` | string | no | Date time string, ISO 8601 formatted, e.g. `2016-03-11T03:45:40Z` (requires admin or project owner rights) |
| `due_date` | string | no | Date time string in the format YEAR-MONTH-DAY, e.g. `2016-03-11` |
| `merge_request_to_resolve_discussions_of` | integer | no | The IID of a merge request in which to resolve all issues. This will fill the issue with a default description and mark all discussions as resolved. When passing a description or title, these values will take precedence over the default values.|
| `discussion_to_resolve` | string | no | The ID of a discussion to resolve. This will fill in the issue with a default description and mark the discussion as resolved. Use in combination with `merge_request_to_resolve_discussions_of`. |
>>>>>>> ce/master
```bash
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v4/projects/4/issues?title=Issues%20with%20auth&labels=bug
......@@ -428,11 +412,8 @@ PUT /projects/:id/issues/:issue_iid
| `state_event` | string | no | The state event of an issue. Set `close` to close the issue and `reopen` to reopen it |
| `updated_at` | string | no | Date time string, ISO 8601 formatted, e.g. `2016-03-11T03:45:40Z` (requires admin or project owner rights) |
| `due_date` | string | no | Date time string in the format YEAR-MONTH-DAY, e.g. `2016-03-11` |
<<<<<<< HEAD
| `weight` | integer | no | The weight of the issue in range 0 to 9 |
|----------------+---------+----------+------------------------------------------------------------------------------------------------------------|
=======
>>>>>>> ce/master
```bash
curl --request PUT --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v4/projects/4/issues/85?state_event=close
......
......@@ -62,7 +62,6 @@ module Gitlab
return if skip_authorization
return unless @tag_name
<<<<<<< HEAD
if tag_exists? && user_access.cannot_do_action?(:admin_project)
return "You are not allowed to change existing tags on this project."
......@@ -76,21 +75,6 @@ module Gitlab
return "Protected tags cannot be updated." if update?
return "Protected tags cannot be deleted." if deletion?
=======
if tag_exists? && user_access.cannot_do_action?(:admin_project)
return "You are not allowed to change existing tags on this project."
end
protected_tag_checks
end
def protected_tag_checks
return unless tag_protected?
return "Protected tags cannot be updated." if update?
return "Protected tags cannot be deleted." if deletion?
>>>>>>> ce/master
unless user_access.can_create_tag?(@tag_name)
return "You are not allowed to create this tag as it is protected."
end
......
......@@ -8,16 +8,10 @@ module Gitlab
module Email
module Handler
HANDLERS = [
<<<<<<< HEAD
EE::ServiceDeskHandler,
UnsubscribeHandler,
CreateNoteHandler,
CreateIssueHandler,
=======
UnsubscribeHandler,
CreateNoteHandler,
CreateIssueHandler
>>>>>>> ce/master
].freeze
def self.for(mail, mail_key)
......
......@@ -22,11 +22,7 @@ feature 'Editing file blob', feature: true, js: true do
wait_for_ajax
find('.js-edit-blob').click
execute_script('ace.edit("editor").setValue("class NextFeature\nend\n")')
<<<<<<< HEAD
click_button 'Commit Changes'
=======
click_button 'Commit changes'
>>>>>>> ce/master
end
context 'from MR diff' do
......
......@@ -31,11 +31,7 @@ RSpec.shared_examples "protected tags > access control > CE" do
within(".protected-tags-list") do
find(".js-allowed-to-create").click
<<<<<<< HEAD
=======
>>>>>>> ce/master
within('.js-allowed-to-create-container') do
expect(first("li")).to have_content("Roles")
click_on access_type_name
......
......@@ -138,10 +138,7 @@ merge_access_levels:
push_access_levels:
- user
- protected_branch
<<<<<<< HEAD
- group
=======
>>>>>>> ce/master
create_access_levels:
- protected_tag
container_repositories:
......
......@@ -358,11 +358,8 @@ ProtectedBranch::PushAccessLevel:
- access_level
- created_at
- updated_at
<<<<<<< HEAD
- user_id
- group_id
=======
>>>>>>> ce/master
ProtectedTag::CreateAccessLevel:
- id
- protected_tag_id
......
......@@ -50,7 +50,6 @@ describe ChatMessage::MergeMessage, models: true do
end
end
<<<<<<< HEAD
context 'approval' do
before do
args[:object_attributes][:action] = 'approved'
......@@ -64,10 +63,7 @@ describe ChatMessage::MergeMessage, models: true do
end
end
context 'close' do
=======
context 'with markdown' do
>>>>>>> ce/master
before do
args[:markdown] = true
end
......@@ -86,13 +82,6 @@ describe ChatMessage::MergeMessage, models: true do
end
end
<<<<<<< HEAD
it 'returns a message regarding closing of merge requests' do
expect(subject.pretext).to eq(
'test.user closed <http://somewhere.com/merge_requests/100|merge request !100> '\
'in <http://somewhere.com|project_name>: *Issue title*')
expect(subject.attachments).to be_empty
=======
context 'close' do
before do
args[:object_attributes][:state] = 'closed'
......@@ -109,7 +98,6 @@ describe ChatMessage::MergeMessage, models: true do
image: 'http://someavatar.com'
})
end
>>>>>>> ce/master
end
end
end
......@@ -2,11 +2,6 @@ require 'spec_helper'
describe ChatMessage::PipelineMessage do
subject { described_class.new(args) }
<<<<<<< HEAD
let(:user) { { name: 'hacker' } }
=======
>>>>>>> ce/master
let(:user) { { name: 'hacker' } }
let(:args) do
......
......@@ -1497,7 +1497,6 @@ describe Project, models: true do
end
end
<<<<<<< HEAD
describe 'handling import URL' do
context 'when project is a mirror' do
it 'returns the full URL' do
......@@ -1520,8 +1519,6 @@ describe Project, models: true do
end
end
=======
>>>>>>> ce/master
describe '#user_can_push_to_empty_repo?' do
let(:project) { create(:empty_project) }
let(:user) { create(:user) }
......@@ -1595,7 +1592,6 @@ describe Project, models: true do
context 'when tags are present for multi-level registries' do
before do
create(:container_repository, project: project, name: 'image')
<<<<<<< HEAD
stub_container_registry_tags(repository: /image/,
tags: %w[latest rc1])
......@@ -1612,32 +1608,11 @@ describe Project, models: true do
tags: %w[latest rc1 pre1])
end
=======
stub_container_registry_tags(repository: /image/,
tags: %w[latest rc1])
end
>>>>>>> ce/master
it 'should have image tags' do
expect(project).to have_container_registry_tags
end
end
<<<<<<< HEAD
=======
context 'when tags are present for root repository' do
before do
stub_container_registry_tags(repository: project.full_path,
tags: %w[latest rc1 pre1])
end
it 'should have image tags' do
expect(project).to have_container_registry_tags
end
end
>>>>>>> ce/master
context 'when there are no tags at all' do
before do
stub_container_registry_tags(repository: :any, tags: [])
......@@ -1665,7 +1640,6 @@ describe Project, models: true do
expect(project).to receive(:container_repositories)
expect(project).not_to have_container_registry_tags
end
<<<<<<< HEAD
end
end
......@@ -1704,8 +1678,6 @@ describe Project, models: true do
project.add_import_job
expect(project.reload.import_status).to eq('finished')
=======
>>>>>>> ce/master
end
end
......
......@@ -116,7 +116,6 @@ describe Projects::DestroyService, services: true do
tags: ['tag'])
project.container_repositories << container_repository
end
<<<<<<< HEAD
context 'when image repository deletion succeeds' do
it 'removes tags' do
......@@ -132,23 +131,6 @@ describe Projects::DestroyService, services: true do
expect_any_instance_of(ContainerRepository)
.to receive(:delete_tags!).and_return(false)
=======
context 'when image repository deletion succeeds' do
it 'removes tags' do
expect_any_instance_of(ContainerRepository)
.to receive(:delete_tags!).and_return(true)
destroy_project(project, user)
end
end
context 'when image repository deletion fails' do
it 'raises an exception' do
expect_any_instance_of(ContainerRepository)
.to receive(:delete_tags!).and_return(false)
>>>>>>> ce/master
expect{ destroy_project(project, user) }
.to raise_error(ActiveRecord::RecordNotDestroyed)
end
......@@ -160,23 +142,6 @@ describe Projects::DestroyService, services: true do
stub_container_registry_tags(repository: project.full_path,
tags: ['tag'])
end
<<<<<<< HEAD
context 'when image repository tags deletion succeeds' do
it 'removes tags' do
expect_any_instance_of(ContainerRepository)
.to receive(:delete_tags!).and_return(true)
destroy_project(project, user)
end
end
context 'when image repository tags deletion fails' do
it 'raises an exception' do
expect_any_instance_of(ContainerRepository)
.to receive(:delete_tags!).and_return(false)
=======
context 'when image repository tags deletion succeeds' do
it 'removes tags' do
......@@ -192,7 +157,6 @@ describe Projects::DestroyService, services: true do
expect_any_instance_of(ContainerRepository)
.to receive(:delete_tags!).and_return(false)
>>>>>>> ce/master
expect { destroy_project(project, user) }
.to raise_error(Projects::DestroyService::DestroyError)
end
......
......@@ -4035,15 +4035,11 @@ select2@3.5.2-browserify:
version "3.5.2-browserify"
resolved "https://registry.yarnpkg.com/select2/-/select2-3.5.2-browserify.tgz#dc4dafda38d67a734e8a97a46f0d3529ae05391d"
<<<<<<< HEAD
select@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@~5.3.0:
=======
"semver@2 || 3 || 4 || 5", semver@^5.3.0:
>>>>>>> ce/master
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
......@@ -4461,19 +4457,13 @@ timers-browserify@^2.0.2:
dependencies:
setimmediate "^1.0.4"
<<<<<<< HEAD
tiny-emitter@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-1.1.0.tgz#ab405a21ffed814a76c19739648093d70654fecb"
tmp@0.0.28, tmp@0.0.x:
version "0.0.28"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120"
=======
tmp@0.0.31, tmp@0.0.x:
version "0.0.31"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
>>>>>>> ce/master
dependencies:
os-tmpdir "~1.0.1"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment