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

Re: theirs/ours was Re: [PATCH 6/6] Add a new test for using a custom merge strategy

From
Jeff King <peff@peff.net>
Date
Jul 29, 2008, 12:36 UTC
Message-ID
<20080729123629.GA12069@sigill.intra.peff.net>
In-Reply-To
<alpine.DEB.1.00.0807291301060.4631@eeepc-johanness>
On Tue, Jul 29, 2008 at 01:05:11PM +0200, Johannes Schindelin wrote:
Show 6 quoted lines
> > Perhaps. But I see this as an operation on the production branch: "pull
> > in master's changes, forgetting ours".
> 
> First of all, I cannot say how wrong it is to forget any changes in a 
> production branch without proper explanation.  I.e. without a commit 
> message explaining _why_ the change was wrong to begin with.

Of course; I even mentioned the same in another part of the thread. But that isn't a difference between "ours" and "theirs"; any time you are discarding some changes, you should mention why.

Show 5 quoted lines
> > In your workflow (git checkout master && git merge -s ours production && 
> > git push origin master:production) we perform an operation on master, 
> > which doesn't seem as intuitive to me.
> 
> But why?  Isn't the _content_ of "master" what we want?

Sure, which means we must _read_ from master. But you are _changing_ master. Whereas I view this as an operation on the production branch.

Please don't misunderstand me. I am not saying your way of thinking about it is wrong (or even less right than mine). What I have been trying to say this whole thread is that it is reasonable for a user to model the goal as I have described, and that git can easily support the direct implementation of achieving that goal (which is what Sverre asked originally -- is this useful to people?).

> > Not to mention that we might not _control_ master.
> 
> This is Git.  We control all local branches.

Sort of. Consider the kernel example I gave. A "linus" branch represents "this is where Linus is." But that _isn't_ where Linus is if you have added an extra merge commit to it. So either we throw away the change made to the "linus" branch, or we forever have extra merges that Linus does not have.

So yes, obviously you can do whatever you like with your local branches. But you complained in my example that the "production" branch was unnecessarily being treated as "dominant". My example was meant to indicate that the "thrown away" branch is dominant for a reason (in this case, it is my work branch, while the other is a tracking branch).

> No, this workflow almost _dictates_ a plain "pull" into your local branch.  
> The fact that a few commits were applied to upstream usually only means 
> that your merge succeeds trivially, since the merged branches contain the 
> _same_ changes.

I don't see the point in talking about "usually". In the scenario in which I used it, the merge _didn't_ succeed trivially. Of course, usually you would not use "-s theirs". But the question was "is this ever useful?" and my answer was "rarely, but here is an example of when I wanted it."

If you are using "-s theirs" frequently, you are probably doing something wrong. But that doesn't mean it is wrong for it to exist.

-Peff
Previous: Johannes SchindelinNext: Sverre Rabbelier
Message 13 of 28 in “theirs/ours was Re: [PATCH 6/6] Add a new test for using a custom merge strategy”
  1. Sverre RabbelierJul 28, 2008
  2. Miklos VajnaJul 28, 2008
  3. Sverre RabbelierJul 28, 2008
  4. Jeff KingJul 28, 2008
  5. Johannes SchindelinJul 28, 2008
  6. Jeff KingJul 28, 2008
  7. Avery PennarunJul 28, 2008
  8. Johannes SchindelinJul 28, 2008
  9. Sverre RabbelierJul 29, 2008
  10. Jeff KingJul 29, 2008
  11. Jeff KingJul 29, 2008
  12. Johannes SchindelinJul 29, 2008
  13. Jeff KingJul 29, 2008
  14. Sverre RabbelierJul 29, 2008
  15. Junio C HamanoJul 29, 2008
  16. Jeff KingJul 29, 2008
  17. Mike RalphsonJul 29, 2008
  18. Jeff KingJul 29, 2008
  19. Sverre RabbelierJul 28, 2008
  20. Junio C HamanoJul 28, 2008
  21. Sverre RabbelierJul 28, 2008
  22. Junio C HamanoJul 28, 2008
  23. Sverre RabbelierJul 28, 2008
  24. Junio C HamanoJul 28, 2008
  25. Junio C HamanoJul 28, 2008
  26. Sverre RabbelierJul 28, 2008
  27. Jeff KingJul 29, 2008
  28. Junio C HamanoJul 29, 2008

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.