todsacerdoti
7d ago
107
13
fanf2
This made me wonder, what use was diff without patch?

But then I remembered diff -e which produces an ed script. In the 5th and 6th edition the -e option was simply - https://man.cat-v.org/unix-6th/1/diff I guess the reason for the non-ed output is to include the text of the deleted lines.

The diff3 utility (which arrived in the 7th edition https://man.cat-v.org/unix_7th/1/diff3) can be used as a sort of combined diff and patch, again with the help of ed, but it seems a bit awkward.

I think merge arrived as part of RCS? at least, that’s the way it is packaged now. (POSIX has neither RCS nor merge https://pubs.opengroup.org/onlinepubs/9699919799/idx/im.html) Curiously I can’t find any sign of a merge facility in SCCS – maybe I am missing something; SCCS terminology is a bit weird.

The crucial ingredients for pre-git open source workflows are context diffs, plus patch. Including the context makes the diff a lot easier to review without applying it, and it allows patch to be much more robust against concurrent changes. As far as I can tell, diff -c first appeared in 4BSD in 1980 https://www.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/man/cat1... It predates the start of the CSRG SCCS history of diff.c https://svnweb.freebsd.org/csrg/usr.bin/diff/diff/diff.c?vie... As the maintainer of unifdef I am greatly amused by diff’s -Dstring cpp mode.

1-more
Hillel Wayne posits that version control is the number one thing computer science/programming/software engineering has to teach to the other engineering disciplines. It wouldn't work without diff. It's really foundational for what it is we do, you know?

https://www.hillelwayne.com/post/what-we-can-learn/

082349872349872
Patch(1), IIRC, was Larry Wall's, who has also made one or two other small contributions over the years :-)
mr_toad
“ It’s the seed crystal of all workable open collaboration, and people living without it don’t even have the language to recognize how bad they’ve got it. “

As someone who has worked with proper version control et. al., but is often forced to work in other environments, I absolutely know how bad I’ve got it.

anotherpaulg
I’ve been hoping for awhile to train or fine tune an LLM to reliably output diffs. It’s really fundamental to code editing.

https://aider.chat/2023/12/21/unified-diffs.html#unified-dif...

1vuio0pswjnm7
A favourite utility of mine.

Unfortunately, busybox diff does not have the -y or -e options.

pipeline_peak
how did your guys diff birthday cakes turn out?
aaron695
diff is a np problem and a real np problem in that most (all?) implementations are not good enough for everyday use. You will regularly get situations where it fails.

Compared to most np problems that just sit in a lab where they save a dollar on a working multi million operation by adding $$ worth of complexity.

It'd be interesting to see all the diff's of the world in an arena battling it out. Computer Science seems unable to invent new things since 1980 so we should be improving on what they discovered at least.