summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dzaporozhets@gitlab.com>2014-09-26 09:58:08 +0000
committerDmitriy Zaporozhets <dzaporozhets@gitlab.com>2014-09-26 09:58:08 +0000
commitfedacf52f8703c49b0bf96e971841edc2cc30655 (patch)
treeb8eb1cb9611ef9f5f754a58aba97b111c0a0d65d
parent87cf5b7055451a387c64bd488dacf2bc03917913 (diff)
parent9ecd3bc6cebf63e5040084032cf99adec18c859f (diff)
downloadgitlab-ce-fedacf52f8703c49b0bf96e971841edc2cc30655.tar.gz
Merge branch 'fix-branch-rm' into 'master'
Fix branch removal Fix exception on post-receive worker when remove branch See merge request !1122
-rw-r--r--app/services/git_push_service.rb16
-rw-r--r--spec/services/git_push_service_spec.rb26
2 files changed, 33 insertions, 9 deletions
diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb
index 6a13778d67c..fddfddb92ee 100644
--- a/app/services/git_push_service.rb
+++ b/app/services/git_push_service.rb
@@ -22,11 +22,8 @@ class GitPushService
project.update_repository_size
if push_to_branch?(ref)
- if push_to_existing_branch?(ref, oldrev)
- # Collect data for this git push
- @push_commits = project.repository.commits_between(oldrev, newrev)
- project.update_merge_requests(oldrev, newrev, ref, @user)
- process_commit_messages(ref)
+ if push_remove_branch?(ref, newrev)
+ @push_commits = []
elsif push_to_new_branch?(ref, oldrev)
# Re-find the pushed commits.
if is_default_branch?(ref)
@@ -38,11 +35,12 @@ class GitPushService
# that shouldn't matter because we check for existing cross-references later.
@push_commits = project.repository.commits_between(project.default_branch, newrev)
end
-
process_commit_messages(ref)
-
- elsif push_remove_branch_branch?(ref, newrev)
- @push_commits = []
+ elsif push_to_existing_branch?(ref, oldrev)
+ # Collect data for this git push
+ @push_commits = project.repository.commits_between(oldrev, newrev)
+ project.update_merge_requests(oldrev, newrev, ref, @user)
+ process_commit_messages(ref)
end
@push_data = post_receive_data(oldrev, newrev, ref)
diff --git a/spec/services/git_push_service_spec.rb b/spec/services/git_push_service_spec.rb
index fa99acabc78..9afa4953d61 100644
--- a/spec/services/git_push_service_spec.rb
+++ b/spec/services/git_push_service_spec.rb
@@ -14,6 +14,32 @@ describe GitPushService do
@ref = 'refs/heads/master'
end
+ describe 'Push branches' do
+ context 'new branch' do
+ subject do
+ service.execute(project, user, @blankrev, @newrev, @ref)
+ end
+
+ it { should be_true }
+ end
+
+ context 'existing branch' do
+ subject do
+ service.execute(project, user, @oldrev, @newrev, @ref)
+ end
+
+ it { should be_true }
+ end
+
+ context 'rm branch' do
+ subject do
+ service.execute(project, user, @oldrev, @blankrev, @ref)
+ end
+
+ it { should be_true }
+ end
+ end
+
describe "Git Push Data" do
before do
service.execute(project, user, @oldrev, @newrev, @ref)