When git-rebase invokes `git reset --hard` to rewind the user's branch prior to starting to reapply each commit this is showing up in the reflog as a simple `git reset --hard <cmt>` but its not clear to the end-user inspecting the log why there is a reset. The new --reflog-action for git-reset behaves like the same option to git-merge; it can be used by the caller to override the message entry in the reflog and is intended to be used only when git-reset is acting as plumbing, not porcelain. Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx> --- Documentation/git-reset.txt | 5 +++++ git-rebase.sh | 4 ++-- git-reset.sh | 8 ++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt index 4f42478..7eaa186 100644 --- a/Documentation/git-reset.txt +++ b/Documentation/git-reset.txt @@ -45,6 +45,11 @@ OPTIONS switched to. Any changes to tracked files in the working tree since <commit> are lost. +--reflog-action=<action>:: + This is used internally when `git-rebase` calls this command + to reset the current branch prior to merging the rebased + commits onto it. + <commit>:: Commit to make the current HEAD. diff --git a/git-rebase.sh b/git-rebase.sh index ece3142..b99f1e3 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -174,7 +174,7 @@ do else die "No rebase in progress?" fi - git reset --hard ORIG_HEAD + git reset --reflog-action="rebase: abort" --hard ORIG_HEAD exit ;; --onto) @@ -293,7 +293,7 @@ fi # Rewind the head to "$onto"; this saves our current head in ORIG_HEAD. echo "First, rewinding head to replay your work on top of it..." -git-reset --hard "$onto" +git-reset --hard --reflog-action="rebase: rewind to $onto_name" "$onto" # If the $onto is a proper descendant of the tip of the branch, then # we just fast forwarded. diff --git a/git-reset.sh b/git-reset.sh index 2379db0..7ef6789 100755 --- a/git-reset.sh +++ b/git-reset.sh @@ -6,7 +6,7 @@ USAGE='[--mixed | --soft | --hard] [<commit-ish>] [ [--] <paths>...]' SUBDIRECTORY_OK=Yes . git-sh-setup -update= reset_type=--mixed +rloga= update= reset_type=--mixed unset rev while case $# in 0) break ;; esac @@ -15,6 +15,9 @@ do --mixed | --soft | --hard) reset_type="$1" ;; + --reflog-action=*) + rloga=`expr "z$1" : 'z-[^=]*=\(.*\)'` + ;; --) break ;; @@ -81,7 +84,8 @@ then else rm -f "$GIT_DIR/ORIG_HEAD" fi -git-update-ref -m "reset $reset_type $*" HEAD "$rev" +test "$rloga" = '' && rloga="reset $reset_type $*" +git-update-ref -m "$rloga" HEAD "$rev" update_ref_status=$? case "$reset_type" in -- 1.4.4.3.gd2e4 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html