#!/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=$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