diff options
author | Dmitriy Zaporozhets <dzaporozhets@gitlab.com> | 2014-09-26 09:58:08 +0000 |
---|---|---|
committer | Dmitriy Zaporozhets <dzaporozhets@gitlab.com> | 2014-09-26 09:58:08 +0000 |
commit | fedacf52f8703c49b0bf96e971841edc2cc30655 (patch) | |
tree | b8eb1cb9611ef9f5f754a58aba97b111c0a0d65d | |
parent | 87cf5b7055451a387c64bd488dacf2bc03917913 (diff) | |
parent | 9ecd3bc6cebf63e5040084032cf99adec18c859f (diff) | |
download | gitlab-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.rb | 16 | ||||
-rw-r--r-- | spec/services/git_push_service_spec.rb | 26 |
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) |