If the principal purpose of this is to check "what's up" in the central repo, I suggest you get yourselves a functional CVS viewer/browser/web thingy where you can browse and see the latest changes before updating. But assuming all you have is command-line CVS, I will attempt to give you a solution anyway :)
So, what you have here is a branch foo
that went from A
-> B
, where B
is the state of the branch (on the server) after the other developer's checkin, and A
is the state you last updated your working copy to.
When just doing a plain cvs diff
in this situation, you'll see your local changes compared to A
since A
is what you have checked out. The local CVS state will show that each file comes from the A revision on the foo branch, and when diffing your CVS client will download that revision from the server. In your case I'm guessing you have no local changes since your cvs diff
is empty.
Then, when you do a cvs diff -r foo
you're diffing your local A
(or A+changes) against the server's foo
(which currently is at B
) - and the changes required to get from the server's B
to your A+changes
is exactly the opposite of the other developer's check-in, plus your own local changes.
Now, if you really really want to know how B (or tip-of-foo) compares to A (the pristine version of whatever you currently have checked out), what I think you have to do is set a tag on your working copy, then diff that tag against the state of the branch. Something like this:
cvs tag pistos_temp1
cvs diff -r pistos_temp1 -r foo
# And clean up by deleting the tag afterwards:
cvs tag -d pistos_temp1