diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index e3a0699ef3f0c2687d2435df043917c785f71c62..2b410c5a610ca72a5697e128bbdd958c9176e3af 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -106,9 +106,6 @@ class Projects::MergeRequestsController < Projects::ApplicationController params[:merge_request].delete(:target_project_id) if @merge_request.update_attributes(params[:merge_request].merge(author_id_of_changes: current_user.id)) - @merge_request.reload_code - @merge_request.mark_as_unchecked - @merge_request.reset_events_cache respond_to do |format| diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index a3d786c21388b5f84300ecdd7aff07edb6e82fc2..b596d7eb9cf96c311a3432a2ad499bfd317776bf 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -32,7 +32,9 @@ class MergeRequest < ActiveRecord::Base belongs_to :source_project, foreign_key: :source_project_id, class_name: "Project" has_one :merge_request_diff, dependent: :destroy + after_create :create_merge_request_diff + after_update :update_merge_request_diff delegate :commits, :diffs, :last_commit, :last_commit_short_sha, to: :merge_request_diff, prefix: nil @@ -125,6 +127,13 @@ class MergeRequest < ActiveRecord::Base end end + def update_merge_request_diff + if source_branch_changed? || target_branch_changed? + reload_code + mark_as_unchecked + end + end + def reload_code if merge_request_diff && opened? merge_request_diff.reload_content diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index 0f62cac9a0c4d99b9501f2a90f2cdb9f60d049e7..58d2f79faff99ecd6e7a8b52fafc6b8d4dd98418 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -116,8 +116,6 @@ module API authorize! :modify_merge_request, merge_request if merge_request.update_attributes attrs - merge_request.reload_code - merge_request.mark_as_unchecked present merge_request, with: Entities::MergeRequest else handle_merge_request_errors! merge_request.errors