mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22: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")
|
SCRIPT_NAME=$(basename "$0")
|
||||||
SCRIPTS_DIR=$(dirname "$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()
|
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