From: Junio C Hamano Date: Fri, 16 Mar 2012 14:39:18 GMT Subject: Re: [PATCH] rebase -i: inform the user they can re-order commits Message-ID: <7vlin0ip9l.fsf@alter.siamese.dyndns.org> In-Reply-To: <7vpqccipuv.fsf@alter.siamese.dyndns.org> Junio C Hamano writes: > Matthieu Moy writes: > >> But if the user sees the help message of "rebase -i", then I don't think >> we will stop him from breaking anything by not mentionning that >> reordering commits can work. We already give other commands that rewrite >> history with more or less danger, so the additional messages isn't >> really harmful. > > I was not questioning that "You can also reorder" is dangerous in any way. > > What is dangerous is to give an illusion that it is safe to use "rebase > -i" without reading a decent documentation that does not even say that > reordering is one of the primary purpose of the command, and the mindset > that it is OK to give such an illusion with these reminder lines. Another reason we may not want to say "you can re-order" is that we will probably need to say that you cannot arbitrarily re-order (can s/f come at the beginning?) unless you want to actively harm the user. Once we go down that path, we would end up repeating the manual. Having said that, I do not personally care about this too deeply. Let's queue a reworded Nelson's patch so it is not lost while waiting for others to chime in. How about this? I avoided phrases "applying commit" (incorrect: you apply patches, and you replay or cherry-pick commits) and "history" (to people who know, it is redundant; to people who don't, it is vague mystery), but added one more useful reminder (top to bottom). git-rebase--interactive.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 5812222..fd04c8f 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -846,6 +846,8 @@ cat >> "$todo" << EOF # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # +# These lines can be re-ordered; they are executed from top to bottom. +# # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted. #