mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-23 20:03:31 +01:00
Add git-resquash.sh to repository
This differs from my old git-resquash.sh in that it uses the newer `git rebase --keep-base` if available
This commit is contained in:
parent
2225c3c369
commit
0401993197
@ -3,7 +3,7 @@
|
||||
SCRIPT_NAME=$(basename "$0")
|
||||
SCRIPTS_DIR=$(dirname "$0")
|
||||
|
||||
TOOL_NAMES=(push-all pull-all merge-forward list-tor-branches)
|
||||
TOOL_NAMES=(push-all pull-all merge-forward list-tor-branches resquash)
|
||||
|
||||
function usage()
|
||||
{
|
||||
|
46
scripts/git/git-resquash.sh
Executable file
46
scripts/git/git-resquash.sh
Executable file
@ -0,0 +1,46 @@
|
||||
#!/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 "x$PARENT" = "x"; 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 "x$USE_KEEP_BASE" = "x1" ; then
|
||||
exec git rebase -i --autosquash --keep-base "${PARENT}"
|
||||
else
|
||||
REV=$(git log --reverse --format='%H' "${PARENT}..HEAD" | head -1)
|
||||
|
||||
if test "x${REV}" = "x"; then
|
||||
echo "No changes here since ${PARENT}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exec git rebase -i --autosquash "${REV}^"
|
||||
fi
|
Loading…
Reference in New Issue
Block a user