summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2015-08-13 18:23:48 -0700
committerStan Hu <stanhu@gmail.com>2015-08-14 07:09:25 -0700
commit6e808fc222dde420749fcf9ed006cfb6983e4b70 (patch)
tree8cb7d8bd2b18853d34ac002d815b3e6d6f1e32ea
parentf6f58cfb1fd7bc7fcef5e9b1f2ce658a15047b1d (diff)
downloadgitlab-ce-6e808fc222dde420749fcf9ed006cfb6983e4b70.tar.gz
Clear cache to prevent listing deleted branches after MR removes source branch
Closes #2272
-rw-r--r--CHANGELOG1
-rw-r--r--app/models/repository.rb4
-rw-r--r--lib/gitlab/satellite/merge_action.rb1
-rw-r--r--spec/lib/gitlab/satellite/merge_action_spec.rb14
4 files changed, 20 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 1b4f77ce849..520fd4ba24f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
Please view this file on the master branch, on stable branches it's out of date.
v 7.14.0 (unreleased)
+ - 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)
- Disable turbolinks when linking to Bitbucket import status (Stan Hu)
- Fix broken code import and display error messages if something went wrong with creating project (Stan Hu)
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 3bba3ca888a..24c32d90051 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 f9bf286697e..52e8130956c 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 9b1c9a34e29..e977261c726 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