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

FreeBSD Manual Pages

  
 
  

home | help
aegis -Integrate_Begin(1)   General Commands Manual  aegis -Integrate_Begin(1)

NAME
	aegis integrate	begin -	begin integrating a change

SYNOPSIS
	aegis -Integrate_Begin change-number [ option...  ]
	aegis -Integrate_Begin -List [ option...  ]
	aegis -Integrate_Begin -Help

DESCRIPTION
	The aegis -Integrate_Begin command is used to begin the	integration of
	a change into the baseline of a	project.

	The change will	advance	from the awaiting integration state to the be-
	ing  integrated	 state.	  boxwid = 1 down S4: box "awaiting" "integra-
	tion" arrow " integrate" ljust " begin"	ljust S5: box  "being"	"inte-
	grated"	 move  to S5.w T4: spline -> left 0.5 then up 1	then to	S4.w "
	integrate" ljust " begin" ljust	" undo"	ljust at T4.c -	(0.5,0)

	A (logical) copy of the	baseline is created in an  integration	direc-
	tory  and the the files	of the change are added	to the integration di-
	rectory.  The time stamps of files copied from the baseline  are  pre-
	served,	time stamps on the files copied	from the development directory
	are  all  set  to  the	time of	the beginning of the integration.  The
	'aegis -Change_Directory' command may be used to locate	 the  integra-
	tion directory.	 The change will be assigned to	the current user.

	Please	note  that  only  regular  files and symbolic links are	copied
	(linked) from the baseline to the  integration	directory.   This  has
	some implications:

	 Special  files (devices, named pipes,	etc) will not be reproduced in
	  the integration directory; you will need to create these as part  of
	  the build.

	 If  the case of the -minimum option (see below), only	primary	source
	  files	are copied (linked) across.  Derived files (including symbolic
	  links) are expected to be created as part of the build.

	 If the case of the -minimum option,  directories  are	 only  created
	  when required	to hold	a file which satisfies the above criteria.  If
	  you  need  special  empty  directories, or directories which contain
	  only special files, or only contain derived files, you need to  cre-
	  ate them as part of the build.

	The link_integration_directory field of	the project configuration file
	(see aepconf(5)	for more information) controls whether the copy	of the
	baseline is done by copying the	files or by creating hard links	to the
	files.	The hard links are just	one of the constraints on the location
	of  the	integration directory.	The integrate begin will abort with an
	error if this copy operation fails, e.g. by running out	of disk	space.
	If this	should happen, the change will remain in the awaiting integra-
	tion state, and	the integration	directory will be removed.

	The change will	be assigned a delta number.  Delta numbers are	incre-
	mented	once  for each aegis -Integrate_Begin command for the project.
	If an integration is subsequently aborted with either the aegis	-Inte-
	grate_Begin_Undo or aegis -Integrate_FAIL command,  the	 delta	number
	will not be re-used.

	It  is	not possible to	choose the integration directory, as there are
	many constraints upon it, including the	fact that it must  be  on  the
	same  device as	the baseline directory,	and that many UNIX implementa-
	tions don't allow renaming directories up and down the trees.  The in-
	tegration directory will be in the project directory,  and  named  for
	the delta number.

   Notification
	On  successful	completion  of	this  command, the integration_begin_-
	command	field of the project config file is run,  if  set.   See  aep-
	conf(5)	for more information.

Minimum	Integrations
	Aegis  provides	a minimum integration capability which may be used for
	various	reasons.  The term minimum may be  a  bit  counter  intuitive.
	One might think	it means to the	minimum	amount of work,	however	it ac-
	tually	means  use  a minimum of files from the	baseline in populating
	the delta directory.  This normally leads to actually building	every-
	thing  in  the	project	from sources and, as such, might be considered
	the most robust	of builds.

	Note that any change which removes a file, whether by  aerm,  aemv  or
	aemt, results in an implicit minimum integration.  This	is intended to
	ensure nothing in the project references the removed file.

	A project may adopt a policy that a product release should be based on
	a  minimum  integration.   Such	 a policy may be a reflection of local
	confidence, or lack thereof, in	the project's DMT (Dependency  Mainte-
	nance  Tool)  or  build	 system.   Or  it may be based on a validation
	process	wishing	to make	a simple statement on how the released package
	was produced.

	Another, more transient, reason	a to  require  a  minimum  integration
	might  be when upgrading a third party library,	compiler or maybe even
	OS level.  Any of these	events would signal the	need for a minimum in-
	tegration to ensure everything is rebuilt using	the new	resources.

	The cost of a minimum integration varies according to type and size of
	the project.  For very large projects, especially those	building large
	numbers	of binaries, the cost can be large.   However  large  projects
	also  require  significant time	to fully populate the delta directory.
	A minimum integration only copies those	 files	under  Aegis  control,
	skipping  all  "produced"  files.  In the case where a file upon which
	everything depends is changed, everything will be built	anyway so  the
	copy  of  the already built files is a waste of	time.  This means that
	sometimes a minimum can	be as cheap as a normal	integration.

   Change Set Attributes
	The follwoing user-defined change set attributes are understood:

	integrate-begin-hint
		If this	is set to "minimum" or "maximum", it is	 as  if	 these
		options	 appeared on the command line.	Only consulted if nei-
		ther -minimum nor -maximum appear on the command line.

	All other user defined change set attributes are ignored.

