From: Matthieu Moy Date: Thu, 15 Nov 2012 19:40:09 GMT Subject: Re: [PATCH] status: add advice on how to push/pull to tracking branch Message-ID: In-Reply-To: <7vr4nu92hm.fsf@alter.siamese.dyndns.org> Junio C Hamano writes: >> - if (!num_theirs) >> + if (!num_theirs) { >> strbuf_addf(sb, >> Q_("Your branch is ahead of '%s' by %d commit.\n", >> "Your branch is ahead of '%s' by %d commits.\n", >> num_ours), >> base, num_ours); >> - else if (!num_ours) >> + strbuf_addf(sb, >> + _(" (use \"git push\" to publish your local commits)\n")); >> + } else if (!num_ours) { > > The message should make it clear that the two words in double quotes > only hint what command is used to "publish your local commits" and > not to be taken as literal "here is what you exactly would type", > but I do not think that is what I would get from this if I were a > total newbie who would need this advise. > > It is even more true given that this is showing an arbitrary, and > more likely than not a non-current branch, especially with the > recent move from "matching" to "simple" where a naive use of "git > push" is to push the branch that is currently checked out and no > other branches. I don't understand what you mean by "non-current". If you mean a local branch not pointed to by HEAD, then I don't understand the remark, as the message is shown by "git status" (looking more closely, it is also shown by "git checkout", but after switching branch so also showing a message about the current branch) and precisely talks about the current branch. If you mean that the upsteam branch has a name different from the local one, then with "push.default=simple", argumentless "git push" will fail and show a detailed explanation to the user, which I find acceptable. I can tweak the advice to show the full "git push" command with push.default=matching/current, but first, I'd like to understand your remark. >> + strbuf_addf(sb, >> + _(" (use \"git pull\" to update your local branch)\n")); >> + } else { > > Likewise, and the non-currentness of the branch being described is > even worse in here, as unlike "git push" that can still be used to > push a non-current branch, "git pull" is never to be used to update > local branch that is not current, which means the advice must mention > "git checkout" somewhere. I understand this remark even less. We're showing a message about the current branch and its upstream branch. In which case would "git pull" not do the right thing? -- Matthieu Moy http://www-verimag.imag.fr/~moy/