Почти все подкоманды CVS работают рекурсивно, если вы укажете в качестве аргумента каталог. Например, представим себе такую структуру каталогов:
$HOME | +--tc | | +--CVS | (служебные файлы CVS) +--Makefile +--backend.c +--driver.c +--frontend.c +--parser.c +--man | | | +--CVS | | (служебные файлы CVS) | +--tc.1 | +--testing | +--CVS | (служебные файлы CVS) +--testpgm.t +--test2.t
Если tc — это текущий рабочий каталог, то верны следующие утверждения:
cvs update testing эквивалентно
cvs update testing/testpgm.t testing/test2.t
cvs update testing man обновляет все файлы в подкаталогах
cvs update . или просто cvs update обновляет все файлы в каталоге tc.
Если команде update не было дано ни одного аргумента, то она обновит все файлы в текущем рабочем каталоге и во всех его подкаталогах. Другими словами, . является аргументом по умолчанию для update. Это также истинно для большинства подкоманд CVS, а не только для команды update.
Рекурсивное поведение подкоманд CVS может быть отключено с помощью ключа командной строки -l, и наоборот, ключ командной строки -R может использоваться для принудительной рекурсии, если -l был указан в ~/.cvsrc.
$ cvs update -l # Не обновлять файлы в подкаталогах