git-p4: add the p4-pre-submit hook

The `p4-pre-submit` hook is executed before git-p4 submits code.
If the hook exits with non-zero value, submit process not start.

Signed-off-by: Chen Bin <chenbin.sh@gmail.com>
Reviewed-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Chen Bin
2018-07-27 21:22:22 +10:00
committed by Junio C Hamano
parent ffc6fa0e39
commit 251c8c501f
4 changed files with 59 additions and 1 deletions

View File

@ -261,6 +261,35 @@ test_expect_success 'unresolvable host in P4PORT should display error' '
)
'
# Test following scenarios:
# - Without ".git/hooks/p4-pre-submit" , submit should continue
# - With the hook returning 0, submit should continue
# - With the hook returning 1, submit should abort
test_expect_success 'run hook p4-pre-submit before submit' '
test_when_finished cleanup_git &&
git p4 clone --dest="$git" //depot &&
(
cd "$git" &&
echo "hello world" >hello.txt &&
git add hello.txt &&
git commit -m "add hello.txt" &&
git config git-p4.skipSubmitEdit true &&
git p4 submit --dry-run >out &&
grep "Would apply" out &&
mkdir -p .git/hooks &&
write_script .git/hooks/p4-pre-submit <<-\EOF &&
exit 0
EOF
git p4 submit --dry-run >out &&
grep "Would apply" out &&
write_script .git/hooks/p4-pre-submit <<-\EOF &&
exit 1
EOF
test_must_fail git p4 submit --dry-run >errs 2>&1 &&
! grep "Would apply" errs
)
'
test_expect_success 'submit from detached head' '
test_when_finished cleanup_git &&
git p4 clone --dest="$git" //depot &&