Commit d7878c3f authored by James Lopez's avatar James Lopez

fix other cases where git hooks fail due to old commits

parent 6b3b0711
......@@ -202,13 +202,11 @@ module Gitlab
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 blank_oldrev
oldrev = project.default_branch if Gitlab::Git.blank_ref?(oldrev)
commits(newrev, oldrev, project).each do |commit|
next if commit_from_annex_sync?(commit.safe_message) || (blank_oldrev && old_commit?(commit))
next if commit_from_annex_sync?(commit.safe_message) || old_commit?(commit)
if status_object = check_commit(commit, git_hook)
return status_object
......
......@@ -391,6 +391,18 @@ describe Gitlab::GitAccess, lib: true do
# push to new branch, so use a blank old rev and new ref
expect(access.git_hook_check(user, project, 'refs/heads/new-branch', Gitlab::Git::BLANK_SHA, '570e7b2abdd848b95f2f578043fc23bd6f6fd24d')).to be_allowed
end
it 'allows githook for any change with an old bad commit' do
bad_commit = double("Commit", safe_message: 'Some change').as_null_object
allow(bad_commit).to receive(:refs).and_return(['heads/master'])
allow_any_instance_of(Repository).to receive(:commits_between).and_return([bad_commit])
project.create_git_hook
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
end
end
describe "member_check" do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment