Re: [PATCH] status: add advice on how to push/pull to tracking branch
- From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
- Date
- Nov 15, 2012, 19:40 UTC
- Message-ID
- <vpqmwyid59i.fsf@grenoble-inp.fr>
- In-Reply-To
- <7vr4nu92hm.fsf@alter.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
Show 23 quoted lines
>> - 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.
Show 9 quoted lines
>> + 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/