Commit 4bcbd8e5 authored by Robert Speicher's avatar Robert Speicher

Merge branch 'fix/git-hook-merge' into 'master'

fix other cases where git hooks fail due to old commits

Fixes https://gitlab.com/gitlab-org/gitlab-ee/issues/428

Simply omitted the check for a new branch push, and always apply
"do not run git hooks on old commits" logic.

See merge request !310
parents f27a8757 d7878c3f
......@@ -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