You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.9 KiB
57 lines
1.9 KiB
#!/bin/bash -e
|
|
# This script dumps the git SHAs of all commits inside api tracking directories.
|
|
# It can used by tools wanting to track API changes, and the primary original
|
|
# purpose is to verify verify all API change SHAs have been tracked by the
|
|
# server-side API-council tools.
|
|
#
|
|
# The only argument is used to specify a git commit range to filter by.
|
|
#
|
|
# Example invocation (API changes between O and P):
|
|
# frameworks/base/api/dump_api_shas.sh origin/oreo-dev..origin/pie-dev
|
|
|
|
set -o pipefail
|
|
|
|
eecho() { echo $@ >&2 ; }
|
|
|
|
if [[ $1 == *..* ]]; then
|
|
exclude=${1/..*}
|
|
include=${1/*..}
|
|
else
|
|
eecho No range or invalid range specified, defaulting to all commits from HEAD.
|
|
exclude=
|
|
include=HEAD
|
|
fi
|
|
|
|
eecho -n building queryview...
|
|
{ source build/envsetup.sh && lunch aosp_arm && m queryview; } >/dev/null 2>&1 \
|
|
|| { eecho failed; exit 1; }
|
|
eecho "done"
|
|
|
|
# This finds the directories where the dependant java_sdk_libs are defined
|
|
bpdirs=$(
|
|
bazel query --config=queryview --output=package \
|
|
'kind(java_sdk_library, deps(//frameworks/base/api/..., 1))' 2>/dev/null
|
|
echo frameworks/base/core/api # Not a java_sdk_library.
|
|
echo frameworks/base/services/api # Not a java_sdk_library.
|
|
)
|
|
|
|
# Find relevant api subdirectories
|
|
apidirs=$(
|
|
find $bpdirs -type f -name '*current.txt' -path '*/api/*' \
|
|
| xargs realpath --relative-to=$(pwd) | xargs dirname | sort | uniq
|
|
)
|
|
|
|
# Dump sorted SHAs of commits in these directories
|
|
{ for d in $apidirs; do
|
|
( cd $d
|
|
eecho inspecting $d
|
|
exclude_arg=$(test -n "$exclude" && {
|
|
git rev-parse -q --verify $exclude > /dev/null && echo "--not $exclude" \
|
|
|| eecho "$d has no revision $exclude, including all commits"; } || true)
|
|
for f in $(find . -name '*current.txt'); do
|
|
git --no-pager log --pretty=format:%H --no-merges --follow $include $exclude_arg -- $f
|
|
echo # No trailing newline with --no-pager
|
|
done
|
|
)
|
|
done; } | sort | uniq
|