Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
53 lines
1.4 KiB
Bash
53 lines
1.4 KiB
Bash
#!/bin/sh
|
|
|
|
protected_branch='canary'
|
|
|
|
# github blocks password-based auth, but still usable via API token
|
|
protected_remote_urls="\
|
|
git@github.com:vercel/next.js.git
|
|
https://github.com/vercel/next.js.git"
|
|
|
|
|
|
# The pre-push hook [...] receives the name and location of the remote as parameters
|
|
# https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
|
|
remote_name="$1"
|
|
remote_url="$2"
|
|
|
|
|
|
|
|
# if we're pushing to a fork, we don't need to protect canary.
|
|
# check if the remote is one of the protected ones.
|
|
is_remote_protected=0
|
|
for protected_remote_url in $protected_remote_urls; do
|
|
if [ "$remote_url" = "$protected_remote_url" ]; then
|
|
is_remote_protected=1
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ "$is_remote_protected" = 0 ]; then
|
|
exit 0
|
|
fi
|
|
|
|
|
|
|
|
# check if the push is targeting canary on the remote
|
|
# https://stackoverflow.com/a/44156933
|
|
push_targets_protected_branch=0
|
|
protected_ref="refs/heads/$protected_branch"
|
|
while read -r _local_ref _local_sha remote_ref _remote_sha; do
|
|
if [ "$remote_ref" = "$protected_ref" ]; then
|
|
push_targets_protected_branch=1
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ "$push_targets_protected_branch" = "1" ]; then
|
|
echo "You probably didn't intend to push directly to '$protected_branch' on '$remote_name' ($remote_url)." >&2
|
|
echo "If you're sure that that's what you want to do, bypass this check via" >&2
|
|
echo "" >&2
|
|
echo " git push --no-verify" >&2
|
|
echo "" >&2
|
|
exit 1
|
|
fi
|