diff --git a/CHANGELOG b/CHANGELOG index c7511bd3245a89828d1f235b2eff9ab921ed4ce8..9ebf918371f0548908257e7a4e5eaf01f5b537fc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 7.14.0 (unreleased) - Fix redirection after sign in when using auto_sign_in_with_provider - Upgrade gitlab_git to 7.2.14 to ignore CRLFs in .gitmodules (Stan Hu) + - Clear cache to prevent listing deleted branches after MR removes source branch (Stan Hu) - Provide more feedback what went wrong if HipChat service failed test (Stan Hu) - Fix bug where backslashes in inline diffs could be dropped (Stan Hu) - Disable turbolinks when linking to Bitbucket import status (Stan Hu) diff --git a/app/models/repository.rb b/app/models/repository.rb index 3bba3ca888a8b49453389cbddfe9403596c052dd..24c32d90051484cedc3a28cd647b73d257525fcf 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -148,6 +148,10 @@ class Repository @lookup_cache ||= {} end + def expire_branch_names + cache.expire(:branch_names) + end + def method_missing(m, *args, &block) if m == :lookup && !block_given? lookup_cache[m] ||= {} diff --git a/lib/gitlab/satellite/merge_action.rb b/lib/gitlab/satellite/merge_action.rb index f9bf286697ed436096a07158e7c71d625157775b..52e8130956c2e1d5af1735fcc8b2396cefe85d5e 100644 --- a/lib/gitlab/satellite/merge_action.rb +++ b/lib/gitlab/satellite/merge_action.rb @@ -36,6 +36,7 @@ module Gitlab if merge_request.remove_source_branch? # will raise CommandFailed when push fails merge_repo.git.push(default_options, :origin, ":#{merge_request.source_branch}") + merge_request.source_project.repository.expire_branch_names end # merge, push and branch removal successful true diff --git a/spec/lib/gitlab/satellite/merge_action_spec.rb b/spec/lib/gitlab/satellite/merge_action_spec.rb index 9b1c9a34e294198cca4ccd3164e5255e71ad6874..e977261c726a0b7ee294b18482ae36319127a9d3 100644 --- a/spec/lib/gitlab/satellite/merge_action_spec.rb +++ b/spec/lib/gitlab/satellite/merge_action_spec.rb @@ -101,4 +101,18 @@ describe 'Gitlab::Satellite::MergeAction' do end end end + + describe '#merge!' do + let(:merge_request) { create(:merge_request, source_project: project, target_project: project, source_branch: "markdown", should_remove_source_branch: true) } + let(:merge_action) { Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request) } + + it 'clears cache of source repo after removing source branch' do + project.repository.expire_branch_names + expect(project.repository.branch_names).to include('markdown') + + merge_action.merge! + + expect(project.repository.branch_names).not_to include('markdown') + end + end end