Philip Oakley wrote: > On 23/07/2021 08:30, Jeff King wrote: > > On Wed, Jul 21, 2021 at 08:24:25PM -0500, Felipe Contreras wrote: > > > >> I'm not trashing the current behavior, I'm explaining what the consensus > >> is. I spent several man-days re-reading old threads, and this is the > >> consensus of what should happen: > >> > >> 1. git pull # merge HEAD into upstream > >> 2. git pull origin topic # merge topic into HEAD > >> > >> Of the people that expressed an opinion, 100% of them stated that what > >> `git pull` does in the first case today is not desirable. > > I did not participate in the threads you linked earlier, so I am > > probably not in that 100%. But you did use my name below: > > > >> Yes, you are correct that if *everyone* followed the topic branch > >> workflow, everything would work correctly, but that's not what happens > >> in reality, in reality people do all kinds of workflows, and wrong > >> merges are pervasive. > >> > >> Everyone--including Linus, Jeff, and you--agree that there's two > >> different ways of using `git pull`: integrator versus developer. > >> > >> When a user is doing `git pull` to synchronize changes to push to the > >> same branch, that's a centralized two-way workflow, so he is acting both > >> as an integrator and as a developer, and it's in that particular case > >> that the order of the parents should be reversed. Everyone agrees on > >> that. > >> > >> When the user the opposite explicitely: `git pull origin master` > >> Linus calls it a "back-merge" [1], and in that case the order of the > >> parents should not be reversed. > > So I feel compelled to say now that I do not think that changing the > > order of parents for "git pull" is the obviously correct thing to do. > While I never `pull` because it's not right for me as a 'contributor', I > do agree that the default 'maintainer' view of `pull` will need to be > retained for long term backward compatibility. Of course, but a maintainer never does `git pull` to merge a pull request, she does `git pull github/john topic`, does she not? Nobody was in favor of reversing the parents in the case of `git pull $where $what`, that would be the wrong thing to do. So the maintainer view of `git pull` would remain fine. > What I have rarely seen in the discussion is explanation that is based > on workflow style, though the potential `update` command (1) may break > some of the deadlock about the direction of 'pull requests', and > possibly confusion regarding the location of the 'golden' publish repo. I think that's because most of the people that follow a workflow don't have this problem. It's only newcomers that don't follow any workflow that are hit by this. Another name for this no-workflow is trunk-based development [1]. Essentially everyone pulls and pushes to the same branch. People that use topic branches don't need `git update`, people who follow trunk-based development do. > (1) there are a lot of 'update' commands floating about, esp on Git for > Windows. If there is a suitably named `update` command to do the `pull > --contributor` merge-ff swap then many of the issues could fade away. Indeed. And at least when I was maintaining my git-fc fork, people did enjoy my implementation of `git update`. [1] https://trunkbaseddevelopment.com/ -- Felipe Contreras