git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 1/2] remote: advise about force-pushing as an alternative to reconciliation

From
Alex Henrie <alexhenrie24@gmail.com>
Date
Jul 6, 2023, 23:23 UTC
Message-ID
<CAMMLpeS9_P=XXMoOdTAM3jZbaxfLEJNwYArS6p9pMXisT3TRtw@mail.gmail.com>
In-Reply-To
<xmqqo7kobwpj.fsf@gitster.g>
On Thu, Jul 6, 2023 at 2:40 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 22 quoted lines
>
> Junio C Hamano <gitster@pobox.com> writes:
>
> >> diff --git a/remote.c b/remote.c
> >> index a81f2e2f17..1fe86f8b23 100644
> >> --- a/remote.c
> >> +++ b/remote.c
> >> @@ -2323,7 +2323,10 @@ int format_tracking_info(struct branch *branch, struct strbuf *sb,
> >>                      base, ours, theirs);
> >>              if (advice_enabled(ADVICE_STATUS_HINTS))
> >>                      strbuf_addstr(sb,
> >> -                            _("  (use \"git pull\" to merge the remote branch into yours)\n"));
> >> +                            _("  (To reconcile your local changes with the work at the remote, you can\n"
> >> +                              "  use 'git pull' and then 'git push'. To discard the work at the remote\n"
> >> +                              "  and replace it with what you did (alone), you can use\n"
> >> +                              "  'git push --force'.)\n"));
> >>      }
> >
> > Since wt-status.c:wt_longstatus_print_tracking() calls this
> > function, I would expect that this change would manifest as test
> > breakage in "git status" (or "git commit" whose commit log edit
> > buffer is examined) tests.  Are we lacking test coverage?

Because I was only changing advice messages and not any functionality, I didn't think to run the tests. They are indeed failing, sorry. I will fix that in v4.

Show 11 quoted lines
> The other callsite of format_tracking_info() is "git checkout".
> When you start working on your own topic forked from upstream by
> switching to it, if Git notices that your topic's base has become
> behind (so that you would later need to merge or rebase to avoid
> losing others' work), the "git pull" message is given to tell you
> that it is OK if you want to catch up first before working on it.
>
> But the new message does not fit well in the workflow.  It is
> primarily targetted for the users who are about to push out.  They
> are at the point where they are way before being ready to "discard
> the work at the remote".

If the branch is merely behind, format_tracking_info prints "(use "git pull" to update your local branch)", which is perfectly reasonable. The problem is only with the message that appears when the branches are divergent, "(use "git pull" to merge the remote branch into yours)", which is bad advice for the common GitHub/GitLab workflow that expects force-pushing.

Show 8 quoted lines
> I guess the updated message in the context of "git status" has
> exactly the same issue.  The user is about to make a commit, which
> will later be pushed out.
>
> So, while I agree that new users may need to be made aware of
> situations where they should not afraid of overwriting the remote
> repository by forcing a non-ff push, I am not sure if this is a good
> advice message to convey it.

For more context, the coworker who most recently had this problem tried to pull because he looked at `git status` _after_ committing. Git can't assume that certain commands go with certain workflows (at least, not when it comes to divergent branches). Even if the user switches to a different branch and switches back, the first branch might be divergent simply because the user forgot to force-push before switching off of it. So, let's please give the user all of the information (two ways forward: reconcile or delete) and encourage them to make the most appropriate decision for their particular workflow.

-Alex
Previous: Junio C HamanoNext: Junio C Hamano
Message 19 of 45 in “advise about force-pushing as an alternative to reconciliation”
  1. 0/2 advise about force-pushing as an alternative to reconciliationAlex Henrie, Jul 2, 2023
  2. 2/2 push: advise about force-pushing as an alternative to reconciliationAlex Henrie, Jul 2, 2023
  3. 1/2 remote: advise about force-pushing as an alternative to reconciliationAlex Henrie, Jul 2, 2023
  4. Phillip WoodJul 3, 2023
  5. Alex HenrieJul 3, 2023
  6. Junio C HamanoJul 4, 2023
  7. Alex HenrieJul 4, 2023
  8. Junio C HamanoJul 5, 2023
  9. Alex HenrieJul 6, 2023
  10. 0/2 advise about force-pushing as an alternative to reconciliationAlex Henrie, Jul 4, 2023
  11. 2/2 push: advise about force-pushing as an alternative to reconciliationAlex Henrie, Jul 4, 2023
  12. 1/2 remote: advise about force-pushing as an alternative to reconciliationAlex Henrie, Jul 4, 2023
  13. Junio C HamanoJul 4, 2023
  14. Alex HenrieJul 4, 2023
  15. 0/2 advise about force-pushing as an alternative to reconciliationAlex Henrie, Jul 6, 2023
  16. 1/2 remote: advise about force-pushing as an alternative to reconciliationAlex Henrie, Jul 6, 2023
  17. Junio C HamanoJul 6, 2023
  18. Junio C HamanoJul 6, 2023
  19. Alex HenrieJul 6, 2023
  20. Junio C HamanoJul 7, 2023
  21. Junio C HamanoJul 7, 2023
  22. Alex HenrieJul 8, 2023
  23. Junio C HamanoJul 9, 2023
  24. Alex HenrieJul 10, 2023
  25. Junio C HamanoJul 11, 2023
  26. Alex HenrieJul 12, 2023
  27. Junio C HamanoJul 12, 2023
  28. Alex HenrieJul 13, 2023
  29. Phillip WoodJul 7, 2023
  30. 2/2 push: advise about force-pushing as an alternative to reconciliationAlex Henrie, Jul 6, 2023
  31. Phillip WoodJul 7, 2023
  32. Junio C HamanoJul 7, 2023
  33. Alex HenrieJul 8, 2023
  34. Phillip WoodJul 11, 2023
  35. Alex HenrieJul 12, 2023
  36. Alex HenrieJul 12, 2023
  37. 0/2 advise about force-pushing as an alternative to reconciliationAlex Henrie, Jul 7, 2023
  38. 1/2 remote: advise about force-pushing as an alternative to reconciliationAlex Henrie, Jul 7, 2023
  39. 2/2 push: advise about force-pushing as an alternative to reconciliationAlex Henrie, Jul 7, 2023
  40. 0/3 don't imply that integration is always required before pushingAlex Henrie, Jul 13, 2023
  41. 1/3 wt-status: don't show divergence advice when committingAlex Henrie, Jul 13, 2023
  42. 2/3 remote: don't imply that integration is always required before pushingAlex Henrie, Jul 13, 2023
  43. 3/3 push: don't imply that integration is always required before pushingAlex Henrie, Jul 13, 2023
  44. Phillip WoodJul 13, 2023
  45. Junio C HamanoJul 13, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.