OPTIONS
	The following options are understood:

	-Change	number
		This option may	be used	to specify a particular	change	within
		a  project.   See  aegis(1) for	a complete description of this
		option.

	-Help
		This option may	be used	to obtain more information  about  how
		to use the aegis program.

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

	-MAXimum
		This option may	be used	to cause all files to be  copied  into
		the  integration  directory.   This is the default, unless the
		change requires	the deletion of	a file.

	-MINImum
		This option may	be used	to cause only the source files	to  be
		copied into the	integration directory.	The default is to copy
		all files, unless the change requires the deletion of a	file.

	-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.

	-REAson	text
		This option may	be used	to attach a comment to the change his-
		tory  generated	 by this command.  You will need to use	quotes
		to insulate the	spaces from the	shell.

	-TERse
		This option may	be used	to cause listings to produce the  bare
		minimum	 of  information.   It	is  usually  useful  for shell
		scripts.

	-Verbose
		This option may	be used	to cause aegis to produce more output.
		By default aegis only produces output on  errors.   When  used
		with the -List option this option causes column	headings to be
		added.

	-Wait	This  option may be used to require Aegis commands to wait for
		access locks, if they cannot  be  obtained  immediately.   De-
		faults	to  the	 user's	lock_wait_preference if	not specified,
		see aeuconf(5) for more	information.

	-No_Wait
		This option may	be used	to require Aegis commands  to  emit  a
		fatal  error  if  access locks cannot be obtained immediately.
		Defaults to the	user's lock_wait_preference if not  specified,
		see aeuconf(5) for more	information.

	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
	aegis are long,	this means ignoring the	extra leading '-'.  The	"--op-
	tion=value" convention is also understood.

RECOMMENDED ALIAS
	The recommended	alias for this command is
	csh%	alias aeib 'aegis -ib \!* -v'
	sh$	aeib(){aegis -ib "$@" -v}

ERRORS
	It is an error if the change is	not in the awaiting integration	state.
	It is an error if the  current	user  is  not  an  integrator  of  the
	project.
	It is an error if there	is an integration in progress for the project.
	It  is	an  error  if  the  current  user developed the	change and the
	project	is configured to disallow developers to	 integrate  their  own
	changes	(default).
	It is an error if the current user reviewed the	change and the project
	is  configured	to  disallow reviewers to integrate their such changes
	(default).

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

ENVIRONMENT VARIABLES
	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.

SEE ALSO
	aeb(1)	build a	change

	aecd(1)	change directory

	aeibu(1)
		reverse	the aeib command

	aeifail(1)
		fail integration of a change

	aeintegratq(1)
		Automate the integration queue.

	aeipass(1)
		pass integration of a change

	aeni(1)	add new	integrators to a project

	aerpass(1)
		pass review of a change

	aet(1)	run tests

	aeuconf(5)
		user configuration file	format

COPYRIGHT
	aegis 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 aegis program comes	with ABSOLUTELY	NO WARRANTY; for  details  use
	the  'aegis  -VERSion License' command.	 This is free software and you
	are welcome to redistribute it under certain conditions;  for  details
	use the	'aegis -VERSion	License' command.

AUTHOR
	Peter Miller   E-Mail:	 pmiller@opensource.org.au
	/\/\*		  WWW:	 http://miller.emu.id.au/pmiller/

Reference Manual		     Aegis	     aegis -Integrate_Begin(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=aeib&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help