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.
https://aider.chat/2023/12/21/unified-diffs.html#unified-dif...
Unfortunately, busybox diff does not have the -y or -e options.
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.
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.