Skip to content
Snippets Groups Projects
Commit 3549b881 authored by Jacob Vosmaer (GitLab)'s avatar Jacob Vosmaer (GitLab)
Browse files

Merge branch '7-12-1' into '7-12-stable-ee'

Changes from CE 7-12-stable

See merge request !433
parents ceb50833 bf596d56
No related branches found
No related tags found
No related merge requests found
Showing
with 78 additions and 51 deletions
Loading
Loading
@@ -10,10 +10,15 @@ v 7.13.0 (unreleased)
- Update ssl_ciphers in Nginx example to remove DHE settings. This will deny forward secrecy for Android 2.3.7, Java 6 and OpenSSL 0.9.8
- Convert CRLF newlines to LF when committing using the web editor.
 
v 7.12.0 (unreleased)
v 7.12.1 (unreleased)
- Fix error when deleting a user who has projects (Stan Hu)
- Fix post-receive errors on a push when an external issue tracker is configured (Stan Hu)
v 7.12.0
- Fix Error 500 when one user attempts to access a personal, internal snippet (Stan Hu)
- Disable changing of target branch in new merge request page when a branch has already been specified (Stan Hu)
- Update oauth button logos for Twitter and Google to recommended assets
- Fix hooks for web based events with external issue references (Daniel Gerhardt)
- Update browser gem to version 0.8.0 for IE11 support (Stan Hu)
- Fix timeout when rendering file with thousands of lines.
- Add "Remember me" checkbox to LDAP signin form.
Loading
Loading
@@ -47,8 +52,8 @@ v 7.12.0 (unreleased)
- Add validation to wiki page creation (only [a-zA-Z0-9/_-] are allowed) (Jeroen van Baarsen)
- Fix new/empty milestones showing 100% completion value (Jonah Bishop)
- Add a note when an Issue or Merge Request's title changes
- Consistently refer to MRs as either Accepted or Rejected.
- Add Accepted and Rejected tabs to MR lists.
- Consistently refer to MRs as either Merged or Closed.
- Add Merged tab to MR lists.
- Prefix EmailsOnPush email subject with `[Git]`.
- Group project contributions by both name and email.
- Clarify navigation labels for Project Settings and Group Settings.
Loading
Loading
7.12.0-ee
\ No newline at end of file
7.12.0-ee
Loading
Loading
@@ -86,7 +86,7 @@ def update
end
 
def destroy
DeleteUserService.new.execute(user)
DeleteUserService.new(current_user).execute(user)
 
respond_to do |format|
format.html { redirect_to admin_users_path }
Loading
Loading
Loading
Loading
@@ -6,7 +6,7 @@ def new
end
 
def destroy
DeleteUserService.new.execute(current_user)
DeleteUserService.new(current_user).execute(current_user)
 
respond_to do |format|
format.html { redirect_to new_user_session_path, notice: "Account successfully removed." }
Loading
Loading
Loading
Loading
@@ -45,10 +45,10 @@ def execute
def group
return @group if defined?(@group)
 
@group =
@group =
if params[:group_id].present?
Group.find(params[:group_id])
else
else
nil
end
end
Loading
Loading
@@ -56,10 +56,10 @@ def group
def project
return @project if defined?(@project)
 
@project =
@project =
if params[:project_id].present?
Project.find(params[:project_id])
else
else
nil
end
end
Loading
Loading
@@ -76,7 +76,7 @@ def milestones
return @milestones if defined?(@milestones)
 
@milestones =
if milestones? && params[:milestone_title] != NONE
if milestones? && params[:milestone_title] != NONE
Milestone.where(title: params[:milestone_title])
else
nil
Loading
Loading
@@ -90,7 +90,7 @@ def assignee?
def assignee
return @assignee if defined?(@assignee)
 
@assignee =
@assignee =
if assignee? && params[:assignee_id] != NONE
User.find(params[:assignee_id])
else
Loading
Loading
@@ -105,7 +105,7 @@ def author?
def author
return @author if defined?(@author)
 
