On Mon, Feb 27, 2017 at 04:33:36PM -0800, Junio C Hamano wrote: > A flag to affect the behaviour (as opposed to &flag as a secondary > return value, like Peff's patch does) can be made to work. Perhaps > a flag that says "keep the input as is if the result is not a local > branch name" would pass an input "@" intact and that may be > sufficient to allow "git branch -m @" to rename the current branch > to "@" (I do not think it is a sensible rename, though ;-). But > probably some callers need to keep the original input and compare > with the result to see if we expanded anything if we go that route. > At that point, I am not sure if there are much differences in the > ease of use between the two approaches. I just went into more detail in my reply to Jacob, but I do think this is a workable approach (and fortunately we seem to have banned bare "@" as a name, along with anything containing "@{}", so I think we would end up rejecting these nonsense names). I'll see if I can work up a patch. We'll still need to pass the flag around through the various functions, but at least it will be a flag and not a confusing negated out-parameter. -Peff