From 83473a4f56488fcb770d531612cbe170a66a873d Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Tue, 27 Oct 2015 18:28:07 +0100 Subject: [PATCH] Page is not reloaded periodically to check if rebase is finished --- CHANGELOG-EE | 1 + .../javascripts/merge_request_widget.js.coffee | 12 ++++++++++++ .../projects/merge_requests_controller.rb | 4 +--- app/views/projects/merge_requests/rebase.js.haml | 3 +++ .../merge_requests/widget/open/_ff_accept.html.haml | 8 ++++++-- features/project/ff_merge_requests.feature | 1 + features/steps/project/ff_merge_requests.rb | 3 ++- 7 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 app/views/projects/merge_requests/rebase.js.haml diff --git a/CHANGELOG-EE b/CHANGELOG-EE index af701a1369..918c4082f3 100644 --- a/CHANGELOG-EE +++ b/CHANGELOG-EE @@ -1,5 +1,6 @@ v 8.2.0 - Invalidate stored jira password if the endpoint URL is changed + - Fix: Page is not reloaded periodically to check if rebase is finished v 8.1.0 (unreleased) - added an issues template (Hannes Rosenögger) diff --git a/app/assets/javascripts/merge_request_widget.js.coffee b/app/assets/javascripts/merge_request_widget.js.coffee index 3176e5a896..f15c328b73 100644 --- a/app/assets/javascripts/merge_request_widget.js.coffee +++ b/app/assets/javascripts/merge_request_widget.js.coffee @@ -23,6 +23,18 @@ class @MergeRequestWidget setTimeout(merge_request_widget.mergeInProgress, 2000) dataType: 'json' + rebaseInProgress: -> + $.ajax + type: 'GET' + url: $('.merge-request').data('url') + success: (data) => + debugger + if data["rebase_in_progress?"] + setTimeout(merge_request_widget.rebaseInProgress, 2000) + else + location.reload() + dataType: 'json' + getMergeStatus: -> $.get @opts.url_to_automerge_check, (data) -> $('.mr-state-widget').replaceWith(data) diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index c5c7ee2a60..9a1998fea1 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -48,7 +48,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController respond_to do |format| format.html - format.json { render json: @merge_request } + format.json { render json: @merge_request, methods: :rebase_in_progress? } format.diff { render text: @merge_request.to_diff(current_user) } format.patch { render text: @merge_request.to_patch(current_user) } end @@ -241,8 +241,6 @@ class Projects::MergeRequestsController < Projects::ApplicationController return render_404 unless @merge_request.approved? RebaseWorker.perform_async(@merge_request.id, current_user.id) - - redirect_to merge_request_path(@merge_request), notice: 'Rebase started. It will take some time' end protected diff --git a/app/views/projects/merge_requests/rebase.js.haml b/app/views/projects/merge_requests/rebase.js.haml new file mode 100644 index 0000000000..3db4662f91 --- /dev/null +++ b/app/views/projects/merge_requests/rebase.js.haml @@ -0,0 +1,3 @@ +:plain + $('.mr-widget-body').html("#{escape_javascript(render('projects/merge_requests/widget/open/ff_accept'))}") + merge_request_widget.rebaseInProgress(); diff --git a/app/views/projects/merge_requests/widget/open/_ff_accept.html.haml b/app/views/projects/merge_requests/widget/open/_ff_accept.html.haml index 8706b69f63..241c6d5627 100644 --- a/app/views/projects/merge_requests/widget/open/_ff_accept.html.haml +++ b/app/views/projects/merge_requests/widget/open/_ff_accept.html.haml @@ -10,7 +10,7 @@ Fast-forward merge without creating merge commit - else = form_for [:rebase, @project.namespace.becomes(Namespace), @project, @merge_request], - remote: false, method: :post, html: { class: 'accept-mr-form js-requires-input' } do |f| + remote: true, method: :post, html: { class: 'accept-mr-form js-requires-input' } do |f| = hidden_field_tag :authenticity_token, form_authenticity_token .accept-merge-holder.clearfix.js-toggle-container - if @merge_request.target_project.merge_requests_rebase_enabled && can_rebase?(@merge_request.source_project, @merge_request.source_branch) @@ -32,4 +32,8 @@ $('.rebase-mr-form').on 'ajax:before', -> btn = $('.rebase-mr') btn.disable() - btn.html(" Rebase in progress. It could take some time") \ No newline at end of file + btn.html(" Rebase in progress. It could take some time") + + - if #{@merge_request.rebase_in_progress?} + $ -> + merge_request_widget.rebaseInProgress() diff --git a/features/project/ff_merge_requests.feature b/features/project/ff_merge_requests.feature index 3ddf6106e0..7019330aab 100644 --- a/features/project/ff_merge_requests.feature +++ b/features/project/ff_merge_requests.feature @@ -11,6 +11,7 @@ Feature: Project Ff Merge Requests When I visit merge request page "Bug NS-05" Then I should see ff-only merge button + @javascript Scenario: I do rebase before ff-only merge Given rebase before merge enabled When I visit merge request page "Bug NS-05" diff --git a/features/steps/project/ff_merge_requests.rb b/features/steps/project/ff_merge_requests.rb index edd7c1eafe..c65d457d23 100644 --- a/features/steps/project/ff_merge_requests.rb +++ b/features/steps/project/ff_merge_requests.rb @@ -73,11 +73,12 @@ class Spinach::Features::ProjectFfMergeRequests < Spinach::FeatureSteps end step 'I press rebase button' do + allow(RebaseWorker).to receive(:perform_async){ true } click_button "Rebase" end step "I should see rebase in progress message" do - expect(page).to have_content("Rebase started. It will take some time") + expect(page).to have_content("Rebase in progress") end def merge_request