@author =
@author =
if author? && params[:author_id] != NONE
User.find(params[:author_id])
else
Loading
Loading
@@ -148,8 +148,6 @@ def by_state(items)
case params[:state]
when 'closed'
items.closed
when 'rejected'
items.respond_to?(:rejected) ? items.rejected : items.closed
when 'merged'
items.respond_to?(:merged) ? items.merged : items.closed
when 'all'
Loading
Loading
Loading
Loading
@@ -333,10 +333,9 @@ def path_to_key(key, admin = false)
 
def state_filters_text_for(entity, project)
titles = {
opened: "Open",
merged: "Accepted"
opened: "Open"
}
entity_title = titles[entity] || entity.to_s.humanize
 
count =
Loading
Loading
Loading
Loading
@@ -21,7 +21,7 @@ def enabled_oauth_providers
 
def enabled_social_providers
enabled_oauth_providers.select do |name|
[:twitter, :gitlab, :github, :bitbucket, :google_oauth2, :kerberos].include?(name.to_sym)
[:saml, :twitter, :gitlab, :github, :bitbucket, :google_oauth2, :kerberos].include?(name.to_sym)
end
end
 
Loading
Loading
Loading
Loading
@@ -129,16 +129,14 @@ class MergeRequest < ActiveRecord::Base
validate :validate_fork
 
scope :of_group, ->(group) { where("source_project_id in (:group_project_ids) OR target_project_id in (:group_project_ids)", group_project_ids: group.project_ids) }
scope :merged, -> { with_state(:merged) }
scope :by_branch, ->(branch_name) { where("(source_branch LIKE :branch) OR (target_branch LIKE :branch)", branch: branch_name) }
scope :cared, ->(user) { where('assignee_id = :user OR author_id = :user', user: user.id) }
scope :by_milestone, ->(milestone) { where(milestone_id: milestone) }
scope :in_projects, ->(project_ids) { where("source_project_id in (:project_ids) OR target_project_id in (:project_ids)", project_ids: project_ids) }
scope :of_projects, ->(ids) { where(target_project_id: ids) }
# Closed scope for merge request should return
# both merged and closed mr's
scope :closed, -> { with_states(:closed, :merged) }
scope :rejected, -> { with_states(:closed) }
scope :merged, -> { with_state(:merged) }
scope :closed, -> { with_state(:closed) }
scope :closed_and_merged, -> { with_states(:closed, :merged) }
 
def self.reference_prefix
'!'
Loading
Loading
@@ -445,4 +443,14 @@ def branch_missing?
def can_be_merged_by?(user)
::Gitlab::GitAccess.new(user, project).can_push_to_branch?(target_branch)
end
def state_human_name
if merged?
"Merged"
elsif closed?
"Closed"
else
"Open"
end
end
end
Loading
Loading
@@ -56,7 +56,7 @@ def open_items_count
end
 
def closed_items_count
self.issues.closed.count + self.merge_requests.closed.count
self.issues.closed.count + self.merge_requests.closed_and_merged.count
end
 
def total_items_count
Loading
Loading
Loading
Loading
@@ -752,4 +752,12 @@ def create_wiki
errors.add(:base, 'Failed create wiki')
false
end
def reference_issue_tracker?
default_issues_tracker? || jira_tracker_active?
end
def jira_tracker_active?
jira_tracker? && jira_service.active
end
end
class DeleteUserService
attr_accessor :current_user
def initialize(current_user)
@current_user = current_user
end
def execute(user)
if user.solo_owned_groups.present?
user.errors[:base] << 'You must transfer ownership or delete groups before you can remove user'
Loading
Loading
Loading
Loading
@@ -92,18 +92,24 @@ def process_commit_messages(ref)
end
end
 
# Create cross-reference notes for any other references. Omit any issues that were referenced in an
# issue-closing phrase, or have already been mentioned from this commit (probably from this commit
# being pushed to a different branch).
refs = commit.references(project, user) - issues_to_close
refs.reject! { |r| commit.has_mentioned?(r) }
if project.reference_issue_tracker?
create_cross_reference_notes(commit, issues_to_close)
end
end
end
 
