add git-histedit

Thu, 04 Apr 2019 23:27:23 -0500

author
Meredith Howard <mhoward@roomag.org>
date
Thu, 04 Apr 2019 23:27:23 -0500
changeset 755
60ee3259bc01
parent 754
0b6dae901ee5
child 756
8bc91181db9d

add git-histedit

bin/git-histedit file | annotate | diff | comparison | revisions
new file mode 100755
--- /dev/null
+++ b/bin/git-histedit
@@ -0,0 +1,39 @@
+#!/bin/sh
+set -eu
+
+case ${1:-} in *help|-h)
+  exec perldoc -T $0;;
+esac
+
+UPSTREAM="${1:-@{u\}}"
+BRANCH="${2:-$(git symbolic-ref --short -q HEAD || echo HEAD)}"
+
+[ "$#" -ne 0 ] && shift
+[ "$#" -ne 0 ] && shift
+
+if git merge-base --is-ancestor "$UPSTREAM" "$BRANCH"; then
+  BASE=$(git rev-parse "$UPSTREAM")
+else
+  BASE=$(git merge-base "$UPSTREAM" "$BRANCH")
+fi
+
+exec git rebase --interactive --autosquash "$BASE" "$BRANCH" "$@"
+
+:<<=cut
+=head1 NAME
+
+git histedit
+
+=head1 SYNOPSIS
+
+  $ git histedit
+
+=head1 DESCRIPTION
+
+C<histedit> lets you edit a branch using interactive rebase, but without
+actually I<moving> the fork point of your branch, avoiding the complications of
+fixing up your history and dealing with merge conflicts at the same time.
+
+See also: C<hg histedit>
+
+=cut

mercurial