diff options
-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) |