if refs.present?
author ||= commit_user(commit)
def create_cross_reference_notes(commit, issues_to_close)
# Create cross-reference notes for any other references. Omit any issues that were referenced in an
# issue-closing phrase, or have already been mentioned from this commit (probably from this commit
# being pushed to a different branch).
refs = commit.references(project, user) - issues_to_close
refs.reject! { |r| commit.has_mentioned?(r) }
 
refs.each do |r|
Note.create_cross_reference_note(r, commit, author)
end
if refs.present?
author ||= commit_user(commit)
refs.each do |r|
Note.create_cross_reference_note(r, commit, author)
end
end
end
Loading
Loading
module Issues
class CloseService < Issues::BaseService
def execute(issue, commit = nil)
if issue.close
if project.default_issues_tracker? && issue.close
event_service.close_issue(issue, current_user)
create_note(issue, commit)
notification_service.close_issue(issue, current_user)
Loading
Loading
Loading
Loading
@@ -216,13 +216,15 @@ def self.cross_reference?(note_text)
# Check if a cross-reference is disallowed
#
# This method prevents adding a "mentioned in !1" note on every single commit
# in a merge request.
# in a merge request. Additionally, it prevents the creation of references to
# external issues (which would fail).
#
# noteable - Noteable object being referenced
# mentioner - Mentionable object
#
# Returns Boolean
def self.cross_reference_disallowed?(noteable, mentioner)
return true if noteable.is_a?(ExternalIssue) && !noteable.project.jira_tracker_active?
return false unless mentioner.is_a?(MergeRequest)
return false unless noteable.is_a?(Commit)
 
Loading
Loading
Loading
Loading
@@ -9,11 +9,11 @@
- if merge_request.merged?
%span
%i.fa.fa-check
ACCEPTED
MERGED
- elsif merge_request.closed?
%span
%i.fa.fa-ban
REJECTED
CLOSED
- else
%span.hidden-xs.hidden-sm
%span.label-branch<
Loading
Loading
%h4.page-title
.issue-box{ class: issue_box_class(@merge_request) }
- if @merge_request.merged?
Accepted
- elsif @merge_request.closed?
Rejected
- else
Open
= @merge_request.state_human_name
= "Merge Request ##{@merge_request.iid}"
%small.creator
&middot;
Loading
Loading
Loading
Loading
@@ -2,7 +2,7 @@
= render 'projects/merge_requests/widget/heading'
.mr-widget-body
%h4
Rejected
Closed
- if @merge_request.closed_event
by #{link_to_member(@project, @merge_request.closed_event.author, avatar: true)}
#{time_ago_with_tooltip(@merge_request.closed_event.created_at)}
Loading
Loading
Loading
Loading
@@ -2,7 +2,7 @@
= render 'projects/merge_requests/widget/heading'
.mr-widget-body
%h4
Accepted
Merged
- if @merge_request.merge_event
by #{link_to_member(@project, @merge_request.merge_event.author, avatar: true)}
#{time_ago_with_tooltip(@merge_request.merge_event.created_at)}
Loading
Loading
Loading
Loading
@@ -86,10 +86,10 @@
.col-md-3
= render('merge_requests', title: 'Waiting for merge (open and assigned)', merge_requests: @merge_requests.opened.assigned, id: 'ongoing')
.col-md-3
= render('merge_requests', title: 'Rejected (closed)', merge_requests: @merge_requests.rejected, id: 'closed')
= render('merge_requests', title: 'Rejected (closed)', merge_requests: @merge_requests.closed, id: 'closed')
.col-md-3
.panel.panel-primary
.panel-heading Accepted
.panel-heading Merged
%ul.well-list
- @merge_requests.merged.each do |merge_request|
= render 'merge_request', merge_request: merge_request
Loading
Loading
Loading
Loading
@@ -11,6 +11,6 @@
#{merge_request.project.name_with_namespace}
.pull-right
- if merge_request.merged?
%span.label.label-primary Accepted
%span.label.label-primary Merged
- elsif merge_request.closed?
%span.label.label-danger Rejected
%span.label.label-danger Closed
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment