Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
aeimport(1)							   aeimport(1)

	aeimport - import foreign repository into Aegis

	aeimport [ option...  ]	dirname
	aeimport -Help
	aeimport -VERSion

	The aeimport command is	used to	create a new project, and populate it
	by importing a foreign repository (such	as RCS or CVS) without loss of
	project	history.

	Please note: unless you	specify	a version (see the -version option,
	below) this command will default to creating branches to support ver-
	sion 1.0.  If you discovered this too late, all	is not lost: you can
	use the	aenbru(1) command to get rid of	the branches you didn't	want.

	The project directory, under which the project baseline	and history
	and state and change data are kept, will be created at this time.  If
	the -DIRectory option is not given, the	project	directory will be cre-
	ated in	the directory specified	by the default_project_directory field
	of aeuconf(5), or if not set in	current	user's home directory; in ei-
	ther case with the same	name as	the project.

	The project is created with the	current	user and group as the owning
	user and group.	 The current user is an	administrator for the project.
	The project has	no other administrators	(use aena(1) to	add more).

	The project will have all user names found in the history files	(see
	blow) installed	as developers, reviewers and integrators.  This	is
	probably too broad, but	fairly accurately reproduces the wide-open
	permissions found in most repositories,	and you	will want to use
	aerd(1), aerrv(1) and aeri(1) as appropriate to	winnow this list.

	If only	one name is found, the project will be set to "develop-
	ers_may_review = true;"	otherwise it will be false (see	aepattr(5) for
	more information).  Use	aepa(1)	to change this if you want a different

	The project's umask is derived from the	current	user's umask, but mod-
	ified to guarantee that	group members will have	access and that	only
	the project owner will have write access.  In general, it's best of
	the project is not owned by an account with any	other role, as this
	prevents a whole class of "oops, I thought I was somewhere else" er-

	The project's history commands (see aepconf(5) for more	information)
	are set	to those suitable for RCS.  The	build command is set to	"exit
	0"; you	need to	set it to something suitable.  The symbolic link farm
	is turned on.

	The project pointer will be added to the first element of the search
	path, or  if no	path is	set.  If this is inappropriate,	use the	-LI-
	Brary option to	explicitly set the desired location.  See the -LIBrary
	option for more	information.

	Alternatively, unset the AEGIS_PATH environment	variable to add	the
	project	to the global project list.

	You may	specify	the project version in two ways:

	1. The version number may be implicit in the project name, in which
	   case	the version numbers will be stripped off.  For example,	"aeim-
	   port	-p example.1.2"	will create a project called "example" with
	   branch number 1 created, and	sub-branch 2 of	branch 1 created.

	2. The version number may be stated explicitly,	in which case it will
	   be subdivided for branch numbers.  For example, "aeimport -p	exam-
	   ple -version	1.2" will create a project called "example" with
	   branch number 1 created, and	sub-branch 2 of	branch 1 created.

	In each	case, these branches may be named wherever a project name may
	be given, such as "-p example.1" and "-p example-1.2".	The actual
	punctuation character is unimportant.

	You may	have any depth of version numbers you like.  Both methods of
	specifying version numbers may be used,	and they will be combined.  If
	you want no version numbers at all, use	-version with a	single dash as
	the argument, as in "-version -"

	If no version number is	given, either explicitly or implicitly,	ver-
	sion 1.0 is used.

   Project Directory Location
	Please Note: Aegis also	consults the underlying	file system, to	deter-
	mine its notion	of maximum file	size.  Where the file system's maximum
	file size is less than maximum_filename_length,	the filesystem wins.
	This can happen, for example, when you are using the Linux UMSDOS file
	system,	or when	you have an NFS	mounted	an ancient V7 filesystem.
	Setting	maximum_filename_length	to 255 in these	cases does not alter
	the fact that the underlying file systems limits are far smaller (12
	and 14,	respectively).

	If your	development directories	(or your whole project)	is on filesys-
	tems with filename limitations,	or a portion of	the heterogeneous
	builds take place in such an environment, it helps to tell Aegis what
	they are (using	the project config file's fields) so that you don't
	run into the situation where the project builds	on the more permissive
	environments, but fails	with mysterious	errors in the more limited en-

	If your	development directories	are routinely on a Linux UMSDOS
	filesystem, you	would probably be better off setting dos_filename_re-
	quired = true, and also	changing the development_directory_template
	field.	Heterogeneous development with various Windows environments
	may also require this.

	Most file version systems do not operate using change sets.  In	order
	to import such repositories into Aegis it is necessary to "discover"
	these change sets.  The	following steps	are taken:

	1. The directory (dirpath) given on the	command	line, and all directo-
	   ries	below it, are scanned for appropriate files (for example, RCS
	   and CVS use files with a ",v" suffix).  These files are read	to ob-
	   tain	the file's history.
	   If you have been using a non-standard file suffix, aeimport won't
	   be able to find the files.
	   If you have more than one module in your CVS	repository, aeimport
	   doesn't (yet) understand the	CVSROOT/modules	file.  Pointing	aeim-
	   port	at your	whole CVSROOT may produce an unexpectedly large	re-

	2. The history files discovered	in the previous	step are copied	into
	   the location	used by	Aegis.	Unlike some other tools, Aegis has a
	   repository per project, rather than all projects sharing the	same
	   This	also means that	Aegis will not modify the original history
	   files.  In particular, if the import	produces unexpected results,
	   simply remove the project (see aermpr(1) for	more information) and
	   start again.
	   It is not possible to leave all your	history	files under, say,
	   $CVSROOT and	have Aegis point to them.

	3. For each user mentioned in the various file histories, the time
	   stamps are examined to find groups of files which were committed at
	   around the same time.  Files	changed	within 1 minute	of each	other
	   are considered a group.
	   Files change	within one minute, but by different users, are not
	   considered a	group.	This does not usually present a	problem	as de-
	   velopers mostly work	alone.	In rare	cases where developers work
	   together, only one of them does the commit.
	   In some cases the time window may be	too large, and several very
	   small changes may be	seen as	one larger change set.	In practice,
	   this	isn't very common.

	4. Groups of files are stored into the Aegis database as completed
	   changes (i.e. as if aeipass(1) has already run).  The description
	   of the change is the	concatenation of all the unique	comments found
	   attached to the relevant file versions.  The	time stamp used	for
	   the change is the latest time stamp of any file in the group.
	   There are times when	small typographical errors between file	com-
	   ments result	in longer-than-expected	change descriptions.  This can
	   be corrected	with aeca(1) or	tkaeca(1) if desired.  There are also
	   times when the reverse is true: some	files have no comments at all,
	   and the resulting description is less than useful.

	5. Tags	are turned into	delta names by transferring delta names	from
	   the files they are attached to, to the change sets they are at-
	   tached to.  When a tag would	appear to be attached to more than one
	   change, it is attached only to the latest change.
	   In common usage, the	tags serve a similar purpose as	Aegis' delta
	   numbers.  They are all (typically) applied in a single CVS command,
	   in order that a particular release may be recreated later.  How-
	   ever, because each file will	be at a	different version, and each
	   will	have had its latest version included in	various	random change
	   Tags	are used for other things too.	The method given here is sim-
	   ply a guess,	but it's one which works reasonably well.

	Once aeimport has completed importing a	project, you will be able to
	examine	the results using the ael project_history and ael change_de-
	tails commands.	 (See ael(1) for more information.)

	The aeimport program is	far from perfect.  There are a number of known

	o  At this time, there is no support for branching.  (As soon as I
	   figure out how to discern the root of a branch across loosely cou-
	   pled	files, I'll implement it.  Ideas and/or	code contributions

	o  Only	RCS and	SCCS formats are understood at present.	 It should be
	   straight forward to add support for additional formats in the fu-
	   ture.  Only step 1 of the above process requires attention, the
	   rest	is file	format neutral.

	o  There is no support for CVS modules,	and there needs	to be.

	o  You can't specify the time window size used to determine change
	   sets.  Time will tell whether this is necessary, but	it begs	the
	   question: how will you know what window size	you need in order to
	   use the option at all.

	o  You can't import a CVS repository into an existing project.	You
	   may only create a new project from a	CVS repository.

	o  You can't import a remote CVS repository.

	The following options are understood:

	-DIRectory path
		This option may	be used	to specify which directory is to be
		used.  It is an	error if the current user does not have	appro-
		priate permissions to create the directory path	given.	This
		must be	an absolute path.

		Caution: If you	are using an automounter do not	use `pwd` to
		make an	absolute path, it usually gives	the wrong answer.

	-FORmat	name
	   This	option may be use to specify which history format is being im-
	   ported.  The	following formats are understood:

	   RCS	   Release Control System format has been around for quite a
		   while.  It is the format underlying CVS (Concurrent Version
		   System).  This is the default if no format name is speci-
		   Note: you must have RCS installed before you	run aeimport
		   if you use this format, because RCS commands	will be	run
		   during the import process.  The import will fail if RCS is
		   not installed.  You can find	a freeware implementation at,	or a local mirror.

	   SCCS	   Source Code Control System is one of	the earliest Unix ver-
		   sion	systems.  (I'm told this is the	format underlying Bit-
		   Note: you must have SCCS installed before you run aeimport
		   if you use this format, because SCCS	commands will be run
		   during the import process.  The import will fail if SCCS is
		   not installed.  The GNU Compatibly Stupid Source Control
		   (CSSC) is a freeware	implementation of SCCS,	and it may be
		   found at

	-LIBrary abspath
		This option may	be used	to specify a directory to be searched
		for global state files and user	state files.  (See aegstate(5)
		and aeustate(5)	for more information.)	Several	library	op-
		tions may be present on	the command line, and are search in
		the order given.  Appended to this explicit search path	are
		the directories	specified by the AEGIS_PATH environment	vari-
		able (colon separated),	and finally, /usr/local/lib/aegis is
		always searched.  All paths specified, either on the command
		line or	in the AEGIS_PATH environment variable,	must be	abso-

		This option may	be used	to obtain a list of suitable subjects
		for this command.  The list may	be more	general	than expected.

	-Project name
		This option may	be used	to select the project of interest.
		When no	-Project option	is specified, the AEGIS_PROJECT	envi-
		ronment	variable is consulted.	If that	does not exist,	the
		user's $HOME/.aegisrc file is examined for a default project
		field (see aeuconf(5) for more information).  If that does not
		exist, when the	user is	only working on	changes	within a sin-
		gle project, the project name defaults to that project.	 Oth-
		erwise,	it is an error.

		This option may	be used	to obtain more information about how
		to use the aeimport program.

	-VERSion number
		This option may	be used	to specify the version number for the
		project.  Version numbers are implemented as branches.	Use a
		single dash ("-") as the argument if you want no version
		branches created.

	See also aegis(1) for options common to	all aegis commands.

	All options may	be abbreviated;	the abbreviation is documented as the
	upper case letters, all	lower case letters and underscores (_) are op-
	tional.	 You must use consecutive sequences of optional	letters.

	All options are	case insensitive, you may type them in upper case or
	lower case or a	combination of both, case is not important.

	For example: the arguments "-project", "-PROJ" and "-p"	are all	inter-
	preted to mean the -Project option.  The argument "-prj" will not be
	understood, because consecutive	optional characters were not supplied.

	Options	and other command line arguments may be	mixed arbitrarily on
	the command line, after	the function selectors.

	The GNU	long option names are understood.  Since all option names for
	aeimport are long, this	means ignoring the extra leading '-'.  The
	"--option=value" convention is also understood.

	The aeimport command will exit with a status of	1 on any error.	 The
	aeimport command will only exit	with a status of 0 if there are	no er-

	See aegis(1) for a list	of environment variables which may affect this
	command.  See aepconf(5) for the project configuration file's
	project_specific field for how to set environment variables for	all
	commands executed by Aegis.

	aeimport version 4.25.D510
	Copyright (C) 1991, 1992, 1993,	1994, 1995, 1996, 1997,	1998, 1999,
	2000, 2001, 2002, 2003,	2004, 2005, 2006, 2007,	2008, 2009, 2010,
	2011, 2012 Peter Miller

	The aeimport program comes with	ABSOLUTELY NO WARRANTY;	for details
	use the	'aeimport -VERSion License' command.  This is free software
	and you	are welcome to redistribute it under certain conditions; for
	details	use the	'aeimport -VERSion License' command.

	Peter Miller   E-Mail:
	/\/\*		  WWW:

Reference Manual		     Aegis			   aeimport(1)


Want to link to this manual page? Use this URL:

home | help