xref: /aosp_15_r20/frameworks/base/tools/aosp/aosp_sha.sh (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1*d57664e9SAndroid Build Coastguard Worker#!/bin/bash
2*d57664e9SAndroid Build Coastguard WorkerLOCAL_DIR="$( dirname "${BASH_SOURCE}" )"
3*d57664e9SAndroid Build Coastguard Worker
4*d57664e9SAndroid Build Coastguard Workerif git log -n 1 --format='%D' HEAD@{upstream} | grep -q aosp/; then
5*d57664e9SAndroid Build Coastguard Worker    # Change appears to be in AOSP
6*d57664e9SAndroid Build Coastguard Worker    exit 0
7*d57664e9SAndroid Build Coastguard Workerelif git log -n 1 --format='%B' $1 | grep -q -E "^Ignore-AOSP-First: .+" ; then
8*d57664e9SAndroid Build Coastguard Worker    # Change is explicitly marked as ok to skip AOSP
9*d57664e9SAndroid Build Coastguard Worker    exit 0
10*d57664e9SAndroid Build Coastguard Workerelse
11*d57664e9SAndroid Build Coastguard Worker    # Change appears to be non-AOSP.
12*d57664e9SAndroid Build Coastguard Worker
13*d57664e9SAndroid Build Coastguard Worker    # If this is a cherry-pick, then allow it.
14*d57664e9SAndroid Build Coastguard Worker    cherrypick=0
15*d57664e9SAndroid Build Coastguard Worker    while read -r line ; do
16*d57664e9SAndroid Build Coastguard Worker      if [[ $line =~ cherry\ picked\ from  ]] ; then
17*d57664e9SAndroid Build Coastguard Worker        (( cherrypick++ ))
18*d57664e9SAndroid Build Coastguard Worker      fi
19*d57664e9SAndroid Build Coastguard Worker    done < <(git show $1)
20*d57664e9SAndroid Build Coastguard Worker    if (( cherrypick != 0 )); then
21*d57664e9SAndroid Build Coastguard Worker      # This is a cherry-pick, so allow it.
22*d57664e9SAndroid Build Coastguard Worker      exit 0
23*d57664e9SAndroid Build Coastguard Worker    fi
24*d57664e9SAndroid Build Coastguard Worker
25*d57664e9SAndroid Build Coastguard Worker    # See if any files are affected.
26*d57664e9SAndroid Build Coastguard Worker    count=0
27*d57664e9SAndroid Build Coastguard Worker    while read -r file ; do
28*d57664e9SAndroid Build Coastguard Worker        if (( count == 0 )); then
29*d57664e9SAndroid Build Coastguard Worker            echo
30*d57664e9SAndroid Build Coastguard Worker        fi
31*d57664e9SAndroid Build Coastguard Worker        echo -e "\033[0;31;47mThe source of truth for '$file' is in AOSP.\033[0m"
32*d57664e9SAndroid Build Coastguard Worker        (( count++ ))
33*d57664e9SAndroid Build Coastguard Worker    done < <(git show --name-only --pretty=format: $1 | grep -- "$2")
34*d57664e9SAndroid Build Coastguard Worker    if (( count != 0 )); then
35*d57664e9SAndroid Build Coastguard Worker        echo
36*d57664e9SAndroid Build Coastguard Worker        echo "If your change contains no confidential details (such as security fixes), please"
37*d57664e9SAndroid Build Coastguard Worker        echo "upload and merge this change at https://android-review.googlesource.com/."
38*d57664e9SAndroid Build Coastguard Worker        echo "Else add a tag 'Ignore-AOSP-First:' with the reason to bypass AOSP."
39*d57664e9SAndroid Build Coastguard Worker        echo
40*d57664e9SAndroid Build Coastguard Worker        exit 1
41*d57664e9SAndroid Build Coastguard Worker    fi
42*d57664e9SAndroid Build Coastguard Workerfi
43