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

Re: [PATCH] Use diff3 instead of merge in merge-recursive.

From
Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>
Date
Oct 20, 2006, 21:11 UTC
Message-ID
<20061020211121.GB3024@cepheus.pub>
In-Reply-To
<Pine.LNX.4.63.0610181135120.14200@wbgn013.biozentrum.uni-wuerzburg.de>
Johannes Schindelin wrote:
Show 10 quoted lines
> Hi Uwe,
> 
> On Wed, 18 Oct 2006, Uwe Zeisberger wrote:
> 
> > If no error occurs, merge (from rcs 5.7) is nothing but:
> > 
> > 	diff3 -E -am -L label1 -L label2 -L label3 file1 file2 file3 > tmpfile
> > 	cat tmpfile > file1
> 
> Interesting.
> I wonder if we could streamline the code such that index_fd 
> is called directly on the output of diff3? Of course, the result has to be 
> removed when the call to diff3 fails.

I thought about that, too. But my primary intention was to get rid of 'merge', because the Solaris boxes I use from time to time lack merge, but have (GNU) diff3[1]. I already had a mental note to look into that.

If Linus is right that there are systems that have merge but lack diff3, then a combined approach is maybe the best? That is, try diff3 and if that is missing, try merge. (Or the other way round if you prefer.)

OK, I looked a bit deeper into rcs, and it seems to handle the BSD diff3 case. So Linus might be right.

BTW, merge -p sends the merged result to stdout instead of overwriting the first file given. That is

	merge -p -L label1 -L label2 -L label3 file1 file2 file3
and (GNU)
	diff3 -E -am -L label1 -L label2 -L label3 file1 file2 file3

are exactly equivalent. So if that option of merge is old enough, these are the candidates for the "combined approach" (see above).

Show 8 quoted lines
> > I didn't made any timing tests or further tests for correctness, but I
> > hope Johannes still has the framework from the time when he converted
> > the Python script to C?  
> > 
> > @Johannes: If so, could you test this patch?
> 
> I have to dig a little where I have it, but I think I can give it a try in 
> a few hours (imagine this lyrics to the melody of the day job blues).
Seems to be a long blues because you didn't sent any results. :-(

Best regards Uwe

[1] They also have a version of diff3 (I guess from BSD) that is not suited to be used for merging, at least rcs' merge cannot use it.

-- 
Uwe Zeisberger

If a lawyer and an IRS agent were both drowning, and you could only save
one of them, would you go to lunch or read the paper?
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 7 of 8 in “Use diff3 instead of merge in merge-recursive.”
  1. Use diff3 instead of merge in merge-recursive.Uwe Zeisberger, Oct 18, 2006
  2. Jakub NarebskiOct 18, 2006
  3. Johannes SchindelinOct 18, 2006
  4. Linus TorvaldsOct 18, 2006
  5. Daniel BarkalowOct 19, 2006
  6. Johannes SchindelinOct 18, 2006
  7. Uwe ZeisbergerOct 20, 2006
  8. Johannes SchindelinOct 21, 2006

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.