diff --git a/lib/gitlab/git_access.rb b/lib/gitlab/git_access.rb index 072491db47d6e1c5989690f225109a437808f671..0f2bec983cd4ec1a3eb1b4bf4e0f8ca56b8ebf57 100644 --- a/lib/gitlab/git_access.rb +++ b/lib/gitlab/git_access.rb @@ -211,11 +211,13 @@ def git_hook_check(user, project, ref, oldrev, newrev) return build_status_object(true) end + blank_oldrev = Gitlab::Git.blank_ref?(oldrev) + # if oldrev is blank, the branch was just created - oldrev = project.default_branch if Gitlab::Git.blank_ref?(oldrev) + oldrev = project.default_branch if blank_oldrev commits(newrev, oldrev, project).each do |commit| - next if commit_from_annex_sync?(commit.safe_message) || old_commit?(commit) + next if commit_from_annex_sync?(commit.safe_message) || (blank_oldrev && old_commit?(commit)) if status_object = check_commit(commit, git_hook) return status_object diff --git a/spec/lib/gitlab/git_access_spec.rb b/spec/lib/gitlab/git_access_spec.rb index 7d98ce5ed3e01e34e9cfbd9164300b60bfe71041..0c9599d28a901910bb6329c6432c46afe39d8c0c 100644 --- a/spec/lib/gitlab/git_access_spec.rb +++ b/spec/lib/gitlab/git_access_spec.rb @@ -401,7 +401,7 @@ def self.updated_permissions_matrix project.git_hook.update(commit_message_regex: "Change some files") # push to new branch, so use a blank old rev and new ref - expect(access.git_hook_check(user, project, 'refs/heads/master', '6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9', '570e7b2abdd848b95f2f578043fc23bd6f6fd24d')).to be_allowed + expect(access.git_hook_check(user, project, 'refs/heads/master', Gitlab::Git::BLANK_SHA, '570e7b2abdd848b95f2f578043fc23bd6f6fd24d')).to be_allowed end end