Code

rebase -i: provide reasonable reflog for the rebased branch
[git.git] / git-rebase--interactive.sh
index a81432c0a5b9e5caca47d58665b47c75accacc74..f0f2457975edcedaf9cf241efa189ae2fb081de7 100755 (executable)
@@ -151,8 +151,14 @@ do_next () {
        esac
        test -s "$TODO" && return
 
-       HEAD=$(git rev-parse HEAD)
-       HEADNAME=$(cat "$DOTEST"/head-name)
+       comment_for_reflog finish &&
+       HEADNAME=$(cat "$DOTEST"/head-name) &&
+       OLDHEAD=$(cat "$DOTEST"/head) &&
+       SHORTONTO=$(git rev-parse --short $(cat "$DOTEST"/onto)) &&
+       NEWHEAD=$(git rev-parse HEAD) &&
+       message="$GIT_REFLOG_ACTION: $HEADNAME onto $SHORTONTO)" &&
+       git update-ref -m "$message" $HEADNAME $NEWHEAD $OLDHEAD &&
+       git symbolic-ref HEAD $HEADNAME &&
        rm -rf "$DOTEST" &&
        warn "Successfully rebased and updated $HEADNAME."