On Mon, Jul 01, 2013 at 08:38:21AM -0700, Junio C Hamano <gitster@xxxxxxxxx> wrote: > As to "--no-ff" vs "--ff-only", "--ff-only" has always meant "only > fast-forward updates are allowed. We do not want to create a merge > commit with this operation." I do agree with you that the proposed > patch changes the established semantis and may be too disruptive a > thing to do at this point. Hmm, one way around this may be to add a new option that is basically the same as --no-ff --ff-only (with the patch), except it has a different name, so it's not confusing. 'git merge --rebase' could be used for this, but such a name is misleading as well. Anyone has a better naming idea? :-) > If one were designing Git merge from scratch today, however, I could > see one may have designed these as two orthogonal switches. > > - Precondition on the shape of histories being merged ("fail unless > fast forward" does not have to be the only criteria); > > - How the update is done ("fast forward to the other head", "always > create a merge", "fast forward if possible, otherwise merge" do > not have to be the only three choices). > > I do not fundamentally oppose to such a new feature, but they have > to interact sanely with the current "--ff={only,only,never}". OK, so if I get it right, the problem is that users got used to that the --ff-only not only means a precondition for the merge, but also means "either don't create a merge commit or fail", while my patch would change this second behaviour. I could imagine then new switches, like 'git merge --pre=ff --update=no-ff" could provide these, though I'm not sure if it makes sense to add such generic switches till the only user is "ff".
Attachment:
signature.asc
Description: Digital signature