-Integrate_Begin(1) -Integrate_Begin(1) NAME -Integrate_Begin - begin integrating a change SYNOPSIS -Integrate_Begin change-number [ option... ] -Integrate_Begin -List [ option... ] -Integrate_Begin -Help DESCRIPTION The -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 being integrated state. awaiting integration | integrate|integrate begin |begin undo | being integrated A (logical) copy of the baseline is created in(1,8) an integration directory and the the files of the change are added to the integration directory. The time(1,2,n) stamps of files copied from the baseline are preserved, time(1,2,n) stamps on the files copied from the development directory are all set(7,n,1 builtins) to the time(1,2,n) of the beginning of the integration. The ' -Change_Direc- tory' command may be used to locate the integration 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(5,8) pipes, etc) will not be reproduced in(1,8) 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(1,n) 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 create them as part of the build. The link_integration_directory field of the project configuration file(1,n) (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(3,7) with an error(8,n) if(3,n) this copy operation fails, e.g. by running out of disk space. If this should happen, the change will remain in(1,8) 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 -Integrate_Begin command for the project. If an integration is subsequently aborted with either the -Inte- grate_Begin_Undo or -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 integration directory will be in(1,8) the project directory, and named(5,8) for the delta number. Notification On successful completion of this command, the integration_begin_command field of the project config(1,5) file(1,n) is run, if(3,n) set. See aepconf(5) for more information. Minimum Integrations provides a minimum integration capability which may be used for vari- ous reasons. The term(5,7) minimum may be a bit counter intuitive. One might think it means to the minimum amount of work, however it actually means use a minimum of files from the baseline in(1,8) populating the delta directory. This normally leads to actually building everything in(1,8) the project from sources and, as such, might be considered the most robust of builds. Note that any change which removes a file(1,n), whether by aerm, aemv or aemt, results in(1,8) an implicit minimum integration. This is intended to ensure nothing in(1,8) 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 con- fidence, or lack thereof, in(1,8) the project's DMT (Dependency Maintenance 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 pro- duced. 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(2,7) the need for a minimum integration 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(1,2,n) to fully populate the delta directory. A minimum integration only copies those files under control, skipping all ``produced'' files. In the case where a file(1,n) 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. OPTIONS The following options are understood: RECOMMENDED ALIAS The recommended alias for this command is csh% alias aeib ' -ib \!* -v' sh$ aeib(){ -ib "$@" -v} ERRORS It is an error(8,n) if(3,n) the change is not in(1,8) the awaiting integration state. It is an error(8,n) if(3,n) the current user is not an integrator of the project. It is an error(8,n) if(3,n) there is an integration in(1,8) progress for the project. It is an error(8,n) if(3,n) the current user developed the change and the project is configured to disallow developers to integrate their own changes (default). It is an error(8,n) if(3,n) the current user reviewed the change and the project is configured to disallow reviewers to integrate their such changes (default). 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(1,n) format Reference Manual -Integrate_Begin(1)