graphql-engine/server/benchmarks/utils/pr-merge-bases.sh

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

35 lines
1.5 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
set -euo pipefail
shopt -s globstar
# The goal of this script is to help answer the question "which set of
# benchmark results should we use as the baseline performance for this branch".
# It returns a list of PR numbers, in reverse history order (in priority order)
# since the first commit might not have any associated benchmark results (e.g.
# because the benchmarks failed to run).
#
# e.g. `pr-merge-base.sh main 1` will return the PR number corresponding to the
# benchmark set we should use to measure the relative performance of the
# changes we've made in this branch.
# Usage:
# ./pr-merge-base.sh <base_branch> <lim>
BASE_BRANCH=$1
LIM=$2
# For now we ignore BASE_BRANCH and just get the list of commits with possible
# associated benchmark results from the history of this branch. These may be
# inter-mixed with changes from this branch (if the PR owner did "update
# branch"), but that doesn't matter.
#
# TODO we'd like to filter only commits from this list that are also in
# BASE_BRANCH, and also generally figure out if this can work well for PRs
# where target is not `main` (at the moment kodiak won't manage merges into
# non-protected branches anyway).
git log \
--grep='https://github.com/hasura/graphql-engine-mono/pull/[0-9]*$' \
-"$LIM" \
| grep -oP '^ PR-URL: https://github.com/hasura/graphql-engine-mono/pull/\K[0-9]*$'
# ^ TODO we'd also like to make this a multi-line regex so we can be sure
# these are just the kodiak-added lines