Commit 46986f94 authored by Shinya Maeda's avatar Shinya Maeda

Merge branch '29077-remove-two_step_rebase-feature-flag' into 'master'

Resolve "Remove two_step_rebase feature flag"

Closes #29077

See merge request gitlab-org/gitlab!23546
parents 9bc1de5b d5e42f23
...@@ -1091,10 +1091,6 @@ class Repository ...@@ -1091,10 +1091,6 @@ class Repository
end end
def rebase(user, merge_request, skip_ci: false) def rebase(user, merge_request, skip_ci: false)
if Feature.disabled?(:two_step_rebase, default_enabled: true)
return rebase_deprecated(user, merge_request)
end
push_options = [] push_options = []
push_options << Gitlab::PushOptions::CI_SKIP if skip_ci push_options << Gitlab::PushOptions::CI_SKIP if skip_ci
......
---
title: Update rebasing to use the new two-phase Gitaly Rebase RPC
merge_request: 23546
author:
type: changed
...@@ -1618,79 +1618,58 @@ describe Repository do ...@@ -1618,79 +1618,58 @@ describe Repository do
end end
end end
context 'when two_step_rebase feature is enabled' do it_behaves_like 'a method that can rebase successfully'
before do
stub_feature_flags(two_step_rebase: true)
end
it_behaves_like 'a method that can rebase successfully'
it 'executes the new Gitaly RPC' do
expect_any_instance_of(Gitlab::GitalyClient::OperationService).to receive(:rebase)
expect_any_instance_of(Gitlab::GitalyClient::OperationService).not_to receive(:user_rebase)
repository.rebase(user, merge_request)
end
describe 'rolling back the `rebase_commit_sha`' do
let(:new_sha) { Digest::SHA1.hexdigest('foo') }
it 'does not rollback when there are no errors' do it 'executes the new Gitaly RPC' do
second_response = double(pre_receive_error: nil, git_error: nil) expect_any_instance_of(Gitlab::GitalyClient::OperationService).to receive(:rebase)
mock_gitaly(second_response) expect_any_instance_of(Gitlab::GitalyClient::OperationService).not_to receive(:user_rebase)
repository.rebase(user, merge_request) repository.rebase(user, merge_request)
end
expect(merge_request.reload.rebase_commit_sha).to eq(new_sha) describe 'rolling back the `rebase_commit_sha`' do
end let(:new_sha) { Digest::SHA1.hexdigest('foo') }
it 'does rollback when a PreReceiveError is encountered in the second step' do it 'does not rollback when there are no errors' do
second_response = double(pre_receive_error: 'my_error', git_error: nil) second_response = double(pre_receive_error: nil, git_error: nil)
mock_gitaly(second_response) mock_gitaly(second_response)
expect do repository.rebase(user, merge_request)
repository.rebase(user, merge_request)
end.to raise_error(Gitlab::Git::PreReceiveError)
expect(merge_request.reload.rebase_commit_sha).to be_nil expect(merge_request.reload.rebase_commit_sha).to eq(new_sha)
end end
it 'does rollback when a GitError is encountered in the second step' do it 'does rollback when a PreReceiveError is encountered in the second step' do
second_response = double(pre_receive_error: nil, git_error: 'git error') second_response = double(pre_receive_error: 'my_error', git_error: nil)
mock_gitaly(second_response) mock_gitaly(second_response)
expect do expect do
repository.rebase(user, merge_request) repository.rebase(user, merge_request)
end.to raise_error(Gitlab::Git::Repository::GitError) end.to raise_error(Gitlab::Git::PreReceiveError)
expect(merge_request.reload.rebase_commit_sha).to be_nil expect(merge_request.reload.rebase_commit_sha).to be_nil
end end
def mock_gitaly(second_response) it 'does rollback when a GitError is encountered in the second step' do
responses = [ second_response = double(pre_receive_error: nil, git_error: 'git error')
double(rebase_sha: new_sha).as_null_object, mock_gitaly(second_response)
second_response
]
expect_any_instance_of( expect do
Gitaly::OperationService::Stub repository.rebase(user, merge_request)
).to receive(:user_rebase_confirmable).and_return(responses.each) end.to raise_error(Gitlab::Git::Repository::GitError)
end
end
end
context 'when two_step_rebase feature is disabled' do expect(merge_request.reload.rebase_commit_sha).to be_nil
before do
stub_feature_flags(two_step_rebase: false)
end end
it_behaves_like 'a method that can rebase successfully' def mock_gitaly(second_response)
responses = [
it 'executes the deprecated Gitaly RPC' do double(rebase_sha: new_sha).as_null_object,
expect_any_instance_of(Gitlab::GitalyClient::OperationService).to receive(:user_rebase) second_response
expect_any_instance_of(Gitlab::GitalyClient::OperationService).not_to receive(:rebase) ]
repository.rebase(user, merge_request) expect_any_instance_of(
Gitaly::OperationService::Stub
).to receive(:user_rebase_confirmable).and_return(responses.each)
end end
end end
end end
......
...@@ -71,14 +71,6 @@ describe MergeRequests::RebaseService do ...@@ -71,14 +71,6 @@ describe MergeRequests::RebaseService do
it_behaves_like 'sequence of failure and success' it_behaves_like 'sequence of failure and success'
context 'with deprecated step rebase feature' do
before do
stub_feature_flags(two_step_rebase: false)
end
it_behaves_like 'sequence of failure and success'
end
context 'when unexpected error occurs' do context 'when unexpected error occurs' do
before do before do
allow(repository).to receive(:gitaly_operation_client).and_raise('Something went wrong') allow(repository).to receive(:gitaly_operation_client).and_raise('Something went wrong')
...@@ -140,21 +132,7 @@ describe MergeRequests::RebaseService do ...@@ -140,21 +132,7 @@ describe MergeRequests::RebaseService do
end end
end end
context 'when the two_step_rebase feature is enabled' do it_behaves_like 'a service that can execute a successful rebase'
before do
stub_feature_flags(two_step_rebase: true)
end
it_behaves_like 'a service that can execute a successful rebase'
end
context 'when the two_step_rebase feature is disabled' do
before do
stub_feature_flags(two_step_rebase: false)
end
it_behaves_like 'a service that can execute a successful rebase'
end
context 'when skip_ci flag is set' do context 'when skip_ci flag is set' do
let(:skip_ci) { true } let(:skip_ci) { true }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment