From: Junio C Hamano Date: Fri, 06 Mar 2009 17:17:43 GMT Subject: Re: [RFC PATCH] git push: Push nothing if no refspecs are given or configured Message-ID: <7vr61ash8o.fsf@gitster.siamese.dyndns.org> In-Reply-To: Jakub Narebski writes: > Johannes Schindelin writes: > ... >> Speaking of which, Steffen (who cannot reply right now, since he is AFK >> for a while) had a patch to install "remote..push = HEAD" with >> clone and remote. Would that be better? > > Errr... I thought that "remote..push = HEAD" works? > > But note that "remote..push = HEAD" (push current branch only) > and "remote..push = :" (push matching branches, i.e. curent > behavior) works only if you have remote configured... "git push " > won't be affected, and people (probably) would want to either have > 'nothing' as default, or/and be able to configure it to nothing, > current, or matching (at least). When you and Dscho contradict with each other, I seem to end up agreeing with Dscho most of the time, but for this particular one, I completely agree with you. I personally think Finn's suggested list is overengineered, and we should start with only three: "nothing", "current" (aka HEAD), and "matching". It is Ok to have a separate discussion to figure out what other default behaviours are desireable, but I think that should come after the dust settled from the transition, and more importantly, I think the other kinds of fine-tuned behaviour needs to be per-remote, and is not something the repository (or user) wide default push.default can cover. In addition to your counterargument, clone to set up remote.*.push is introducing an inconsistency between existing and new repositories until the default is changed for everybody, and the recent trend is to avoid that kind of inconsistency. Steffen's patch _could_ use push.default to infer what kind of remote.*.push to set up when adding a remote (or when cloning, if you take push.default from $HOME/.gitconfig), but at that point it becomes a redundant information.