summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG1
-rw-r--r--app/assets/stylesheets/generic/typography.scss4
-rw-r--r--app/assets/stylesheets/pages/note_form.scss2
-rw-r--r--app/controllers/projects/merge_requests_controller.rb7
-rw-r--r--app/helpers/projects_helper.rb4
-rw-r--r--app/models/merge_request.rb14
-rw-r--r--app/services/milestones/destroy_service.rb5
-rw-r--r--app/views/layouts/ci/_nav_admin.html.haml10
-rw-r--r--app/views/layouts/ci/_nav_project.html.haml20
-rw-r--r--app/views/projects/_home_panel.html.haml4
-rw-r--r--app/views/projects/notes/_edit_form.html.haml2
-rw-r--r--app/views/projects/notes/_form.html.haml2
-rw-r--r--app/views/projects/show.html.haml2
-rw-r--r--config/gitlab.yml.example4
-rw-r--r--spec/controllers/projects/milestones_controller_spec.rb6
15 files changed, 59 insertions, 28 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 31b2a759d40..ceebdc12d0f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date.
v 8.0.0 (unreleased)
- Fix Markdown links not showing up in dashboard activity feed (Stan Hu)
+ - Remove milestones from merge requests when milestones are deleted (Stan Hu)
- Fix HTML link that was improperly escaped in new user e-mail (Stan Hu)
- Fix broken sort in merge request API (Stan Hu)
- Bump rouge to 1.10.1 to remove warning noise and fix other syntax highlighting bugs (Stan Hu)
diff --git a/app/assets/stylesheets/generic/typography.scss b/app/assets/stylesheets/generic/typography.scss
index 41189432bf6..d5f0d86a307 100644
--- a/app/assets/stylesheets/generic/typography.scss
+++ b/app/assets/stylesheets/generic/typography.scss
@@ -105,6 +105,10 @@ textarea.js-gfm-input {
font-family: $monospace_font;
}
+.md-preview {
+ font-family: $monospace_font;
+}
+
.strikethrough {
text-decoration: line-through;
}
diff --git a/app/assets/stylesheets/pages/note_form.scss b/app/assets/stylesheets/pages/note_form.scss
index b311d26d675..fdc2c3332df 100644
--- a/app/assets/stylesheets/pages/note_form.scss
+++ b/app/assets/stylesheets/pages/note_form.scss
@@ -109,7 +109,7 @@
.note-edit-form {
display: none;
- font-size: 13px;
+ font-size: 15px;
.form-actions {
padding-left: 20px;
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index f3054881daf..c1231994f25 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -7,6 +7,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
before_action :closes_issues, only: [:edit, :update, :show, :diffs, :commits]
before_action :validates_merge_request, only: [:show, :diffs, :commits]
before_action :define_show_vars, only: [:show, :diffs, :commits]
+ before_action :ensure_ref_fetched, only: [:show, :commits, :diffs]
# Allow read any merge_request
before_action :authorize_read_merge_request!
@@ -277,4 +278,10 @@ class Projects::MergeRequestsController < Projects::ApplicationController
:state_event, :description, :task_num, label_ids: []
)
end
+
+ # Make sure merge requests created before 8.0
+ # have head file in refs/merge-requests/
+ def ensure_ref_fetched
+ @merge_request.ensure_ref_fetched
+ end
end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index a2b83c50c2e..7b4747ce3d7 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -156,8 +156,8 @@ module ProjectsHelper
end
end
- def repository_size(project = nil)
- "#{(project || @project).repository_size} MB"
+ def repository_size(project = @project)
+ "#{project.repository_size} MB"
rescue
# In order to prevent 500 error
# when application cannot allocate memory
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 93faa133875..eb468c6cd53 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -433,10 +433,22 @@ class MergeRequest < ActiveRecord::Base
target_project.repository.fetch_ref(
source_project.repository.path_to_repo,
"refs/heads/#{source_branch}",
- "refs/merge-requests/#{iid}/head"
+ ref_path
)
end
+ def ref_path
+ "refs/merge-requests/#{iid}/head"
+ end
+
+ def ref_is_fetched?
+ File.exists?(File.join(project.repository.path_to_repo, ref_path))
+ end
+
+ def ensure_ref_fetched
+ fetch_ref unless ref_is_fetched?
+ end
+
def in_locked_state
begin
lock_mr
diff --git a/app/services/milestones/destroy_service.rb b/app/services/milestones/destroy_service.rb
index 7ce7d259d0b..2414966505b 100644
--- a/app/services/milestones/destroy_service.rb
+++ b/app/services/milestones/destroy_service.rb
@@ -4,10 +4,15 @@ module Milestones
Milestone.transaction do
update_params = { milestone: nil }
+
milestone.issues.each do |issue|
Issues::UpdateService.new(project, current_user, update_params).execute(issue)
end
+ milestone.merge_requests.each do |merge_request|
+ MergeRequests::UpdateService.new(project, current_user, update_params).execute(merge_request)
+ end
+
event_service.destroy_milestone(milestone, current_user)
Event.for_milestone_id(milestone.id).each do |event|
diff --git a/app/views/layouts/ci/_nav_admin.html.haml b/app/views/layouts/ci/_nav_admin.html.haml
index e9974c85733..af2545a22d8 100644
--- a/app/views/layouts/ci/_nav_admin.html.haml
+++ b/app/views/layouts/ci/_nav_admin.html.haml
@@ -8,26 +8,26 @@
%li.separate-item
= nav_link path: 'projects#index' do
= link_to ci_admin_projects_path do
- %i.fa.fa-list-alt
+ = icon('list-alt fw')
Projects
= nav_link path: 'events#index' do
= link_to ci_admin_events_path do
- %i.fa.fa-book
+ = icon('book fw')
Events
= nav_link path: ['runners#index', 'runners#show'] do
= link_to ci_admin_runners_path do
- %i.fa.fa-cog
+ = icon('cog fw')
Runners
%small.pull-right
= Ci::Runner.count(:all)
= nav_link path: 'builds#index' do
= link_to ci_admin_builds_path do
- %i.fa.fa-link
+ = icon('link fw')
Builds
%small.pull-right
= Ci::Build.count(:all)
= nav_link(controller: :application_settings, html_options: { class: 'separate-item'}) do
= link_to ci_admin_application_settings_path do
- %i.fa.fa-cogs
+ = icon('cogs fw')
%span
Settings
diff --git a/app/views/layouts/ci/_nav_project.html.haml b/app/views/layouts/ci/_nav_project.html.haml
index d747679c8cf..b7e997be108 100644
--- a/app/views/layouts/ci/_nav_project.html.haml
+++ b/app/views/layouts/ci/_nav_project.html.haml
@@ -6,48 +6,48 @@
%li.separate-item
= nav_link path: ['projects#show', 'commits#show', 'builds#show'] do
= link_to ci_project_path(@project) do
- %i.fa.fa-list-alt
+ = icon('list-alt fw')
%span
Commits
- %small.pull-right= @project.commits.count
+ %span.count= @project.commits.count
= nav_link path: 'charts#show' do
= link_to ci_project_charts_path(@project) do
- %i.fa.fa-bar-chart
+ = icon('bar-chart fw')
%span
Charts
= nav_link path: ['runners#index', 'runners#show', 'runners#edit'] do
= link_to ci_project_runners_path(@project) do
- %i.fa.fa-cog
+ = icon('cog fw')
%span
Runners
= nav_link path: 'variables#show' do
= link_to ci_project_variables_path(@project) do
- %i.fa.fa-code
+ = icon('code fw')
%span
Variables
= nav_link path: 'web_hooks#index' do
= link_to ci_project_web_hooks_path(@project) do
- %i.fa.fa-link
+ = icon('link fw')
%span
Web Hooks
= nav_link path: 'triggers#index' do
= link_to ci_project_triggers_path(@project) do
- %i.fa.fa-retweet
+ = icon('retweet fw')
%span
Triggers
= nav_link path: ['services#index', 'services#edit'] do
= link_to ci_project_services_path(@project) do
- %i.fa.fa-share
+ = icon('share fw')
%span
Services
= nav_link path: 'events#index' do
= link_to ci_project_events_path(@project) do
- %i.fa.fa-book
+ = icon('book fw')
%span
Events
%li.separate-item
= nav_link path: 'projects#edit' do
= link_to edit_ci_project_path(@project) do
- %i.fa.fa-cogs
+ = icon('cogs fw')
%span
Settings
diff --git a/app/views/projects/_home_panel.html.haml b/app/views/projects/_home_panel.html.haml
index c1d5428f676..6e53f55b0ab 100644
--- a/app/views/projects/_home_panel.html.haml
+++ b/app/views/projects/_home_panel.html.haml
@@ -30,8 +30,4 @@
= render 'projects/buttons/dropdown'
- - if @project.gitlab_ci?
- = link_to ci_project_path(@project.gitlab_ci_project), class: 'btn btn-default' do
- CI
-
= render "shared/clone_panel"
diff --git a/app/views/projects/notes/_edit_form.html.haml b/app/views/projects/notes/_edit_form.html.haml
index 8f7d2e84c70..a0e26f9827e 100644
--- a/app/views/projects/notes/_edit_form.html.haml
+++ b/app/views/projects/notes/_edit_form.html.haml
@@ -1,7 +1,7 @@
.note-edit-form
= form_for note, url: namespace_project_note_path(@project.namespace, @project, note), method: :put, remote: true, authenticity_token: true do |f|
= note_target_fields(note)
- = render layout: 'projects/md_preview', locals: { preview_class: 'note-text' } do
+ = render layout: 'projects/md_preview', locals: { preview_class: 'md-preview' } do
= render 'projects/zen', f: f, attr: :note, classes: 'note_text js-note-text js-task-list-field'
= render 'projects/notes/hints'
diff --git a/app/views/projects/notes/_form.html.haml b/app/views/projects/notes/_form.html.haml
index 3be8f44b282..d99445da59a 100644
--- a/app/views/projects/notes/_form.html.haml
+++ b/app/views/projects/notes/_form.html.haml
@@ -7,7 +7,7 @@
= f.hidden_field :noteable_id
= f.hidden_field :noteable_type
- = render layout: 'projects/md_preview', locals: { preview_class: "note-text", referenced_users: true } do
+ = render layout: 'projects/md_preview', locals: { preview_class: "md-preview", referenced_users: true } do
= render 'projects/zen', f: f, attr: :note, classes: 'note_text js-note-text'
= render 'projects/notes/hints'
.error-alert
diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml
index aa5914e3ed9..6a5fc689803 100644
--- a/app/views/projects/show.html.haml
+++ b/app/views/projects/show.html.haml
@@ -24,7 +24,7 @@
= pluralize(number_with_delimiter(@repository.tag_names.count), 'tag')
%li
- = link_to namespace_project_path(@project.namespace, @project) do
+ = link_to project_files_path(@project) do
= repository_size
- if !prefer_readme? && @repository.readme
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index 69cdf497a84..856e75dc829 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -4,7 +4,7 @@
#
########################### NOTE #####################################
# This file should not receive new settings. All configuration options #
-# that do not require application restart are being moved to #
+# that do not require an application restart are being moved to #
# ApplicationSetting model! #
# If you change this file in a Merge Request, please also create #
# a MR on https://gitlab.com/gitlab-org/omnibus-gitlab/merge_requests #
@@ -425,4 +425,4 @@ test:
sync_ssh_keys: false
staging:
- <<: *base
+ <<: *base \ No newline at end of file
diff --git a/spec/controllers/projects/milestones_controller_spec.rb b/spec/controllers/projects/milestones_controller_spec.rb
index 35446640929..8127efabe6e 100644
--- a/spec/controllers/projects/milestones_controller_spec.rb
+++ b/spec/controllers/projects/milestones_controller_spec.rb
@@ -5,6 +5,7 @@ describe Projects::MilestonesController do
let(:user) { create(:user) }
let(:milestone) { create(:milestone, project: project) }
let(:issue) { create(:issue, project: project, milestone: milestone) }
+ let(:merge_request) { create(:merge_request, source_project: project, target_project: project, milestone: milestone) }
before do
sign_in(user)
@@ -14,6 +15,7 @@ describe Projects::MilestonesController do
describe "#destroy" do
it "should remove milestone" do
+ merge_request.reload
expect(issue.milestone_id).to eq(milestone.id)
delete :destroy, namespace_id: project.namespace.id, project_id: project.id, id: milestone.id, format: :js
@@ -24,6 +26,10 @@ describe Projects::MilestonesController do
expect { Milestone.find(milestone.id) }.to raise_exception(ActiveRecord::RecordNotFound)
issue.reload
expect(issue.milestone_id).to eq(nil)
+
+ merge_request.reload
+ expect(merge_request.milestone_id).to eq(nil)
+
# Check system note left for milestone removal
last_note = project.issues.find(issue.id).notes[-1].note
expect(last_note).to eq('Milestone removed')