On Fri, Nov 25, 2011 at 6:30 PM, Jonathan Nieder <jrnieder@xxxxxxxxx> wrote: > A reproduction recipe (preferrably in the form of a patch to > t/t3200-branch.sh would be welcome. Sent in a separate email. Feel free to add a "Tested-by:" header to your patch if you want :). > > -- >8 -- > Subject: treat "git branch -M master master" as a no-op again > > Before v1.7.7-rc2~1^2~2 (Prevent force-updating of the current branch, > 2011-08-20), commands like "git branch -M topic master" could be used > even when "master" was the current branch, with the somewhat > counterintuitive result that HEAD would point to some place new while > the index and worktree kept the content of the old commit. This is > not a very sensible operation and the result is what almost nobody > would expect, so erroring out in this case was a good change. > > However, there is one exception to the "it's usually not obvious what > it would mean to overwrite the current branch by another one" rule. > Namely: > > git branch -M master master > > is clearly meant to be a no-op, even if you are on the master branch. Agreed. I thought after reading your patch about making it just do: if (!strcmp(oldname, newname)) exit(0); but I guess it would then not mark an entry in the reflog that people could be relying on... > + clobber_head_ok = !strcmp(oldname, newname); > + > + validate_new_branchname(newname, &newref, force, clobber_head_ok); This looks ok, and will be improvable if the NEEDSWORK in branch.h is done. The other thing I wonder is whether "git checkout -B master HEAD" or "git branch -f master master" should have the same short-cut? Conrad -- 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