#!/bin/bash # Copyright 2026, Alejandro Colomar # SPDX-License-Identifier: GPL-3.0-or-later set -Eeufo pipefail; shopt -s lastpipe; git rev-parse --git-dir | sed 's,$,/bisect-rebase,' | read -r dir; # shellcheck disable=SC2064 # we want expansion now trap "xargs git checkout --detach <'$dir/bisect-head' 2>/dev/null" EXIT; git rev-parse HEAD >"$dir/bisect-head"; if test -e "$dir/pre-exec"; then printf '%s' 'Pre-rebase exec: '; if bash "$dir/pre-exec"; x="$?"; true; then echo "exit status: $x"; if test "$x" -ne 0; then exit "$x"; fi; fi; fi; xargs git checkout <"$dir/head-name" >/dev/null 2>/dev/null; git rev-parse HEAD >"$dir/good-head"; printf '%s' 'Rebase: '; cat "$dir/git-rebase-options" "$dir/bisect-head" \ | if xargs git rebase >/dev/null 2>/dev/null; then echo 'success'; else echo 'conflict'; git rebase --abort >/dev/null; exit 1; fi; if test -e "$dir/post-exec"; then printf '%s' 'Post-rebase exec: '; if bash "$dir/post-exec"; x="$?"; true; then echo "exit status: $x"; if test "$x" -ne 0; then xargs git reset --hard <"$dir/good-head"; exit "$x"; fi; fi; fi; { git rev-parse --abbrev-ref HEAD; git rev-parse HEAD; } \ | sed '/^HEAD$/d' \ | sed '1!d' \ >"$dir/head-name"; exit 0;