Sverre Rabbelier wrote: > And then here you smash my hopes that you were suggesting we stop > asking the user to mess around in the .git directory :(. After all, if > we let that rm be handled by some 'git rebase' mode, it could also > unlock any branches it has locked. Well, I think that is worth doing, too. It's just that it's hard to change existing practices and much easier to change the tools to keep supporting them. I don't think the manual advertises .git/rebase-merge anywhere. I have witnessed people succumbing to the temptation to delete it when another rebase fails. Maybe "git rebase" should have a --override-rebase-in-progress option? The following is simpler, sort of imitating the "git bisect reset" command. With it applied, if you do git rebase --abort HEAD then the rebase will abort without changing the current HEAD (yes, I know this interface is stupid; please feel free to pick it up and do better). Other practices worth abstracting away: - Reading .git/rebase-merge/patch and .git/rebase-merge/message when a patch had conflicts - Checking for the existence of .git/rebase-merge in $PS1 prompt - Tweaking .git/rebase-merge/todo to reflect a change of plan Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index 30e5c0e..3a587a1 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -227,6 +227,9 @@ leave out at most one of A and B, in which case it defaults to HEAD. --abort:: Restore the original branch and abort the rebase operation. +--abort HEAD:: + Abort the rebase operation, without changing the current branch. + --skip:: Restart the rebasing process by skipping the current patch. diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index a27952d..2e1c074 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -772,6 +772,14 @@ first and then run 'git rebase --continue' again." do_rest ;; --abort) + if test "$2" = HEAD + then + shift + is_standalone "$@" || usage + get_saved_options + rm -rf "$DOTEST" + exit + fi is_standalone "$@" || usage get_saved_options comment_for_reflog abort diff --git a/git-rebase.sh b/git-rebase.sh index e5df23b..0f88a00 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -273,6 +273,11 @@ do test -d "$dotest" -o -d "$GIT_DIR"/rebase-apply || die "No rebase in progress?" + if test "$2" = HEAD + then + rm -r "$dotest" + exit + fi git rerere clear if test -d "$dotest" then -- 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