Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-19 21:09:10 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-19 21:09:10 +0300
commit33795139ea8e72756bee3675b4e16387425e6ab1 (patch)
tree3ca568fca61482e57810ee30ad5ce4b964a82c4e /app/services/issuable
parentc7e385e282bcb8505589bce526e692b7bb819ffa (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/issuable')
-rw-r--r--app/services/issuable/clone/attributes_rewriter.rb18
-rw-r--r--app/services/issuable/common_system_notes_service.rb17
2 files changed, 33 insertions, 2 deletions
diff --git a/app/services/issuable/clone/attributes_rewriter.rb b/app/services/issuable/clone/attributes_rewriter.rb
index 2b436f6322c..135ab011d69 100644
--- a/app/services/issuable/clone/attributes_rewriter.rb
+++ b/app/services/issuable/clone/attributes_rewriter.rb
@@ -19,6 +19,7 @@ module Issuable
copy_resource_label_events
copy_resource_weight_events
+ copy_resource_milestone_events
end
private
@@ -65,6 +66,23 @@ module Issuable
end
end
+ def copy_resource_milestone_events
+ entity_key = new_entity.class.name.underscore.foreign_key
+
+ copy_events(ResourceMilestoneEvent.table_name, original_entity.resource_milestone_events) do |event|
+ matching_destination_milestone = matching_milestone(event.milestone.title)
+
+ if matching_destination_milestone.present?
+ event.attributes
+ .except('id', 'reference', 'reference_html')
+ .merge(entity_key => new_entity.id,
+ 'milestone_id' => matching_destination_milestone.id,
+ 'action' => ResourceMilestoneEvent.actions[event.action],
+ 'state' => ResourceMilestoneEvent.states[event.state])
+ end
+ end
+ end
+
def copy_events(table_name, events_to_copy)
events_to_copy.find_in_batches do |batch|
events = batch.map do |event|
diff --git a/app/services/issuable/common_system_notes_service.rb b/app/services/issuable/common_system_notes_service.rb
index 846b881e819..c53e19c922a 100644
--- a/app/services/issuable/common_system_notes_service.rb
+++ b/app/services/issuable/common_system_notes_service.rb
@@ -22,13 +22,17 @@ module Issuable
end
create_due_date_note if issuable.previous_changes.include?('due_date')
- create_milestone_note if issuable.previous_changes.include?('milestone_id')
+ create_milestone_note if has_milestone_changes?
create_labels_note(old_labels) if old_labels && issuable.labels != old_labels
end
end
private
+ def has_milestone_changes?
+ issuable.previous_changes.include?('milestone_id')
+ end
+
def handle_time_tracking_note
if issuable.previous_changes.include?('time_estimate')
create_time_estimate_note
@@ -95,7 +99,16 @@ module Issuable
end
def create_milestone_note
- SystemNoteService.change_milestone(issuable, issuable.project, current_user, issuable.milestone)
+ if milestone_changes_tracking_enabled?
+ # Creates a synthetic note
+ ResourceEvents::ChangeMilestoneService.new(resource: issuable, user: current_user).execute
+ else
+ SystemNoteService.change_milestone(issuable, issuable.project, current_user, issuable.milestone)
+ end
+ end
+
+ def milestone_changes_tracking_enabled?
+ ::Feature.enabled?(:track_resource_milestone_change_events, issuable.project)
end
def create_due_date_note