mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 22:58:50 +01:00
The new version of shellcheck says that that this idiom is unnecessary, and its presence here is making the shellcheck tests fail. No changes file needed, since this is not user-facing code.
46 lines
1.2 KiB
Bash
Executable file
46 lines
1.2 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# Provides a convenient alias for "git rebase -i --autosquash --keep-root"
|
|
# on gits that have it, and a replacement on gits that don't.
|
|
|
|
set -e
|
|
|
|
PARENT="$1"
|
|
|
|
if test "$PARENT" = ""; then
|
|
echo "You must specify the parent branch."
|
|
exit 1
|
|
fi
|
|
|
|
# Can we use git rebase --keep-base? Detect the git version to find out.
|
|
GITVER=$(git version)
|
|
if test "$(echo "$GITVER"|cut -d ' ' -f 1-2)" = "git version"; then
|
|
# --keep-base was added in git 2.24. Detect if we have that version.
|
|
GITVER=$(echo "$GITVER" | cut -d ' ' -f 3)
|
|
major=$(echo "$GITVER" | cut -d . -f 1)
|
|
minor=$(echo "$GITVER" | cut -d . -f 2)
|
|
if test "$major" -lt 2; then
|
|
USE_KEEP_BASE=0
|
|
elif test "$major" -eq 2 && test "$minor" -lt 24; then
|
|
USE_KEEP_BASE=0
|
|
else
|
|
USE_KEEP_BASE=1
|
|
fi
|
|
else
|
|
# This isn't a git that reports its version in a way recognize; assume that
|
|
# --keep-base will work
|
|
USE_KEEP_BASE=1
|
|
fi
|
|
|
|
if test "$USE_KEEP_BASE" = "1" ; then
|
|
exec git rebase -i --autosquash --keep-base "${PARENT}"
|
|
else
|
|
REV=$(git log --reverse --format='%H' "${PARENT}..HEAD" | head -1)
|
|
|
|
if test "${REV}" = ""; then
|
|
echo "No changes here since ${PARENT}"
|
|
exit 1
|
|
fi
|
|
|
|
exec git rebase -i --autosquash "${REV}^"
|
|
fi
|