Seth Woolley's Man Viewer

aeib(1) - -Integrate_Begin - begin integrating a change - man 1 aeib

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

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

References for this manual (incoming links)