From 771fd524f247c63943ba63a83ef202c46e2502df Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Thu, 18 Feb 2021 14:27:55 +0000 Subject: [PATCH] Disallow using error-prone merge strategies DO NOT MERGE / RESTRICT AUTOMERGE and its cousin DO NOT MERGE ANYWHERE are almost always misused. Make it an error to upload commits with those merge strategies. Bug: 156896646 Test: repo upload -n (with DNM and RM commits) Change-Id: Iae3540fa35dbd7b87a14b53a20be0cd23a206f3a --- PREUPLOAD.cfg | 3 +++ scripts/check_do_not_merge.sh | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100755 scripts/check_do_not_merge.sh diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg index ff8566144..317f5c434 100644 --- a/PREUPLOAD.cfg +++ b/PREUPLOAD.cfg @@ -1,3 +1,6 @@ [Builtin Hooks] gofmt = true bpfmt = true + +[Hook Scripts] +do_not_use_DO_NOT_MERGE = ${REPO_ROOT}/build/soong/scripts/check_do_not_merge.sh ${PREUPLOAD_COMMIT} diff --git a/scripts/check_do_not_merge.sh b/scripts/check_do_not_merge.sh new file mode 100755 index 000000000..ad6a0a969 --- /dev/null +++ b/scripts/check_do_not_merge.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Copyright (C) 2021 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +if git show -s --format=%s $1 | grep -qE '(DO NOT MERGE)|(RESTRICT AUTOMERGE)'; then + cat >&2 <