Almost all of the subcommands of cvs work recursively when you specify a directory as an argument. For instance, consider this directory structure:
$HOME
|
+--tc
| |
+--CVS
| (internal cvs files)
+--Makefile
+--backend.c
+--driver.c
+--frontend.c
+--parser.c
+--man
| |
| +--CVS
| | (internal cvs files)
| +--tc.1
|
+--testing
|
+--CVS
| (internal cvs files)
+--testpgm.t
+--test2.t
If tc is the current working directory, the following is true:
cvs update testing/testpgm.t testing/test2.t
tc
directory
If no arguments are given to update
it will
update all files in the current working directory and
all its subdirectories. In other words, . is a
default argument to update
. This is also true
for most of the cvs subcommands, not only the
update
command.
The recursive behavior of the cvs subcommands can be turned off with the -l option. Conversely, the -R option can be used to force recursion if -l is specified in ~/.cvsrc (see ~/.cvsrc).
$ cvs update -l # Don't update files in subdirectories