2 ms·
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 s
by fanf2 2y ago
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 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 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 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/diff.1 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?view=log 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.
- beagle3 2y agoDiff is incredibly useful on its own. I use diff a lot, and I think 95% of my use of diff is to figure out what has changed without any intention to apply a patch. Furthermore, it’s likely been 20 years since I used “patch” - I almost never apply an entire diff/patch, but rather parts of it interactively with kdiff3 or beyondcompare