Alas - if you do cvs diff -r HEAD cvs will compare with the tip of the branch that you are on, not necessarily the tip of the trunk (which is the sematics of HEAD in other commands such as cvs update). The issue is described in this post:
http://mail.gnu.org/archive/html/info-cvs/2002-02/msg00744.html
Does anybody know if this has been fixed or how we can work around it?