summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)