in reply to extract useful infos from cvs diff output


To compare the differences between two versions, I used to do:

cvs -y -r v1 -r v2 >out.txt 2>&1

This is missing a command which, from the context of the question, looks like cvs diff.

In that case you could use the -t option to expand tabs:

cvs diff -y -t -r rev1 -r rev2

You can also use -b option to ignore changes in whitespace and -B to ignore blank lines. For details on the options see:

cvs diff --help

In particular you may find the --suppress-common-lines option useful. The following will do most of the hard work of your program:

cvs diff -y --suppress-common-lines -t -r rev1 -r rev2 # Or just cvs diff -y --sup -t -r rev1 -r rev2

Also, in your code you do not check to see if your second open succeeds. I wouldn't normally comment on something like that expect that it seems to contradict your statement above:

1. Exception handling has to be there.

--
John.

Replies are listed 'Best First'.
Re: Re: extract useful infos from cvs diff output
by pg (Canon) on Jan 31, 2003 at 16:12 UTC

    This is a very good example where other people's specialties can greatly help. jmcnamara's experience with cvs diff totally nullified my snippet. I don't care my XP point, I want to openly accept the fact that I was so wrong, and didn't realize cvs diff's full functionality.

    THANK YOU VERY MUCH, I FEEL SO GRATEFUL.

    UPDATE

    After tried --suppress-common-lines for a while, I went back to my snippet again.

    The problem with that option is that, it only shows you the differences, with no indication of their positions in the source file, which make me totally lost. I don't just want to know how big the difference is, I want to know exactly where those modifications are.

    One great benefit I got from my snippet is that, it extracts the real differences, and at the same time, it gives me the line numbers of those real differences (not in the source files, but in the result file from cvs diff, but it is still good enough, as the result from cvs diff without --supress-common-lines does contain copies of source files), so I can easily locate them in the source code.

    However I still love the --suppress-common-lines option, and will use it in the future, whenever it fits. Thank you jmcnamara.