diff --git a/app/services/files/base_service.rb b/app/services/files/base_service.rb index 29013be0f97de9679600467e06f38a3b1c3cb677..4d02752454eda8eed4fb32ca8183f105581de5bb 100644 --- a/app/services/files/base_service.rb +++ b/app/services/files/base_service.rb @@ -17,7 +17,8 @@ module Files def after_commit(sha) commit = repository.commit(sha) full_ref = 'refs/heads/' + (params[:new_branch] || ref) - GitPushService.new.execute(project, current_user, commit.parent_id, sha, full_ref) + old_sha = commit.parent_id || Gitlab::Git::BLANK_SHA + GitPushService.new.execute(project, current_user, old_sha, sha, full_ref) end end end diff --git a/app/services/files/create_service.rb b/app/services/files/create_service.rb index bafc3565da1c5463c7cd52a987d784b6d841ba64..0a80455bc6bc4094d61ad220ffac295ac9d553e3 100644 --- a/app/services/files/create_service.rb +++ b/app/services/files/create_service.rb @@ -1,7 +1,7 @@ require_relative "base_service" module Files - class CreateService < BaseService + class CreateService < Files::BaseService def execute allowed = Gitlab::GitAccess.new(current_user, project).can_push_to_branch?(ref) diff --git a/app/services/files/delete_service.rb b/app/services/files/delete_service.rb index fabcdc19648e4086347d1cdd09436059a7925fc1..2281777604c84daf6d2243e008aeb5b606fe9a92 100644 --- a/app/services/files/delete_service.rb +++ b/app/services/files/delete_service.rb @@ -1,7 +1,7 @@ require_relative "base_service" module Files - class DeleteService < BaseService + class DeleteService < Files::BaseService def execute allowed = ::Gitlab::GitAccess.new(current_user, project).can_push_to_branch?(ref) diff --git a/app/services/files/update_service.rb b/app/services/files/update_service.rb index c972f8322bb822133ef131d286087dcfb8462230..013cc1ee322209414f43f1d430eca16f0d6050a6 100644 --- a/app/services/files/update_service.rb +++ b/app/services/files/update_service.rb @@ -1,7 +1,7 @@ require_relative "base_service" module Files - class UpdateService < BaseService + class UpdateService < Files::BaseService def execute allowed = ::Gitlab::GitAccess.new(current_user, project).can_push_to_branch?(ref) diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb index bdf36af02fdba0adee2e16f2e178ff2079bdef00..cde65349d5c2d016f1221c45ffa40e21eebec55a 100644 --- a/app/services/git_push_service.rb +++ b/app/services/git_push_service.rb @@ -127,7 +127,8 @@ class GitPushService end def is_default_branch?(ref) - Gitlab::Git.branch_ref?(ref) && Gitlab::Git.ref_name(ref) == project.default_branch + Gitlab::Git.branch_ref?(ref) && + (Gitlab::Git.ref_name(ref) == project.default_branch || project.default_branch.nil?) end def commit_user(commit)