Copyright (C) 2000-2012 |
GNU Info (cvsbook.info)CVS And Implied ArgumentsCVS And Implied Arguments ------------------------- In each of the CVS commands so far, you may have noticed that no files were specified on the command line. We ran floss$ cvs diff instead of floss$ cvs diff hello.c and floss$ cvs update instead of floss$ cvs update hello.c The principle at work here is that if you don't name any files, CVS acts on all files for which the command could possibly be appropriate. This even includes files in subdirectories beneath the current directory; CVS automatically descends from the current directory through every subdirectory in the tree. For example, if you modified b-subdir/random.c and a-subdir/subsubdir/fish.c, running update may result in this: floss$ cvs update cvs update: Updating . M hello.c cvs update: Updating a-subdir cvs update: Updating a-subdir/subsubdir M a-subdir/subsubdir/fish.c cvs update: Updating b-subdir M b-subdir/random.c floss$ or better yet: floss$ cvs -q update M hello.c M a-subdir/subsubdir/fish.c M b-subdir/random.c floss$ Note: The -q flag is a less emphatic version of -Q. Had we used -Q, the command would have printed out nothing at all, because the modification notices are considered nonessential informational messages. Using the lowercase -q is less strict; it suppresses the messages we probably don't want, while allowing certain, more useful messages to pass through. You can also name specific files for the update: floss$ cvs update hello.c b-subdir/random.c M hello.c M b-subdir/random.c floss$ and CVS will only examine those files, ignoring all others. In truth, it's more common to run update without restricting it to certain files. In most situations, you'll want to update the entire directory tree at once. Remember, the updates we're doing here only show that some files have been locally modified, because nothing has changed yet in the repository. When other people are working on the project with you, there's always the chance that running update will pull some new changes down from the repository and incorporate them into your local files. In that case, you may find it slightly more useful to name which files you want updated. The same principle can be applied to other CVS commands. For example, with diff, you can choose to view the changes one file at a time floss$ cvs diff -c b-subdir/random.c Index: b-subdir/random.c =================================================================== RCS file: /usr/local/cvs/myproj/b-subdir/random.c,v retrieving revision 1.1.1.1 diff -c -r1.1.1.1 random.c *** b-subdir/random.c 1999/04/18 18:18:22 1.1.1.1 --- b-subdir/random.c 1999/04/19 06:09:48 *************** *** 1 **** ! /* A completely empty C file. */ --- 1,8 -- ! /* Print out a random number. */ ! ! #include <stdio.h> ! ! void main () ! { ! printf ("a random number\n"); ! } or see all the changes at once (hang on to your seat, this is going to be a big diff): floss$ cvs -Q diff -c Index: hello.c =================================================================== RCS file: /usr/local/cvs/myproj/hello.c,v retrieving revision 1.1.1.1 diff -c -r1.1.1.1 hello.c *** hello.c 1999/04/18 18:18:22 1.1.1.1 --- hello.c 1999/04/19 02:17:07 *************** *** 4,7 **** --- 4,8 -- main () { printf ("Hello, world!\n"); + printf ("Goodbye, world!\n"); } Index: a-subdir/subsubdir/fish.c =================================================================== RCS file: /usr/local/cvs/myproj/a-subdir/subsubdir/fish.c,v retrieving revision 1.1.1.1 diff -c -r1.1.1.1 fish.c *** a-subdir/subsubdir/fish.c 1999/04/18 18:18:22 1.1.1.1 --- a-subdir/subsubdir/fish.c 1999/04/19 06:08:50 *************** *** 1 **** ! /* A completely empty C file. */ --- 1,8 -- ! #include <stdio.h> ! ! void main () ! { ! while (1) { ! printf ("fish\n"); ! } ! } Index: b-subdir/random.c =================================================================== RCS file: /usr/local/cvs/myproj/b-subdir/random.c,v retrieving revision 1.1.1.1 diff -c -r1.1.1.1 random.c *** b-subdir/random.c 1999/04/18 18:18:22 1.1.1.1 --- b-subdir/random.c 1999/04/19 06:09:48 *************** *** 1 **** ! /* A completely empty C file. */ --- 1,8 -- ! /* Print out a random number. */ ! ! #include <stdio.h> ! ! void main () ! { ! printf ("a random number\n"); ! } Anyway, as you can see from these diffs, this project is clearly ready for prime time. Let's commit the changes to the repository. automatically generated by info2www version 1.2.2.9 |