Next: Using Keyword Expansion, Previous: Annotations -- A Detailed View Of Project Activity, Up: Advanced CVS
By default, annotation always shows activity on the main trunk of
development. Even when invoked from a branch working copy, it shows
annotations for the trunk unless you specify otherwise. (This tendency
to favor the trunk is either a bug or a feature, depending on your point
of view.) You can force CVS to annotate a branch by passing the branch
tag as an argument to -r. Here is an example from a working copy in
which hello.c is on a branch named Brancho_Gratuito
, with at
least one change committed on that branch:
floss$ cvs status hello.c =================================================================== File: hello.c Status: Up-to-date Working revision: 1.10.2.2 Sun Jul 25 21:29:05 1999 Repository revision: 1.10.2.2 /usr/local/newrepos/myproj/hello.c,v Sticky Tag: Brancho_Gratuito (branch: 1.10.2) Sticky Date: (none) Sticky Options: (none) floss$ cvs annotate hello.c Annotations for hello.c *************** 1.1 (jrandom 20-Jun-99): #include <stdio.h> 1.1 (jrandom 20-Jun-99): 1.1 (jrandom 20-Jun-99): void 1.1 (jrandom 20-Jun-99): main () 1.1 (jrandom 20-Jun-99): { 1.10 (jrandom 12-Jul-99): /* test */ 1.1 (jrandom 20-Jun-99): printf ("Hello, world!\n"); 1.3 (jrandom 21-Jun-99): printf ("hmmm\n"); 1.4 (jrandom 21-Jun-99): printf ("double hmmm\n"); 1.2 (jrandom 21-Jun-99): printf ("Goodbye, world!\n"); 1.1 (jrandom 20-Jun-99): } floss$ cvs annotate -r Brancho_Gratuito hello.c Annotations for hello.c *************** 1.1 (jrandom 20-Jun-99): #include <stdio.h> 1.1 (jrandom 20-Jun-99): 1.1 (jrandom 20-Jun-99): void 1.1 (jrandom 20-Jun-99): main () 1.1 (jrandom 20-Jun-99): { 1.10 (jrandom 12-Jul-99): /* test */ 1.1 (jrandom 20-Jun-99): printf ("Hello, world!\n"); 1.10.2.2 (jrandom 25-Jul-99): printf ("hmmmmm\n"); 1.4 (jrandom 21-Jun-99): printf ("double hmmm\n"); 1.10.2.1 (jrandom 25-Jul-99): printf ("added this line"); 1.2 (jrandom 21-Jun-99): printf ("Goodbye, world!\n"); 1.1 (jrandom 20-Jun-99): } floss$
You can also pass the branch number itself:
floss$ cvs annotate -r 1.10.2 hello.c Annotations for hello.c *************** 1.1 (jrandom 20-Jun-99): #include <stdio.h> 1.1 (jrandom 20-Jun-99): 1.1 (jrandom 20-Jun-99): void 1.1 (jrandom 20-Jun-99): main () 1.1 (jrandom 20-Jun-99): { 1.10 (jrandom 12-Jul-99): /* test */ 1.1 (jrandom 20-Jun-99): printf ("Hello, world!\n"); 1.10.2.2 (jrandom 25-Jul-99): printf ("hmmmmm\n"); 1.4 (jrandom 21-Jun-99): printf ("double hmmm\n"); 1.10.2.1 (jrandom 25-Jul-99): printf ("added this line"); 1.2 (jrandom 21-Jun-99): printf ("Goodbye, world!\n"); 1.1 (jrandom 20-Jun-99): } floss$
or a full revision number from the branch:
floss$ cvs annotate -r 1.10.2.1 hello.c Annotations for hello.c *************** 1.1 (jrandom 20-Jun-99): #include <stdio.h> 1.1 (jrandom 20-Jun-99): 1.1 (jrandom 20-Jun-99): void 1.1 (jrandom 20-Jun-99): main () 1.1 (jrandom 20-Jun-99): { 1.10 (jrandom 12-Jul-99): /* test */ 1.1 (jrandom 20-Jun-99): printf ("Hello, world!\n"); 1.3 (jrandom 21-Jun-99): printf ("hmmm\n"); 1.4 (jrandom 21-Jun-99): printf ("double hmmm\n"); 1.10.2.1 (jrandom 25-Jul-99): printf ("added this line"); 1.2 (jrandom 21-Jun-99): printf ("Goodbye, world!\n"); 1.1 (jrandom 20-Jun-99): } floss$
If you do this, remember that the numbers are only valid for that particular file. In general, it's probably better to use the branch name wherever possible.