# Three different line formats are valid:
#	key	-a    aliases...
#	key [options] directory
#	key [options] directory files...
#
# Where "options" are composed of:
#	-i prog		Run "prog" on "cvs commit" from top-level of module.
#	-o prog		Run "prog" on "cvs checkout" of module.
#	-e prog		Run "prog" on "cvs export" of module.
#	-t prog		Run "prog" on "cvs rtag" of module.
#	-u prog		Run "prog" on "cvs update" of module.
#	-d dir		Place module in directory "dir" instead of module name.
#	-l		Top-level directory only -- do not recurse.
#
# NOTE:  If you change any of the "Run" options above, you'll have to
# release and re-checkout any working directories of these modules.
#
# And "directory" is a path to a directory relative to $CVSROOT.
#
# The "-a" option specifies an alias.  An alias is interpreted as if
# everything on the right of the "-a" had been typed on the command line.
#
# You can encode a module within a module by using the special '&'
# character to interpose another module into the current module.  This
# can be useful for creating a module that consists of many directories
# spread out over the entire source repository.

# Block access to CVS hogs
#world		-a denied___checkout_of_world_takes_too_long
#.		-a denied___checkout_of_world_takes_too_long

# self referencing modules
project1 project1

# checkout docs in flattened structure
docs		-d docs common/docs
macros common/macros

# include docs with project
project2		project2 &docs
# only project2
project2-only project2

# a use of alias
project3-src  project3/src
project3-src_file -a project3-src/file.c project3-src/file.h
project3-sub  project3/sub &project3-src_file

# embeddings
project4 project4 &macros
project5-project4 -d extensions/project4 project4
project5 project5 &project5-project4 &macros

# using -d to build a project from other projects
project6-dirA -d dirA project6/A
project6-dirB -d dirB project6/B
project6 &project6-dirA &project6-dirB

# using aliases to provide packaging
project7-common -a project7/common
project7-pc -a project7-common project7/pc
project7-linux -a project7-common project7/linux

# simple use of module alias
project8-alias -a project8 common