.













                              Aegis

                   A Project Change Supervisor




                        Reference Manual







                          Peter Miller

                    _m_i_l_l_e_r_p_@_c_a_n_b_._a_u_u_g_._o_r_g_._a_u


































.












This document describes Aegis version 4.20
and was prepared 13 March 2005.






This document describing the Aegis program, and the Aegis program
itself, are
Copyright (C) 1991, 1992, 1993, 1994,  1995,  1996,  1997,  1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights
reserved.

This program is free software; you  can  redistribute  it  and/or
modify  it  under  the terms of the GNU General Public License as
published by the Free Software Foundation; either  version  2  of
the License, or (at your option) any later version.

This  program  is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the  implied  warranty  of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foun-
Read Me(Aegis)                                                  Read Me(Aegis)



dation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.

NNAAMMEE
        aegis - project change supervisor
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        _A_e_g_i_s is distributed under the terms of the GNU General Public
        License.  See the LICENSE section, below, for more details.

        aaeeggiiss (ee.j.iz) _n_._, a protection, a defense.

DDEESSCCRRIIPPTTIIOONN
        _A_e_g_i_s is a CASE tool with a difference.  In the spirit of the UNIX
        Operating System, _A_e_g_i_s is a small component designed to work with
        other programs.

        Many CASE systems attempt to provide everything, from bubble charts to
        source control to compilers.  Users are trapped with the components
        supplied by the CASE system, and if you don't like one of the
        components (it may be too limited, for instance), then that is just
        tough.

        In contrast, UNIX provides many components of a CASE system -
        compilers, editors, dependency maintenance tools (such as make),
        source control tools (such as RCS).  You may substitute the tool of
        your choice if you don't like the ones supplied with the system - gcc,
        jove, cake, to name just a few.  _A_e_g_i_s adds to this list with software
        configuration management, and true to UNIX philosophy, _A_e_g_i_s does not
        dictate the choice of any of the other tools (although it may stretch
        them to their limits).

        Enough hype, what is it that _A_e_g_i_s does?  Just what is software
        configuration management?  This question is sufficiently broad as to
        require a book in answer.  In essence, _A_e_g_i_s is a project change
        supervisor.  It provides a framework within which a team of developers
        may work on many changes to a program independently, and _A_e_g_i_s
        coordinates integrating these changes back into the master source of
        the program, with as little disruption as possible.  Resolution of
        contention for source files, a major headache for any project with
        more than one developer, is one of _A_e_g_i_s_' major functions.

        It should be noted that _A_e_g_i_s is a developer's tool, in the same sense
        as make or RCS are developer's tools.  It is not a manager's tool - it
        does not provide progress tracking or manage work allocation.

BBEENNEEFFIITTSS
        So why should you use _A_e_g_i_s?

        _A_e_g_i_s uses a particular model of the development of software projects.
        This model has a master source (or baseline) of a project, and a team
        of developers creating changes to be made to this baseline.  When a
        change is complete, it is integrated with the baseline, to become the
        new baseline.  Each change must be atomic and self-contained, no
        change is allowed to cause the baseline to cease to work.  "Working"
        is defined as passing it's own tests.  The tests are considered part
        of the baseline.  _A_e_g_i_s provides support for the developer so that an
        entire copy of the baseline need not be taken to change a few files,
        only those files which are to be changed need to be copied.

        In order to ensure that changes are unable to cause the baseline to
        cease to work, _A_e_g_i_s mandates that changes be accompanied by at least
        one test, and that all such tests be known to complete successfully.
        These steadily accumulated tests form an ever increasing regression
        test suite for all later changes.  There is also a mandatory review
        stage for each change to the baseline.  While these requirements may
        be relaxed per-change or even per-project, doing so potentially
        compromises the "working" definition of the baseline.

        The win in using _A_e_g_i_s is that there are _O_(_n_) interactions between
        developers and the baseline.  Contrast this with a master source which
        is being edited directly by the developers - there are _O_(_n_!_)
        interactions between developers - this makes adding "just one more"
        developer a potential disaster.

        Another win is that the project baseline always works.  Always having
        a working baseline means that a version is always available for
        demonstrations, or those "pre-release snapshots" we are always forced
        to provide.

        The above advantages are all very well - for management types.  Why
        should Joe Average Programmer use _A_e_g_i_s?  Recall that RCS provides
        file locking, but only for one file at a time.  _A_e_g_i_s provides the
        file locking, atomically, for the set of files in the change.  Recall
        also that RCS locks the file the instant you start editing it.  This
        makes popular files a project bottleneck.  _A_e_g_i_s allows concurrent
        editing, and a resolution mechanism just before the change must be
        integrated, meaning fewer delays for J.A.Programmer.

        Aegis also has strong support for geographically distributed
        development.  It supports both push and pull models, and many
        distribution topologies.  Aegis' normal development process is used to
        validate received change sets before committing them.

AARRCCHHIIVVEE SSIITTEE
        The latest version of _A_e_g_i_s is available by HTTP from:

                URL:    http://www.canb.auug.org.au/~millerp/
                File:   aegis.html          # the Aegis page
                File:   aegis.4.20.README   # Description, from tar file
                File:   aegis.4.20.lsm      # Description, in LSM format
                File:   aegis.4.20.ae       # the complete source, aedist format
                File:   aegis.4.20.spec     # RedHat package specification
                File:   aegis.4.20.tar.gz   # the complete source

        This directory also contains a few other pieces of software written by
        me.  Some are referred to in the _A_e_g_i_s documentation.  Please have a
        look if you are interested.

   MMiirrrroorrss
        See http://www.canb.auug.org.au/~millerp/ for a list of mirror sites.

        Aegis is also carried by metalab.unc.edu in its Linux archives.  You
        will be able to find Aegis on any of its mirrors.

                URL:    ftp://metalab.unc.edu/pub/Linux/devel/vc/
                File:   aegis.4.20.README   # Description, from tar file
                File:   aegis.4.20.lsm      # Description, in LSM format
                File:   aegis.4.20.spec     # RedHat package specification
                File:   aegis.4.20.ae       # the complete source, aedist format
                File:   aegis.4.20.tar.gz   # the complete source
        This site is extensively mirrored around the world, so look for a copy
        near you (you will get much better response).

MMAAIILLIINNGG LLIISSTT
        A mailing list has been created so that users of _A_e_g_i_s may exchange
        ideas about how to use _A_e_g_i_s.  Discussion may include, but is not
        limited to: bugs, enhancements, and applications.  The list is not
        moderated.

        The address of the mailing list is
                aegis-users@auug.org.au
        Please DO NOT attempt to subscribe by sending email to this address.
        It is for content only.

   HHooww TToo SSuubbssccrriibbee
        To subscribe to this mailing list, visit the Aegis-users mailing list
        page (http://www.auug.org.au/mailman/listinfo/aegis-users) and go
        through the ssuubbssccrriibbee dialogue.

   AArrcchhiivvee
        The mailing list is archived at eGroups.  The URL is
        http://www.egroups.com/list/aegis-users/info.html

   NNoo FFiilleess BByy EEMMaaiill
        The software which handles this mailing list CANNOT send you a copy of
        _A_e_g_i_s.  Please use FTP or ftp-by-email, instead.

BBUUIILLDDIINNGG
        Instructions on how to build and test _A_e_g_i_s are to be found in the
        _B_U_I_L_D_I_N_G file included in this distribution.

SSOOMMEE HHIISSTTOORRYY
        The idea for _A_e_g_i_s did not come full-blown into my head in the shower,
        as some of my programs do, but rather from working in a software shop
        which used a simplistic form of something similar.  That system was
        held together by chewing-gum and string, it was written in a
        disgusting variant of Basic, and by golly the damn thing worked
        (mostly).  _A_e_g_i_s is nothing like it, owes none of its code to that
        system, and is far more versatile.  It turns out that the system used
        is nothing new, and is described in many SCM textbooks; it is the
        result of systematically resolving development issues for large-ish
        teams.

        Since that company decided to close down our section (the company was
        under attack by a hostile takeover bid) we all moved on simultaneously
        (all 60 of us), sometimes working together, and sometimes not, but
        always keeping in touch.  With suggestions and conversations with some
        of them early in 1990, the manual entries for _A_e_g_i_s took shape, and
        formed most of the design document for _A_e_g_i_s.

        Since getting the first glimmerings of a functional _A_e_g_i_s late in 1990
        it is increasingly obvious that I never want to be without it ever
        again.  All of my sources that I modify are instantly placed under
        _A_e_g_i_s, as is anything I distribute.  All code I write for myself, and
        all new code I write for my employer, goes under _A_e_g_i_s.  Why?  Because
        it has fewer bugs!

        Example: one of the sources I carry with me from job to job is "cook",
        my dependency maintenance tool.  Cook had existed for 3 years before
        _A_e_g_i_s appeared on the scene, and I used it daily.  When I placed cook
        under _A_e_g_i_s, I found 6 bugs!  Since then I have found a few more.  Not
        only are there now fewer bugs, but they never come back, because the
        regression test suite always grows.

   BBrraanncchhiinngg
        In 1997 the full branching support was released (it took nearly 18
        months to retro-fit.  The underlying data structures for projects and
        change sets need to be merged.  While I noticed back in 1990 that they
        were very similar, it wasn't until branch support design was well
        underways that they should have been the same  data structure from the
        beginning.

   GGeeooggrraapphhiiccaallllyy DDiissttrriibbuutteedd DDeevveellooppmmeenntt
        In 1999 a conversation on the aegis-users mailing list resulted in the
        creation of _a_e_d_i_s_t, a program which packages and unpackages Aegis
        changes so they can be sent by e-mail, or WWW or whatever.  With 20:20
        hindsight, this could have been done way back in 1991, because the
        basic idea builds on Aegis change process model.

WWiinnddoowwss NNTT
        Aegis depends on the underlying security provided by the operating
        system (rather than re-invent yet another security mechanism).
        However, in order to do this, Aegis uses the POSIX _s_e_t_e_u_i_d system
        call, which has no direct equivalent on Windows NT.  This makes
        porting difficult.  Single-user ports are possible (_e_._g_. using
        Cygwin), but are not usually what folks want.

        Compounding this is the fact that many sites want to develop their
        software for both Unix and Windows NT simultaneously.  This means that
        the security of the repository needs to be guaranteed to be handled in
        the same way by both operating systems, otherwise one can act as a
        ``back door'' into the repository.  Many sites do not have the same
        users and permissions (sourced from the same network register of
        users) on both Unix and Windows NT, making the mapping almost
        impossible even if the security models did actually correspond.

        Most sites using Aegis and Windows NT together do so by running Aegis
        on the Unix systems, but building and testing on the NT systems.  The
        work areas and repository are accessed via Samba or NFS.

LLIICCEENNSSEE
        _A_e_g_i_s is free software; you can redistribute it and/or modify it under
        the terms of the GNU General Public License as published by the Free
        Software Foundation; either version 2 of the License, or (at your
        option) any later version.

        _A_e_g_i_s is distributed in the hope that it will be useful, but WITHOUT
        ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
        FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
        for more details.

        You should have received a copy of the GNU General Public License
        along with this program; if not, write to the Free Software
        Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.

        It should be in the _L_I_C_E_N_S_E file included in this distribution.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/

RREELLEEAASSEE NNOOTTEESS
        For excruciating detail, and also acknowledgments of those who
        generously sent me feedback, please see the _e_t_c_/_C_H_A_N_G_E_S_._*  files
        included in this distribution.

   UUppggrraaddiinngg
        In general, all the machines on your network need to be running the
        same release of Aegis.  While the database format is backwards
        compatible, it is rarely forwards compatible in the face of new
        capabilities.

   VVeerrssiioonn 44..2200 ((2288--JJaann--22000055))
        PPlleeaassee NNoottee:: Users are advised to check the history command settings
        in their project configuration files.  With the advent of file UUIDs,
        the history mechanism now decouples source file names from history
        file names.  In particular, the assumption that the history file
        basename is the same as the source file basename is no longer true.
        Correct settings may be found in the _l_i_b_/_c_o_n_f_i_g_._e_x_a_m_p_l_e_/ directory of
        the source distribution.

        * The defaulting rules for the change number (if none was specified on
        the command line) have been altered. the current directory now takes
        precedence over the "only one" rule.  This seems to meet user
        expectations better.

        * A bug has been fixed in the _a_e_c_v_s_s_e_r_v_e_r(1) command which caused to
        to fail when accessed by some clients.

        * A bug has been fixed which caused many of the programs to leave
        temporary files behind.

        * A bug has been fixed in the _a_e_d_i_s_t _-_s_e_n_d _-_e_n_t_i_r_e_-_s_o_u_r_c_e command
        where it would hang for some cases.  (Actually, it would dump core
        after using up all available swap space on an infinite recursion).

        * A bug has been fixed in the _a_e_d_i_s_t command (and other places) where
        the open of the project configuration file could fail, due to not
        properly reconstructing in historical circumstances.

        * A bug has been fixed in the integration build which was removing
        files it should not, for _d_u_r_i_n_g___b_u_i_l_d___o_n_l_y _= _t_r_u_e work area styles.

        * The _a_e_b command now complains _m_u_c_h less about "directory not empty"
        when using the link farm.

        * A bug has been fixed in the _a_e_t_a_r _-_s_e_n_d _-_e_n_t_i_r_e_-_s_o_u_r_c_e command where
        some files were missing when asking for a complete set of historical
        sources.

        * A bug has been fixed in the _a_e_d_i_s_t _-_s_e_n_d _-_e_n_t_i_r_e_-_s_o_u_r_c_e where some
        files were zero length when asking for a complete set of historical
        sources.

        * A bug in _a_e_d_i_s_t(1) has been fixed, it was forcing regression test on
        the receiving side even if the change set does not require it and
        _d_e_f_a_u_l_t___t_e_s_t___e_x_e_m_p_t_i_o_n was set to true.  It was annoying especially if
        the test suite take a long time to run completely.

        * Some bugs have been fixed in _a_e_d_i_f_f(1) which caused it to mis-parse
        the command line in some cases, and it was also barfing on the
        expected exit status 1 when an actual difference was found.

        * A bug has been fixed in the _a_e_c_p_u(1), _a_e_m_t_u(1), _a_e_m_v_u(1), _a_e_n_f_u(1),
        _a_e_n_t_u(1) and _a_e_r_m_u(1) commands. They were not repairing the symlinks
        (_e_t_c) required by the _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e settings.

        * A bug has been fixed in the _C_h_a_n_g_e___F_i_l_e_s listing; it was not showing
        the locked-by information.

        * A bug has been fixed in the code which updates the development
        directory symlinks.  It was failing to make all the directories
        required.

        * A bug has been fixed in the _a_e_d_i_s_t _-_s_e_n_d _-_e_n_t_r_i_e_-_s_o_u_r_c_e command,
        where it would segfault in some cases.

        * A bug has been fixed in reading plain _d_i_f_f(1) format patches.  This
        was particularly obvious because _a_e_a_n_n_o_t_a_t_e(1) uses this form of diff
        by default.

        * A bug has been fixed in _a_e_g_e_t(1) where it was showing removed source
        files as available for download.

        * A bug has been fixed in _a_e_g_e_t(1) where it produced invalid output if
        the SCRIPT_NAME environment was not set.

        * A bug has been fixed in _a_e_g_e_t(1) where it would sometimes ignore
        modifiers.  This was particularly noticable in the download pages.

        * A bug has been fixed in the _a_e_i_m_p_o_r_t(1) command.  It was using the
        old work area style configuration file parameters, instead of the new
        _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e settings.

        * A memory leak has been fixed in the symbol table code.

        * A bug has been fixed in the project_file_find_by_uuid function.  In
        some cases it would SEGFAULT, particularly once the memory leak in the
        symbol table code was fixed.

        * Several build problems have been fixed.

        * The _a_e_i_n_t_e_g_r_a_t_q(1) command has a new -loop _o_p_t_i_o_n_s_, _w_h_i_c_h _c_a_u_s_e_s _i_t
        _t_o _k_e_e_p _p_r_o_c_e_s_s_i_n_g _c_h_a_n_g_e_s _t_h_a_t _b_e_c_o_m_e _a_v_a_i_l_a_b_l_e _w_h_i_l_e _i_t _i_s _r_u_n_n_i_n_g_.

        * The _a_e_t(1) command has a new -sugest-limit option which runs as many
        regression tests as possible (from most relevant to least relevant)
        but stops after the given number of minutes.  This is a way for
        running the most relevant tests in a limited time.  For example, this
        option could be used if a project has so many integrations in a day
        that it can only afford 20 minutes of integration testing for each
        one.

        * The _a_e_d(1) man page has been updated to better describe the
        behaviour around the merge command.

        * The _a_e_t_a_r _-_s_e_n_d command now accepts an -include-build option that
        also add build files, registered with _a_e_g_i_s _-_n_e_w_-_f_i_l_e _-_b_u_i_l_d, to the
        ouput archive.  A -not-include-build option is also accepted.

        * The _a_e_t_a_r _-_r_e_c_e_i_v_e command now avoids copying build files from the
        baseline because this operation is forbidden and the error stops the
        processing.

        * There is a new _$_{_C_h_a_n_g_e___A_t_t_r_i_b_u_t_e_} substitution, which is replaced
        by the values of the change attributes named.

        * The history recapitulation code (project_file_roll_forward) now
        indexes by UUID rather than by file name (with backwards compatibility
        for UUID-less repositories).  The user visable result is that file
        history reports and listings now accurately track renames.

        * The _a_e_t _-_n_o_p_e_r_s_e_v_e_r_e option now also stops for _n_o _r_e_s_u_l_t as well as
        _f_a_i_l.

        * The aedist --receive command now understands file UUIDs.  This means
        that it will operate on the correct file even when one or the other
        repository has renamed the file.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command has been enhanced to perform file merges
        if necessary.

        * There is a new _a_e_d_i_s_t _-_r_e_p_l_a_y option.  When used in with an _a_e_g_e_t(1)
        server, it can be used to synchronize two repositories.  The _a_e_d_i_s_t
        _-_m_i_s_s_i_n_g option may be used to show what would be downloaded.

        * The _a_e_f_a(1) command, with the -edit option, now shows you the
        content type, rather than adding it silently.

        * There is a new _a_e_d_i_f_f _-_-_c_o_m_m_a_n_d option, allowing you to specify the
        command you want to use to display the difference.  For example, you
        could use _t_k_d_i_f_f(1) or _m_g_d_i_f_f(1) to display the change graphically.

        * The _a_e_d_i_f_f(1) command now adds labels when it is producing a context
        or unified diff output.

        * There is a new optional _r_e_v_i_e_w___p_o_l_i_c_y___c_o_m_m_a_n_d field in the project
        confioguration file.  This allows for customised review policies for
        each project, including multiple reviewers and specific reviewers for
        portions of the sources.

        * There is a new ${Change_Reviewer_List} substitution, which is
        replaced by a space separated list of reviewers of the current change,
        since the last develop end. This is of particular use to the _r_e_v_i_e_w___-
        _p_o_l_i_c_y___c_o_m_m_a_n_d field of the project configuartion file.

        * There is a new ${Change_Developer_List} substitution, which is
        replaced by a space separated list of all the developers of the
        current change.

        * There is a new ${quoted_email_address} substitution, which replaces
        it arguments with the email addresses of the names users.  See
        _a_e_s_u_b(5) for more information.

        * The notification scripts have been updated to use the new ${quoted-
        email-address} substitution.

        * The remaining _a_e_g_i_s_._c_g_i(1) functions have been reproduced in
        _a_e_g_e_t(1).  The _a_e_g_i_s_._c_g_i(1) script is now deprecated.

        * When the UUID of a change is cleared it (because some operation on
        the change set invalidates it) is saved in a change attribute named
        _o_r_i_g_i_n_a_l_-_U_U_I_D.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command is now able to use the original-UUID
        attribute of the incoming change set to select the delta to merge
        with.

        * The "path unrelated" error message has been updated to make it more
        informative.

        * All attribute names (project, change and file) are now case-
        insensitive.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command has been enhanced to allow you to select
        the branch of the delta to merge with.

        * Several classes within the source have been refactored.

   VVeerrssiioonn 44..1199 ((3300--SSeepp--22000044))
        PPlleeaassee NNoottee:: Users are advised to check the history command settings
        in their project configuration files.  With the advent of file UUIDs,
        the history mechanism now decouples source file names from history
        file names.  In particular, the assumption that the history file
        basename is the same as the source file basename is no longer true.
        Correct settings may be found in the _l_i_b_/_c_o_n_f_i_g_._e_x_a_m_p_l_e_/ directory of
        the source distribution.

        * There is a new _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field of the project
        configuration file.  This allows CVS-style and Arch-style work areas,
        in addition to the BCS-style and viewpath work areas already
        supported.  These new work area styles permit many existing projects
        to use Aegis with no change to their build systems.  The libsndfile
        and OpenLDAP projects, for example, have been imported and built
        without modification.  See _a_e_p_c_o_n_f(5) and the _D_e_p_e_n_d_e_n_c_y _M_a_i_n_t_e_n_a_n_c_e
        _T_o_o_l chapter of the User Guide for more information.

        * There is a new _a_e_d_i_f_f(1) command, which may be used to obtain a
        _d_i_f_f(1) listing of a file for different deltas.

        * There is a new _a_e_p_r_o_m_p_t_c_m_d(1) command, used with bash's
        PROMPT_COMMAND environment variable.  It can be used to obtain a
        colored prompt, simulating the process described in Kent Beck's book
        _T_e_s_t _D_r_i_v_e_n _D_e_v_e_l_o_p_m_e_n_t.

        * There is a new _s_i_g_n_e_d___o_f_f___b_y field of the project configuration
        file.  Set it to true if you want "Signed-off-by" lines appended to
        change set descriptions as the changes pass through the Aegis process.
        The _a_e_d_e(1) and _a_e_r_p_a_s_s(1) commands now understand two new --ssiiggnneedd--
        ooffff--bbyy and --nnoo--ssiiggnneedd--ooffff--bbyy options, to override the project setting.
        The _a_e_d_i_s_t _-_s_e_n_d and _a_e_p_a_t_c_h _-_s_e_n_d commands also understand the new
        --ssiiggnneedd--ooffff--bbyy option, to add the "Signed-off-by" line to the outgoing
        change set description.  Conforming to: http://www.ussg.iu.edu/-
        hypermail/linux/kernel/0405.2/1301.html and http://www.osdl.org/-
        newsroom/press_releases/2004/2004_05_24_dco.html

        * The _a_e_t(1) command has been enhanced to allow integrators to run
        specific tests.

        * The _a_e_s_u_b(1) command can now read the text to be substituted from a
        file or standard input.

        * It is now possible to use the project-specific attributes to specify
        environment variables to be set for commands executed by Aegis.  This
        can be used to set a predictable PATH, for example.

        * It is now possible to customize the _a_e_g_e_t(1) web interface using
        project specific attributes.

        * The _a_e_l(1) command and the _a_e_g_e_t(1) web interface now have file
        inventory pages, for the project file inventory and the change file
        inventory.

        * There is a new "change set inventory" listing available via the
        _a_e_l(1) command and the _a_e_g_e_t(1) web interface, which lists changes and
        their corresponding UUIDs, and links to an aedist download for each
        change. The idea is that the _a_e_g_e_t(1) pages may be used to automate
        downloading change set your repository does not yet have.

        * There are two new history commands in the project configuration
        file, the history_transaction_begin and history_transaction_end
        fields.  It is not an error if these fields are absent.  If you need a
        transaction key, use the $version substitution.

        * The _a_e_d_i_s_t(1) command now runs all tests required for the change
        set, and honors test exemptions.

        * The _a_e_d_i_s_t(1) command now sleeps for a second to ensure that the
        last-time-modified of derived files will be strictly later than source
        files, and that the _a_e_b(1) timestamp will also be strictly later then
        the last-time-modified for the source files.

        * The tkdiff(1) man page has been updated to say how to use mgdiff(1)
        instead of tkdiff(1).

        * All commands which accept the --cchhaannggee option may now be given a
        change set UUID.  You can discover a change's UUID using the _a_e_l _c_d
        (list change details) or _a_e_l _i_n_v_e_n_t_o_r_y listings.

        * The _a_e_d(1) command now restores source file from backups (,B) when a
        merge fails.  Previously this was not the case and subsquent aed
        invocations failed because the source file was missing.

        * The _a_e_t_a_r _-_s_e_n_d command now has an --aadddd--ppaatthh--pprreeffiixx option, so that
        you can add a path prefix to all of the files in a tarball.  The
        _a_e_g_e_t(1) CGI interface now adds a path prefix to generated tarballs by
        default.

        * Whenever you edit file attributes, there is a Content-Type attribute
        added automagically if none was there already.  The idea is that this
        could be used by scripts to differentiate file types.

        * The _a_e_p_a_t_c_h(1) command now uses _d_i_f_f _-_u by default.

        * A number of build problems on different systems have been fixed.

        * A number of minor problems with tests on different systems have been
        fixed.

        * A bug has been fixed in the aepatch command; it was not parsing
        simple diff patches correctly.

        * The example history commands have been updated to work better with
        the new UUID code.

        * A bug has been fixed in aecp -delta, where it would fetch the wrong
        version of a file in some cases.

        * A bug has been fixed in the handling of the executable bit.

        * A bug has been fixed in _a_e_d_e(1), where is did not permit branches to
        end when they had a removed file (without a UUID) which has been
        subsequently recreated (with a UUID).

        * A bug has been fixed in the _a_e_g_e_t(1) command for file contents.  It
        was giving a "multiple permissions set (bug)" error message.

        * A bug in the _a_e_d_i_s_t _-_r_e_c_e_i_v_e command, where it was not accurately
        manipulating the incoming change set UUID.

        * A bug has been fixed in _a_e_d(1) which caused it to SEGFAULT.

        * A bug has been fixed in the _a_e_d_e(1) command, where it failed to copy
        the UUID when it promoted a file from "create" to "modify"
        automatically.

        * A bug has been fixed in the $date substitution, it was not advancing
        properly when used in progress messages.

        * A bug has been fixed in the command line processing of the _a_e_f_a(1)
        command.

        * A bug has been fixed in the _a_e_g_i_s _-_r_e_v_i_e_w_-_b_e_g_i_n command; it was not
        operating correctly when the change was in _a_w_a_i_t_i_n_g___r_e_v_i_e_w but the
        project was in _g_o_t_o___b_e_i_n_g___r_e_v_i_e_w_e_d.

        * A bug has been fixed in the $basename substitution; it now functions
        exactly like _b_a_s_e_n_a_m_e(1) command.

        * A bug has been fixed in the _a_e_t _-_b_l command; it erroneously stated
        that the $Search_Path_Executable substitution was mandatory, when it
        actually optional.

   VVeerrssiioonn 44..1188 ((1100--JJuunn--22000044))
        * A number of build problems have been fixed, particularly concerning
        GCC 3.3 and later.

        * The _a_e_m_v(1) command has been enhanced to accept more than two file
        names.  You are now able to move serveral files in the one command.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command has been enhanced to process move
        operations in a batched way.  This improved performance when receiving
        a change that renames many files.

        * The ./configure script has been changed to take note of the
        --sysconfdir option, used to specify the location of the /etc
        directory.

        * A bug has been fixed in the _a_e_p_a_t_c_h(1) command.  It would SEGFAULT
        when a non-source file was patched.

        * A bug has been fixed in the _a_e_m_e_a_s_u_r_e(1) command.  It would SEGFAULT
        when no files were named on the command line.

        * The Russian error message catalogue has been updated.

        * A subtle bug in the change file out-of-date tests have been fixed.
        It did not adequately address the transition case for projects
        containing files with and without UUIDs.

        * The ./configure --sysconfdir option is now honored.  It is _v_e_r_y
        important to set it to _/_e_t_c when you configure Aegis.

   VVeerrssiioonn 44..1177 ((33--JJuunn--22000044))
        * Each new change set is now assigned a Universally Unique Identifier
        (UUID) to allow it to be tracked across geographically distributed
        development.  The _a_e_d_i_s_t(1) and _a_e_p_a_t_c_h(1) commands now send the
        change set UUIDs, and preserve them on receipt.

        * Each file now has a Universally Unique Identifier (UUID) which
        allows tracking files across renames, even on geographically separate
        sites.  (The _a_e_d_i_s_t(1) and _a_e_p_a_t_c_h(1) commands send the file UUIDs,
        the next release will take advantage of them on receipt.)

        * The history filename used to remember file history is now based in
        the file UUID, if the file has a UUID.  This simplifies continuity of
        history across renames (this fucntion always been present in Aegis,
        but harder to access).

        * As a consequence of the UUID being used to generate history file
        names, there is no longer the restriction that new files may not be
        named after the directory portion of a deleted file (or vice versa).

        * There is a new _a_e_c_v_s_s_e_r_v_e_r(1) command, which presents Aegis projects
        and change sets as CVS modules.  All of the core CVS functions are
        supported.  This code needs to be exersized and tested by users.

        * It is now possible to specify arbitrary attribute names and value
        for each source file.  The _a_e_f_a(1) command may be used to edit file
        attributes.  The _a_e_d_i_s_t(1) and _a_e_p_a_t_c_h(1) send these attributes; a
        future release will take advantage of the information on receipt.

        * It is now possible to attach arbitrary attribute names and values to
        change sets.  For example, you can use this to remember the bugzilla
        tracking number for a change.

        * The _a_e_p_a_t_c_h(1) command now includes change set meta-data as a
        compressed BASE64 encoded block at the top of the patch, after the
        human-readable text but before the files.  This means that _a_e_p_a_t_c_h(1)
        can be as effective as _a_e_d_i_s_t(1) is transmitting chaneg sets.  Patches
        without meta-data still work as before.

        * There is a new report script which writes change logs in Debian
        format.

        * The _a_e_g_e_t(1) web interface has been improved.  The _a_e_p_a_t_c_h(1)
        download now accepts compat=_N modifier, and there is a new Project
        Staff page.

        * There is a new _a_e_-_c_v_s_-_c_i(1) support script which may be used as an
        _i_n_t_e_g_r_a_t_e___p_a_s_s___n_o_t_i_f_y___c_o_m_m_a_n_d to commit change sets to CVS in
        parallel.

        * There is more documentation in the User Guide about using GNU Diff,
        particularly using diff -U to provide whole-file listings with "change
        bars" on the left hand side.

        * The files view of the _a_e_g_e_t(1) web interface now accepts options to
        control the page contents.  The simplest view allows recursive fetch
        of project sources using wget or similar, with no extraneous links to
        confuse the results.  Previous behavior is preserved by the aeget-
        generated links.

        * You now receive a warning when you are seeing the short version of
        the error messages.  These are terse and often quite cryptic. the long
        form of the error messages is to be preferred.

        * The behaviour of the _a_e_d_e_u(1) command has changed slightly.  When
        changes are in the _b_e_i_n_g _r_e_v_i_e_w_e_d state, and Aegis has been configured
        to use the _a_w_a_i_t_i_n_g _r_e_v_i_e_w state, the _a_e_d_e_u91) command will now report
        an error.  This is so that reviewers don't waste their time reviewing
        changes which have already been returned to the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        Think of the change as "belonging" to the reviewer while in the _b_e_i_n_g
        _r_e_v_i_e_w_e_d state.

        * The _a_e_d_i_s_t _-_s_e_n_d command has a new _-_c_o_m_p_a_t_i_b_i_l_i_t_y option, use to
        indicate the version of the rreecceeiivviinngg aedist program.  This, in turn,
        selects the features which may be added to or omitted form the
        generated .ae file.

        * There is a new config file usage, and a corresponding _a_e_n_f
        _-_c_o_n_f_i_g_u_r_e command line option.  It is now possible to move project
        configuration files.  It is now possible to remove project
        configuration files, provided there is at least one left.  The
        _a_e_i_m_p_o_r_t(1) command now avoids files which have the same name as the
        default project configuration file ("aegis.conf" or "config") and will
        use something else.

        * The _a_e_i_p_a_s_s(1) command now adds a symlink from the delta directory
        to the baseline once it has been integrated.  This helps lots of
        (idiotic) compilers which insist on burying absolute paths into
        executables.

        * It is now possible to assign to some project configuration file
        array fields more than once.  This can be useful where the
        configuration file is split into several pieces on several branches.

        * The source language has been changed from C to C++.  Future releases
        will take advantage of this.

        * Several bugs have been fixed in the _a_e_g_e_t(1) web interface where it
        would display "-42" instead of "0" for changes and branches numbered
        zero.

        * A bug has been fixed in the _a_e_d(1) command when merging files which
        have been renamed.  It now recognises they need merging.

        * A bug has been fixed in the _a_e_n_f(1) command.  It now correctly
        ignores difference files when given a directory name.

        * A bug has been fixed in _a_e_d_i_s_t(1) where one of the _a_e_g_i_s _-_n_e_w_-_f_i_l_e
        commands was missing a _-_n_o_-_t_e_m_p_l_a_t_e argument.  Under some
        circumstances, this resulted in change sets which could not be _a_e_d_i_s_t
        _-_r_e_c_e_i_v_ed.

        * A bug has been fixed in the way invalid sequences of multi-byte
        characters are handled by the internationalization code.  This
        potentially affected all reports, listings and error messages.  The
        symptom was that aeannotate listings could sometimes have a blank
        source code column.

        * A bug has been fixed in the _a_e_p_a_t_c_h(1) command.  It was creating
        empty patches for some changes in completed project branches.  This
        also affected _a_e_d_i_s_t _-_s_e_n_d and _a_e_c_p _-_d_e_l_t_a and _a_e_c_p _-_r_e_s_c_i_n_d in some
        cases.  It was caused by a subtle flaw in the non-detailed case for
        the _p_r_o_j_e_c_t___f_i_l_e___r_o_l_l___f_o_r_w_a_r_d function.

        * A bug has been fixed in the handling of the MANPATH enviromnet
        variable by the _p_r_o_f_i_l_e and _c_s_h_r_c scripts.

        * A bug has been fixed in the _a_e_d_i_s_t _-_r_e_c_e_i_v_e and _a_e_p_a_t_c_h _-_r_e_c_e_i_v_e
        commands has been fixed.  There were cases where these commands could
        access off the end of an array and SEGFAULT.

        * A bug has been fixed in the _a_e_d_e(1) command when it received pre-
        config-usage change sets.  It used to try to remove the last project
        configuration file, which is a fatal error, and made it impossible to
        receive the change set.

        * A bug has been fixed which caused the _a_e_t_a_r(1) command to hang
        (actually, any thing which consulted LDAP or NIS) because the reserved
        symbol "send" was being overloaded.  The reserved symbol "clone" was
        also being overloaded.  Both have been fixed.

        * A bug has been fixed which caused the _a_e_d_i_s_t(1) command to reprt the
        wrong error when the input file did not exist.

        * A bug has been fixed in the _a_e_n_b_r_u(1) command which made project
        aliases disappear.

        * A bug has been fixed in the _a_e_d_e command.  It would fail with new
        build files already in the baseline.

   VVeerrssiioonn 44..1166 ((1144--JJaann--22000044))
        * There is a new _a_e_c_p _-_k_e_e_p option, causing _a_e_c_p(1) nnoott to overwrite
        file contents in the development directory.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e option now understands changing the type of a
        file.

        * It is now possible to specify a URL to the --ffiillee option on the
        command line of _a_e_d_i_s_t(1), _a_e_p_a_t_c_h(1) and _a_e_t_a_r(1).  The data will be
        downloaded and applied.

        * More work has been done towards making the code compilable by a C++
        compiler.

        * The project list (see _a_e_l(1), _a_e_g_e_t(1), etc) is now sorted in a
        slightly more natural way, as are the version statistics at the end of
        an _a_e_a_n_n_o_t_a_t_e(1) listing.

        * A bug has been fixed in _a_e_d_e91) for branches, where Aegis would
        complain about build source files (created by the _a_e_n_f _-_b_u_i_l_d command)
        being out-of-date.  This, of course, was difficult or impossible to
        fix, and unnecessary because the next build would fix them.

        * A bug has been fixed in the _a_e_c_p _-_i_n_d_e_p_e_n_d_e_n_t command, where it did
        not preserve the execute bit, nor honour the user's umask.

        * The missing _a_e_m_t and _a_e_m_t_u alias ve been added to the profile.

        * More detail has been added to _a_e_p_c_o_n_f(5) detailing how to create the
        project configuration file for the first time.

        * A bug has been fixed in _a_e_d_i_s_t(1) and _a_e_p_a_t_c_h(1) which would cause
        an assertion failure (or segfault) when you tried to _a_e_d_i_s_t _-_s_e_n_d
        _-_d_e_l_t_a _-_e_s files which did not exist at that delta.

        * A bug has been fixed in _a_e_d_i_s_t(1) and _a_e_p_a_t_c_h(1) which caused an
        assert failure (or segfault) when you tried to send a file which had
        been created and removed in a branch, and after the branch was
        integrated only a remove record exists in the parent branch.

        * The problem with test 134 failing has been fixed.

        * A bug has been fixed in _a_e_i_p_a_s_s91) which prevented changing a file's
        usage from being as straight-forward as it should have been.

        * The source RPM (and the _s_p_e_c file) now has Build Prequisites
        specified.

        * The --CChhaannggee option now accepts more than just a change number.  It
        now accepts many forms similar to those used by the _$_{_v_e_r_s_i_o_n_}
        substitution, allowing its output to be used directly as command line
        input; forms such as -c 1.2.C34 and --c=5.6.D78 are now understood to
        imply a --bbrraanncchh option as well as either --cchhaannggee or --cchhaannggee--ffrroomm--
        ddeellttaa, respectively.  In addition, you may prepend a project name, to
        imply the --pprroojjeecctt option as well; form such as -c aegis.4.15.C28 are
        understood.

        * The _a_e_m_e_a_s_u_r_e(1) program now also generates Halstead metrics.

        * A bug has been fixed in the symbolic link handling code.  In some
        cases it would report "multiple user permissions (bug)" and not
        complete correctly.

        * A bug has been fixed in the test of _a_e_d_i_s_t(1) for moved files.
        There was nothing wrong with _a_e_d_i_s_t(1), the test itself was broken.

   VVeerrssiioonn 44..1155 ((1177--NNoovv--22000033))
        * A bug has been fixed in ``ael cf''.  It used to fail an assertion
        when there were no files in the change.

        * A bug has been fixed which caused aeipass to segfault when adjusting
        file modification time stamps in some circumstances.

        * A bug has been fixed in the cross branch merging code.  It would
        sometime erroneously complain about files no longer being in the
        baseline.

        * A bug has been fixed which caused _a_e_d_i_s_t(1) and _a_e_a_n_n_o_t_a_t_e(1) to
        segfault.  It was caused by the roll forward history mechanism
        ignoring some branches in some cases.

        * A  bugs has been fixed in the _a_e_n_r_v _-_D_e_s_c_e_n_d___P_r_o_j_e_c_t___T_r_e_e option,
        which was free()ing a project twice, sometimes causing segfaults.

        * The _a_e_g_e_t CGI interface is now able to retrieve historical versions
        of files.

        * The _a_e_g_e_t CGI interface now has support for file metrics.

        * The _a_e_g_e_t CGI interface has been enhanced to provide more
        information about project files and change files: activity, conflicts,
        history.

        * The _a_e_i_p_a_s_s(1) command now sets the AEGIS_INTEGRATION_DIRECTORY
        environment variable before running the _i_n_t_e_g_r_a_t_e___p_a_s_s___n_o_t_i_f_y___c_o_m_m_a_n_d,
        so that you can add a symlink for compilers which insist on placing
        absolute paths into debugging information in object files.

        * The _a_e_g_e_t CGI interface has been enhanced to provide more
        information about project files and change files - activity,
        conflicts, history.

        * The _a_e_g_e_t CGI interface now reports more project information.

        * The _a_e_g_e_t CGI interface now has download links in many of its menus,
        allowing more and better downloads than the old _a_e_g_i_s_._c_g_i(1) script.

        * The way _a_e_n_f(1) and _a_e_n_t(1) work have been made more generous.  It
        is now possible to _a_e_r_m(1) a file and then _a_e_n_f(1) or _a_e_n_t(1) the same
        file in the same change.  This is useful for changing the type of a
        file.  Previously this has to be done as two consecutive changes.

        * The _a_e_c_p _-_i_n_d_e_p_e_n_d_e_n_t command has been enhanced to allow you to
        extract versions of built files (created with _a_e_n_f _-_b_u_i_l_d and
        maintained at _a_e_i_p_a_s_s(1) time).

        * Documentation has been added to _a_e_r(5) for the try/catch mechanism.

        * There was a disagreement between the _a_e_r_e_p_o_r_t(1), _a_e_a_n_n_o_t_a_t_e(1),
        _a_e_d_i_s_t(1), _a_e_f_i_n_d(1), _a_e_i_m_p_o_r_t(1), _a_e_l_s(1), _a_e_p_a_t_c_h(1), _a_e_r_e_c_t(1),
        _a_e_t_a_r(1) and _a_e_x_m_l(1) man pages and the commands themselves about the
        existence of the --vveerrssiioonn option.  The commands now behave as
        documented.

        * There is a new _P_r_o_j_e_c_t___B_r_a_n_c_h___D_a_t_e_s report, which may be used to see
        when branches of a project were begun and completed.

   VVeerrssiioonn 44..1122 ((2299--SSeepp--22000033))
        * A bug has been fixed in _a_e_d_i_s_t(1) where it handled moved files
        incorrectly.

        * There is a new experimental _a_e_g_e_t(1) program.  It is a potentially
        faster, potentially more capable replacement for the _a_e_g_i_s_._c_g_i(1)
        script.  At the moment it isn't, it's experimental.

        * A bug has been fixed in _a_e_d_i_s_t(1) where it would sometimes segfault
        when sending transparent files.

        * Command completion now works for the _a_e_m_t(1) and _a_e_m_t_u(1) commands.

        * A bug has been fixed where the symbolic link farm could point to the
        wrong place when change files are transparent.

        * Change file notification commands have been added for the _a_e_m_t(1)
        and _a_e_m_t_u(1) commands.  See _a_e_p_c_o_n_f(5) for more information.

        * A bug has been fixed in _a_e_f_i_n_d(1) command where it could report
        files which had been removed.

        * A bug has been fixed in the _a_e_c_p(1) command where it would scramble
        the _a_e_t _-_r_e_g exemption.

        * A bug has been fixed in the _a_e_d_e(1) command.  The problem manifested
        as an _a_e_t _-_r_e_g command which terminated early.

        * There is a new _a_e_x_m_l(1) command.  You can now obtain various pieces
        of the Aegis database as XML.  See _a_e_x_m_l(1) for more information.

        * The the _n_e_w___f_i_l_e___c_o_m_m_a_n_d, _c_o_p_y___f_i_l_e___c_o_m_m_a_n_d and _r_e_m_o_v_e___f_i_l_e___c_o_m_m_a_n_d
        fields of the project _c_o_n_f_i_g file are now defaulted correctly.

        * Theer is a new _$_c_h_a_n_g_e___f_i_l_e_s substitution.  See _a_e_s_u_b(5) for more
        information.

        * The project config file has a new _a_r_c_h_i_t_e_c_t_u_r_e___d_i_s_c_r_i_m_i_n_a_t_o_r___c_o_m_m_a_n_d
        field.  Now you can use an arbitrary command (rather than _u_n_a_m_e(2)
        information) to determine the architecture.  See _a_e_p_c_o_n_f(5) for more
        information.

        * The Russian message translation has been updated.

        * The German message translation has been updated.

        * The _a_e_l(1) command now has a new _i_n_c_o_m_p_l_e_t_e listing.  It lists
        changes between _a_w_a_i_t_i_n_g _r_e_v_i_e_w and _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d. inclusive.

        * The _a_e_l(1) command now accepts arguments for the listings.  The
        _d_e_f_a_u_l_t_-_c_h_a_n_g_e, _d_e_f_a_u_l_t_-_p_r_o_j_e_c_t, _o_u_t_s_t_a_n_d_i_n_g_-_c_h_a_n_g_e_s and _u_s_e_r_-_c_h_a_n_g_e_s
        lists now accept a user name argument.

        * The _a_e_m_t(1) command now understand the --UUNNCCHHaannggeedd option, so that
        files which are in the branch, but unchanged from the deeper branch,
        may be made transparent.

        * A bug has been fixed in the _w_e_c_p(1) command where the --OOvveerrWWrriittee
        option did not honor the presence/absence of the --RReeaaddOOnnllyy flag.

        * There is a new _a_e_e_d_i_t script.  See _a_e_e_d_i_t(1) for more information.

        * A bug has been fixed in the file history mechanism (as used by the
        _-_d_e_l_t_a options, _a_e_a_n_n_o_t_a_t_e(1), _a_e_d_i_s_t(1), _a_e_p_a_t_c_h(1), etc) which did
        not correctly understand transparent files.

        * The _a_e_c_l_e_a_n(1) command now touches all of the source sfiles.  It
        also accepts a --NNooTToouucchh option.

        * There is a new _$_c_h_a_n_g_e___f_i_l_e_s substitution.  See _a_e_s_u_b(5) for more
        information.

        * The _a_e_c_l_e_a_n command now touches the source files as well.  Use the
        now --nnoo--ttoouucchh ooppttiioonn iiff yyoouu ddoonn''tt wwaanntt tthhiiss..

        * There have been several improvements to the output of the _a_e_g_i_s_._c_g_i
        script and the web site.

        * For Aegis developers: all of the K&R insulation has been removed;
        you now need an ANSI C compiler to build Aegis.  Some preparation has
        also been done to get the source ready for a C++ compiler.

   VVeerrssiioonn 44..1111 ((2299--JJaann--22000033))
        * For Aegis developers: the developer build now uses _s_u_d_o(8) to
        simplify and automate the tricky bit.  The regular distribution build
        is unchanged.

        * A bug has been fixed where the '_a_e_t _-_r_e_g' command could not find any
        tests to run, cause by inconsistencies in the view path handling for
        project file searches.

        * A partial Romainian translation has been added.

        * A Spanish localization has been added.  It needs work by a human.

        * The French localization has been improved.

        * The _a_e_d_i_s_t(1) command now preserves the executable bit on files.

        * There is a new _-_d_e_s_c_e_n_d_-_p_r_o_j_e_c_t_-_t_r_e_e option for the _a_e_n_a(1),
        _a_e_r_a(1), _a_e_n_d(1), _a_e_r_d(1), _a_e_n_i(1), _a_e_r_i(1), _a_e_n_r_v(1), _a_e_r_r_v(1) and
        _a_e_p_a(1) commands, to apply the action to all descendant branches of
        the project.

        * A bug has been fixed in _t_k_a_e_r(1) which stopped it working on some
        systems.

        * The _a_e_i_n_t_e_g_r_a_t_q(1) command now copes better with changes leaving the
        _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n state.

        * A bug has been fixed in the _a_e_i_m_p_o_r_t(1) command which misunderstood
        RCS branches.

        * A bug has been fixed where there _a_e_n_f(1) command would use the new
        _c_o_n_f_i_g file about to be created, which was almost always wrong.

        * There is a new _$_{_s_u_b_s_t_r_} substitution.  See _a_e_s_u_b(5) for more
        information.

        * The _a_e_c_l_o_n_e(1) command now understands transparent files.

        * The _a_e_c_p_u(1) command now restores test exemptions in some cases.

        * There is a new _a_e_m_e_a_s_u_r_e(1) command, which procudes simple file
        metrics for use with Aegis.

        * There is a new _p_r_o_j_e_c_t _a_n_c_e_s_t_o_r_s report.

        * Trunk version number no longer have a leading dot.

        * Command line completion now works for _z_s_h(1).

        * The _a_e_t_a_r(1) command now preserves the executable bit on files.

        * A bug has been fixed which caused _a_e_t_a_r(1) to hang.

        * The _a_e_r_e_p_o_r_t(1) and _a_e_s_u_b(1) commands now gave the same email
        address for users.

        * The _a_e_a_n_n_o_t_a_t_e(1) command now olny prints caption columns if their
        value changes.  This highlights the differences, and is less
        distracting.

   VVeerrssiioonn 44..1100 ((2244--DDeecc--22000022))
        * There is a new _a_e_m_t(1) command, used to make branch files
        "transparent".  This is like an _a_e_c_p_u(1) command for branches, but
        done through the agency of a change set.

        NNoottee:: The behaviour of the view path in the presence of transparent
        files is complete, however full support for _a_e_c_p _-_d_e_l_t_a and reports is
        not.  Support will be present in the next release.  File transparency
        information stored by this release will be able to be used by _a_e_c_p
        _-_d_e_l_t_a and reports in the next release.

        * There is a new _a_e_m_t_u(1) command, to undo the effects of the _a_e_m_t(1)
        command.

        * It is now possible to use the _a_e_c_l_o_n_e(1) command on changes in the
        _a_w_a_i_t_i_n_g _d_e_v_e_l_o_p_m_e_n_t state.

        * The problematics directory permissions check has been removed from
        the _a_e_i_n_t_e_g_r_a_t_q(1) command.

        * A bug has been fixed in _a_e_c_p(1) when retrieving deltas before files
        were removed.

        * There are new _$_{_s_p_l_i_t_} and _$_{_u_n_s_p_l_i_t_} substitutions for manipulating
        search paths (_e_t_c_).  See _a_e_s_u_b(5) for more information.

        * A bug has been fixed where test time stamps were not updated for
        batch tests which covered multiple architectures.

        * The _a_e_d_i_s_t(1) program now includes a change number, which will be
        used on receipt if possible.  Note that this produces .ae files which
        are not backwards compatible; the -nopatch option will suppress
        inclusion of the change number in the archive.

        * A German translation of Recursive Make Considered Harmful has been
        added, courtesy of CM Magazin.

        * A bug with _a_e_i_m_p_o_r_t(1) and removed files has been fixed.

        * A problem has been fixed with the transition case when a project
        changed from develop_end_action = goto_being_reviewed to
        goto_awaiting_review while having changes in the _b_e_i_n_g _r_e_v_i_e_w_e_d state.

        * A problem with long command lines has been fixed in the _a_e_d_i_s_t
        _-_r_e_c_e_i_v_e, _a_e_p_a_t_c_h _-_r_e_c_e_i_v_e and _a_e_t_a_r _-_r_e_c_e_i_v_e commands.

        * A problem with _a_e_i_m_p_o_r_t(1) and binary files has been fixed.

   VVeerrssiioonn 44..99 ((2233--OOcctt--22000022))
        * The _a_e_p_a_t_c_h(1) and _a_e_t_a_r(1) commands now accept -add-path-prefix and
        -remove-path-prefix options, for manipulating the filenames when
        unpacking an creating a change set.  The _a_e_p_a_t_c_h(1) documentation has
        been significantly improved.

        * There is a new _a_e_c_p _-_r_e_s_c_i_n_d option, which may be used to rescind
        (roll back) a completed change.  See _a_e_c_p(1) for more information.

        * The Debian _/_e_t_c_/_m_a_i_l_n_a_m_e file is now understood by the _$_{_u_s_e_r _e_m_a_i_l_}
        substitution.

        * There is a new _p_r_o_j_e_c_t___g_a_n_t_t report, which produces comma-separated-
        value (CSV) output, for extracting data to import into Ms. Project.
        Unfortunately, Mr. Project does not yet know how to import CSV files.

        * It is now possible to provide a comment to the _a_e_r_p_a_s_s(1) command,
        just as you always could to the _a_e_r_f_a_i_l(1) command.

        * The _a_e_t(1) program now has a -progress option, to tell you where it
        is up to.  See _a_e_t(1) for more information.

        * The Russian error messages have been updated.

        * The _a_e_i_m_p_o_r_t(1) program now understands the CVS Attic directory.

        * There are new _p_e_r_l, _P_L_u_r_a_l___F_o_r_m_s, _c_a_p_i_t_a_l_i_z_e, _d_o_w_n_c_a_s_e and _u_p_c_a_s_e
        substitutions.  See _a_e_r(5) for more information.

        * A work-around for the aeimport/delta bug has been added, for
        projects which were imported with the buggy aeimport.

        * Aegis developers will need to upgrade to GNU Autoconf 2.53 or later,
        as the GNU Autoconf files have been updated to work with that version.
        This does not affect normal users.

        * Many typos have been fixed in the documentation, and some
        improvements have been made.

        * Some build problems have been fixed.

        * Numerous improvements have been made to the web interface.

   VVeerrssiioonn 44..88 ((1199--AAuugg--22000022))
        * A bugs has been fixed in the _a_e_t_a_r _-_r_e_c_e_i_v_e command, where it
        incorrectly complained about shorty input files.

        * Numerous changes have been made to the web interface.  They now use
        cascading style sheets, have more navigation links, and inclde tarball
        downloads.

        * Several build issues have been resolved.

        * A bug has been fixed in the _a_e_i_m_p_o_r_t(1) command.  The symptom was
        that the _a_e_c_p _-_d_e_l_t_a command misbehaved.  The probelm was that the
        first delta needed a timestamp _p_r_i_o_r _t_o the first change set taken
        from the import sets.

        * A bug has been fixed in the _a_e_p_a_t_c_h _-_s_e_n_d command, where it would
        add Index lines for files with no differences.

        * A bug has been fixed in the protect_development_directory = true;
        handling, where it would cause a "multiple user permissions setting"
        error message.

   VVeerrssiioonn 44..77 ((66--AAuugg--22000022))
        * The _a_e_f_i_n_d(1) command now has -resolve as the default.  To get the
        previous behaviour, use the -NoResolve _o_p_t_i_o_n_.

        * In the _a_e_c_a _-_e and _a_e_p_a _-_e commands, it is now possible to quote
        strings with at-signs (@) instead of double quotes.  This type of
        string allows newlines within the string.  See _a_e_g_i_s(5) for more
        information.

        * For the benefit of Aegis developers, there is now HTML documentation
        genaretd by Doxygen (if you have Doxygen installed).  When developing
        an Aegis change, in your development directory, point your browser at
        doxygen-html/index.html.  The common/str.h file is an example of the
        style desired, should you wish to contribute to the effort to get all
        of the header files suitably annotated.  Also, the removal of the K&R
        C support has started, see the files in common/*.[ch] for examples.
        Also <varargs.h> is not longer used anywhere.

        * The _a_e_d_i_s_t(1) command has two new options, -patch and -nopatch,
        which may be used to control how and when _a_e_d_i_s_t uses patches.  See
        _a_e_p_a_t_c_h(1) for more information.

        * A bug has been fixed inthe _s_t_r_n_c_a_s_e_c_m_p function.  This only affected
        you if your system did not have a native version of this function.

        * The _a_e_c_a(1) command now accepts a -fix-architecture option.  This
        option may be used to correct the architecture list of a change
        automatically.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command now runs the _a_e_c_a _-_f_i_x_a_r_c_h command when
        a change set arrives which modified the project _c_o_n_f_i_g file.  This
        should fix many of the "architecture not in project configuration
        file" problems when seeding new projects.

        * Some deficiencies on the ``How to Become a Developer'' instructions
        have been addressed.  The native Aegis build (but not the Makefile.in)
        now builds the "tags" and "TAGS" files so that it easier to navigate
        the sources.

        * There is a new _a_e_t_a_r(1) command.  It may be used to send and receive
        tarballs as Aegis change sets.  See _a_e_t_a_r(1) for more information.

        * Missing documentation on the _a_e_p_c_o_n_f(5) man page about the fine
        grained file change notification commands has been added.

        * Some changes have been made to the Aegis web interface, with more
        back links.  Also uses _h_t_m_l_2_d_i_f_f(1) if available.

        * It is now possible for reviewers to use the _a_e_t(1) command to run
        tests against the changes they are reviewing.

        * The command completion for the _a_e_t(1) command now works better; it
        now completes project test names as well as change test names.

        * The _a_e_p_a_t_c_h(1) and _a_e_d_i_s_t(1) commands now cope with a wider range of
        input vagueries, including some weird things done by MTAs and more
        content transfer encoding synonyms.

   VVeerrssiioonn 44..66 ((1111--JJuull--22000022))
        * The _a_e_i_p_a_s_s(1) command now sleeps, rather than issue the rather
        alarming ``warning: file modification times extend into the future''
        message.  There is a new project _c_o_n_f_i_g file field, _b_u_i_l_d___t_i_m_e___a_d_j_u_s_t,
        which controls this behaviour, but it is strongly recommended that you
        leave it on the default setting.

        * There is a new _$_{_b_a_s_e___r_e_l_a_t_i_v_e_} substitiontion, almost the inverse
        of _$_{_s_o_u_r_c_e_}.  See _a_e_s_u_b(5) for more information.

        * A bug has been fixed with the _a_e_c_a and _a_e_p_a _-_e_d_i_t option.  It was
        caused by the change in the previous release which added editor user
        preferences.

        * A few build problems have been fixed.

        * A bugs has been fixed in the _t_k_a_e_p_a script.  It would sometimes fail
        the "OK" button.

        * A bug has been fixed in the "user changes" list.  It was not
        explicitly passing the project name when it accessed the list of user
        owned changes.

   VVeerrssiioonn 44..55 ((2266--JJuunn--22000022))
        * It is now possible to set pager and editor preferences in your
        _._a_e_g_i_s_r_c file.  See _a_e_u_c_o_n_f(5) for more information.

        * A bug in _a_e_p_a_t_c_h _-_r_e_c_e_i_v_e has been fixed, where it would sometimes
        misapply a patch. The search used to determine the patch position
        (when it needs to be offset) has been improved.

        * The _a_e_d_i_s_t(1) and _a_e_p_a_t_c_h(1) commands now accept -delta and -delta-
        date options.

        * The _i_n_t_e_g_r_a_t_e___q_._s_h shell script has been replaced by the
        _a_e_i_n_t_e_g_r_a_t_q(1) Perl script.  It can now lots more useful things.  See
        _a_e_i_n_t_e_g_r_a_t_q(1) for more information.

        * A bug has been fixed in the date parsing code (used by the -delta-
        date option).  There was the potential to mis-calculate dates after
        February 2000.

        * A bug has been fixed in _a_e_p_a_t_c_h _-_r_e_c_e_i_v_e, where it sometimes
        complain of "no uudecode data in file", for files which did not
        require uudecoding.

        * There are more change-specific substitutions available.  See
        _$_{_c_h_a_n_g_e _._._._}  within _a_e_s_u_b(5) for more information.

        * The _a_e_p_a_t_c_h(1) command now understands ordinary diff listings, in
        addition to the context and unified differences it already understood.

        * There is a new _a_e_a_n_n_o_t_a_t_e(1) command, used to produce annotated
        source file listings.  See _a_e_a_n_n_o_t_a_t_e(1) for more information.

   VVeerrssiioonn 44..44 ((1122--MMaayy--22000022))
        * It is now possible to specify system wide user preferences.  See
        _a_e_u_c_o_n_f(5) for more information.

        * The _a_e_p_a_t_c_h(1) command now understands the quoted-printable content
        transfer encoding.

        * The _a_e_p_a_t_c_h(1) is more robust when receiving patches that want to
        use a change number that has already been used.

        * The Dutch error message translations have been updated.

        * There was a problem with the way the install directory for _a_e_g_i_s_._c_g_i
        was being determined.  The _a_e_g_i_s_._c_g_i script is now installed into
        $bindir by default.  There is a _a_e_g_i_s_._c_g_i_._i helper script to find your
        web server's _c_g_i_-_b_i_n directory and copy _a_e_g_i_s_._c_g_i there, but this is
        not done automatically.  See _a_e_g_i_s_._c_g_i(1) for more information.

        * Another change has been made to cope with still more Bison changes.

        * A French error message translation has been contributed.

        * A problem with _a_e_d_i_s_t _-_r_e_c_e_i_v_e has been fixed, where the new
        _c_o_n_f_i_g_u_r_a_t_i_o_n___d_i_r_e_c_t_o_r_y could interact with the order of file
        creation.

        * A big has been fixed in the uuencode output, which could
        occasionally miss the "begin" line.

        * A bug has been fiexed in the context diff parsing, where it would
        get the last hunk wrong if it was a hunk which deleted lines, due to
        incorrect end-of-file handling.  This affected both _a_e_p_a_t_c_h _-_r_e_c_e_i_v_e
        and _a_e_d_i_s_t _-_r_e_c_e_i_v_e, because _a_e_d_i_s_t(1) now includes patches for better
        merge behaviour.

        * Numerous issues concenting the new GNU Gettext versions have been
        addressed.

        * A number of Solaris build problems have been fixed, and one genuine
        bug buried in the warning messages (change completion time was wrong
        for changes not yet completed).

        * More information about the "mod times extend into the future"
        warning issued by _a_e_i_p_a_s_s(1) has been added to the man page.

        * Some improvements have been made to the web pages.

   VVeerrssiioonn 44..33 ((1166--AApprr--22000022))
        * The notification shell scripts all now use sendmail consistently.
        Autoconf support for locating sendmail is not yet present.

        * A problem which caused a core dump on Cygwin has been fixed.

        * The _a_e_d_e(1) command now gives a more informative error message when
        files in a branch require merging.

        * There is now an interconnection between the _a_e_i_b(1) and the _a_e_b(1)
        command.  When you specify a minimum integrate begin, you also get a
        minimum integrate build.

        * A bug has been fixed which caused _a_e_n_f(1) to dump core if you used
        the file name accept pattern.

        * The executability or otherwise of each source file is now
        remembered.  If any of the execute bits are set at _a_e_d_e(1) time, the
        file is remembed as executable.  When an executable file is copied
        into an integration directory or development directory, all of the
        execute bits (minus the project umask) are set.

        * A bug has been fixed in the ``_a_e_c_p _-_i_n_d'' command, where it would
        give a ``there is no development directory'' error when you tried to
        extract a file version from history of a completed branch.

        * Many of the web pages have been updated to provide a more consistent
        and intuitive interface.  It is also possible to get patches, via the
        _a_e_p_a_t_c_h command.

        * Interrupts are now ignored during database writes.  This should
        alleviate some of the problems induced by Ctrl-C.  (It would be nice
        to find the actual cause.)

        * The _a_e_d_i_s_t(1) command has been enhanved to include a patch fragment
        for modified files, as well as the whole source files.  On receipt, if
        the patch applies cleanly the whole source is ignored.  If the file
        does not exist at the receiving end, or the patch does not apply
        cleanly, the whole source file is included.  The incrimental cost is
        very low, because all of the patch pieces appear in the source file,
        and thus compress exceptionally well.  The net result is to greatly
        reduce merge costs on recipt of .ae files.  However, this change to
        _a_e_d_i_s_t(1) is only backwards compatiple.  Previous versions of
        _a_e_d_i_s_t(1) will give a fatal error if they see a .ae file generated by
        this version of _a_e_d_i_s_t(1).

        * File name resolution is now more robust in the face of permission
        problems.

        * Some error message translations have been improved.

        * A small bug has been fixed in the history labeling.

        * You can now use shell (#) and C++ (//) comments in your project
        _c_o_n_f_i_g file, if you prefer them to C comments.

        * A bug has been fixed in the maintenance of the symlink farm.  It
        would often fail to make all of the necessary symlinks.

        * There is a new project attribute, _p_r_o_t_e_c_t___d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y,
        which when true causes the development directory to be read-only in
        states between _a_w_a_i_t_i_n_g___r_e_v_i_e_w and _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d.

        * A problem has been fixed where some reports would fail is users had
        made their _._a_e_g_i_s_r_c files unreadable.

        * A number of small build problems have been fixed.

        * Command completion has been added for the _a_e_b(1), _a_e___c(1), _a_e_c_a(1),
        _a_e_c_d(1), _a_e_c_h_o_w_n(1), _a_e_c_l_e_a_n(1), _a_e_c_p(1), _a_e_c_p_u(1), _a_e_d_b(1), _a_e_d_b_u(1),
        _a_e_d_e(1), _a_e_d_e_u(1), _a_e_d_n(1), _a_e_i_b(1), _a_e_i_b_u(1), _a_e_i_p_a_s_s(1), _a_e_i_f_a_i_l(1),
        _a_e_n_a(1), _a_e_n_c_u(1), _a_e_n_d(1), _a_e_n_f(1), _a_e_n_f_u(1), _a_e_n_i(1), _a_e_n_r_v(1),
        _a_e_n_t_u(1), _a_e___p(1), _a_e_p_a(1), _a_e_r_a(1), _a_e_r_b(1), _a_e_r_b_u(1), _a_e_r_d(1),
        _a_e_r_f_a_i_l(1), _a_e_r_i(1), _a_e_r_m(1), _a_e_r_m_u(1), _a_e_r_p_a_s_s(1), _a_e_r_p_u(1), _a_e_r_r_v(1)
        and _a_e_t(1) commands.  More will be added in the future.

        * It is now possible to specify a directory to contain project _c_o_n_f_i_g
        file fragments.  These fragments are then read in as if catenated as a
        single project _c_o_n_f_i_g file.  See _a_e_p_f_o_n_f(5) for more information.

   VVeerrssiioonn 44..22 ((2266--FFeebb--22000022))
        * There is a new ``--No-Page-Headers'' option which may be used to
        suppress page and column headers in listings and reports.

        * There is a new ``aecp -delta-from-change'' option, allowing the
        specification of a delta number by specifying the number of a
        completed change.

        * The ``aecp -ind -delta'' command now omits files which did not exist
        at the given delta.

        * There is a new _h_i_s_t_o_r_y___l_a_b_e_l___c_o_m_m_a_n_d which may be used to label your
        history files at each integration.  See _a_e_p_c_o_n_f(5) for more
        information.

        * The code which guesses which change you are working on, based on
        your current directory, has been enhanced to cover far more cases.  It
        can recognize the integration directory, too.

        * There is a new _C_h_a_n_g_e___L_o_g report, which generates reports in the
        style of common Internet change logs.

        * The web interface is now able to show you file differences between
        deltas.

        * A bug has been fixed in the ``_a_e_c_p _-_d_e_l_t_a'' command (for all delta
        variants).  The problem occurred when you wanted to copy a version of
        the file before the file has been modified by the branch (but it
        wasonly a problem for files modified later in the branch, files never
        modified by the branch were OK).  As a side-effect of the bug fix,
        ``_a_e_c_p _-_d_e_l_t_a'' now goes significantly faster (_N times faster, where _N
        is the number of files you are copying).

        * Build problems caused by new Bison releases have been fixed.

        * A number of oversights in handling the new _a_w_a_i_t_i_n_g _r_e_v_i_e_w state
        have been corrected.

        * The _$_{_e_x_p_r_} substitution has been enhanced to include modulo,
        logical not and the six relative operators.  All using the usual C
        syntax and precedences.  See _a_e_s_u_b(5) for more information.

        * There is a new _$_{_s_w_i_t_c_h_} substitution, see _a_e_s_u_b(5) for more
        information.

        * A Russian localization of the error messages has been contributed.

        * A bug has been fixed in the ``aecp -output'' code, which sometimes
        incorrectly created directories.

        * A bug has been fixed in the symbolic link maintenance code.  It now
        repairs links which point to a file which is too deep in the ancestor
        tree, and has been subsequently replaced.  It now uses a single pass,
        rather than two passes.

        * The _c_h_a_n_g_e___f_i_l_e___c_o_m_m_a_n_d field of the project _c_o_n_f_i_g file is now
        available at a finer granularity.  There are 8 new commands (the
        _c_o_p_y___f_i_l_e___c_o_m_m_a_n_d, _c_o_p_y___f_i_l_e___u_n_d_o___c_o_m_m_a_n_d, _n_e_w___f_i_l_e___c_o_m_m_a_n_d, _n_e_w___-
        _f_i_l_e___u_n_d_o___c_o_m_m_a_n_d, _n_e_w___t_e_s_t___c_o_m_m_a_n_d, _n_e_w___t_e_s_t___u_n_d_o___c_o_m_m_a_n_d, _r_e_m_o_v_e___-
        _f_i_l_e___c_o_m_m_a_n_d and _r_e_m_o_v_e___f_i_l_e___u_n_d_o___c_o_m_m_a_n_d fields) which may be
        individually configured.  They default to the previous behaviour, for
        backwards compatibility.  See _a_e_p_c_o_n_f(5) for more information.

        * A bug has been fixed in the _a_e_p_a_t_c_h(1) command, which prevented it
        form constructing patches for changes on completed branches.

        * The _a_e_i_p_a_s_s(1) command now issues an error message if the build
        changes a source file.  (Previously it erroneously reported that the
        history tool had done the damage.)

        * A bug has been fixed in ``aecpu -unchanged'' in the case where the
        change had no files.  (It tried to uncopy a file called the empty
        thring.)

        * The missing _a_e_m_v_u(1) man page has been added.

   VVeerrssiioonn 44..11 ((66--DDeecc--22000011))
        NNoottee:: You will need to upgrade all of your Aegis machines
        simultaneously for this release.  It introduces database changes which
        older Aegis release will not be able to cope with.

        * A bug has been fixed in _a_e_d(1), which tried to access a nonexistent
        files under some circumstances.

        * A bug has been fixed in _a_e_d_e.  When two changes created the same
        file, the second change received a misleading message from _a_e_d_e.

        * There is a new German message translation.

        * There is a new _t_k_a_e_p_a(1) command, giving GUI access to the _a_e_p_a(1)
        command.

        * The _a_e_c_l_o_n_e(1) command now runs the _c_h_a_n_g_e___f_i_l_e___c_o_m_m_a_n_d and
        _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d from the project _c_o_n_f_i_g file.  This is in order
        to be more consistent withthe _a_e_c_p(1) command.

        * The "time safe" property described by Damon Poole mostly applies to
        Aegis' operation.  One last area related to future times and the
        --delta options.  There is now a warning in the instance where non-
        time-safe behavior may occur.

        * The _h_i_s_t_o_r_y___p_u_t___c_o_m_m_a_n_d and _h_i_s_t_o_r_y___c_r_e_a_t_e___c_o_m_m_a_n_d field of the
        project _c_o_n_f_i_g file are strongly recommended to be identical.  It is
        now possible to only specify the first one, and the second will
        default to it.

        * A bug has been fixed in the _a_e_i_b(1) command, when the _l_i_n_k___-
        _i_n_t_e_g_r_a_t_i_o_n___d_i_r_e_c_t_o_r_y field in the project _c_o_n_f_i_g file is false.

        * There is a new _a_w_a_i_t_i_n_g _r_e_v_i_e_w state, and new _a_e_r_b(1) and _a_e_r_b_u(1)
        commands to go with it.  It is now possible to configure your project
        to have changes enter the _a_w_a_i_t_i_n_g _r_e_v_i_e_w state after _a_e_d_e(1), rather
        than the _b_e_i_n_g _r_e_v_i_e_w_e_d state.  It is also possible to skip the review
        states altogether and immediatelt enter the _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n
        state.

        * There is a new _m_o_d_e_P _f_i_e_l_d _f_o_r _t_h_e _s_p_e_c_i_f_i_c_a_t_i_o_n _o_f _a_r_c_h_i_t_e_c_t_u_r_e_s _i_n
        _t_h_e _p_r_o_j_e_c_t _c_o_n_f_i_g _f_i_l_e_.  _T_h_e _m_e_a_n_s _t_h_a_t _y_o_u _c_a_n _d_e_s_i_g_n_a_t_e _s_o_m_e
        _a_r_c_h_i_t_e_c_t_u_r_e_s _a_s _m_a_n_d_a_t_o_r_y _a_n_d _s_o_m_e _a_s _o_p_t_i_o_n_a_l_.  _S_e_e _a_e_p_c_o_n_f_(_5_) _f_o_r
        _m_o_r_e _i_n_f_o_r_m_a_t_i_o_n_.

        * The _a_e_n_b_r(1) command now populates the new branch's baseline with
        symlinks if the project _c_o_n_f_i_g file is set so that they would remain
        after an integration build.  This is more consistent with the _a_e_d_b(1)
        behaviour in the same situation.

        * There have been a number of changes to the web pages, accompanying
        the move to SourceForge, along with some corrections.

        * There is a new _a_e_l_s(1) command, which may be used to list
        directories, annotated with Aegis' file attribute information.

        * The _a_e_c_l_e_a_n(1) command now accepts the --KKeeeepp option, so that it
        reports what it would do, rather than actually do anything.

        * A problem with the CGI interface, which reported a bug to the user,
        has been fixed.

   VVeerrssiioonn 33..2299 ((3311--OOcctt--22000011))
        * The _a_e_i_m_p_o_r_t(1) command can now import CVS repositories which
        contain binary files.

        * There is a new _$_{_R_e_a_d___F_i_l_e___S_i_m_p_l_e_} substritution.  It is like
        _$_{_R_e_a_d___F_i_l_e_}, but is does not substitute into the file contents.

        * The _a_e_c_p _-_i_n_d_e_p_e_n_d_e_n_t command now accepts a _-_o_u_t_p_u_t option.

        * There is a new _$_{_e_n_v_i_r_o_n_m_e_n_t_} substitution, allowing you to access
        environment variables within substitutions.  See _a_e_s_u_b(5) for more
        information.

        * There is a new _$_{_p_r_o_j_e_c_t_-_s_p_e_c_i_f_i_c_} substitution, allowing you to
        define project specific value to be inserted into various commands.
        See _a_e_s_u_b(5) and _a_e_p_c_o_n_f(5) for more information.

        * The _a_e_f_i_n_d(1) command now works with completed change.  It searches
        the baseline.

        * A problem with using the ${source} substitution within the
        _i_n_t_e_g_r_a_t_e___p_a_s_s___n_o_t_i_f_y___c_o_m_m_a_n_d has been fixed.  It was getting the path
        wrong.

        * The batch test command is only ever invoked of there are tests to
        run.  (This fixes a problem where it would simethimes run with no
        arguments.)

        * The web reports now bahave themselves when the names of non-longer-
        here user appear.

        * A number of errors and typos have been fixed in the documentation.

   VVeerrssiioonn 33..2288 ((2211--AAuugg--22000011))
        * There is a new _a_e_p_a_t_c_h(1) program, which may be used to send an
        receive changes using the classic open source patch format.  See
        _a_e_p_a_t_c_h(1) for more information.

        * The general output mechanism (for listings and reports) has been
        rewritten to be significantly faster.

        * Numerous small things have been improved in and around the
        ./configure script and the Makefile.

        * The web interface has been improved.  It should result in better
        save file locations being suggested for .ae files.  cgi vs downloads

        * Aegis now takes a baseline read lock during tests, so that the
        baseline doesn't move out from under your tests, causing mysterious
        failures.

        * A bug has been fixed in the subst function of the report generator.
        It was free()in a string twice.

        * There is a new _$_{_d_e_v_e_l_o_p_e_r _e_m_a_i_l_} substitution, for inserting users'
        preferred email addresses into commands.  Useful for the state
        transition notification commands.

        * There is now more text in the _a_e_p_c_o_n_f(5) man page, explaining how
        each of the pattern fields are applied to file names.  It is now
        explicit when patterns applied to whole file names, and when they only
        applied to path name elements.

        * A segfault has been fixed in the removed file whiteout code.

        * The _a_e_s_u_b _$_s_o_u_r_c_e substitution now works in combination with the
        --BBaasseeLLiinnee option.

        * The _a_e_g_i_s_._s_p_e_c file now mentions the executables again.

   VVeerrssiioonn 33..2277 ((2266--JJuunn--22000011))
        * A bug has been fixed in the _a_e_s_u_b(1) $delta substitution.  It now
        works correctly for completed changes.

        * A bug has been fixed in _a_e_r_m_u(1), when used in combination with the
        symlink farm.  It no longer complains about "multiple user permissions
        set".

        * A serious bug has been fixed in the locking code.  The bug meant
        that only one build per project could happen at a time.  (There was
        never any risk of repository or Aegis database damage.)

        * A bug has been fixed in the _a_e_d_i_s_t(1) command.  It failed to
        correctly recognise files produced using the _a_e_d_i_s_t _-_s_e_n_d _-_n_o_-_a_s_c_i_i_-
        _a_r_m_o_u_r option.

        * The _a_e_c_p_u _-_u_n_c_h command now deals more gracefully with files which
        have been removed from the project in the mean time.

        * There is a new _c_h_a_n_g_e _f_i_l_e _h_i_s_t_o_r_y listing, similar to the _f_i_l_e
        _h_i_s_t_o_r_y report.  It is much faster, much more informatuve, and less
        selective.

   VVeerrssiioonn 33..2266 ((2211--JJuunn--22000011))
        * Some optimizations have been done to the input parsing.  Depending
        on your architecture, this will or won't be noticable.

        * The locking has been changed so that _a_e_i_p_a_s_s(1) takes precedence
        over new development builds, so that there is a guarantee that
        _a_e_i_p_a_s_s(1) will succeed in finite time.  Current development builds
        will run to completion, but new development builds will block until
        the _a_e_i_p_a_s_s(1) gets the basline lock and subsequently completes.

        * The "file format error" bug in _a_e_d_i_s_t(1) has been fixed.

        * There is a new _p_r_o_j_e_c_t _a_c_t_i_v_i_t_y report, which is useful to project
        leaders to see what has been happing in the project, sorted by time
        and then by user name.

        * Aegis can now transparently cope with binary files, even if the
        history tool cannot.  It does this by using a MIME encoding for binary
        files.  (This can be configured away, if your history tool correctly
        handles binary files.)  See _a_e_p_c_o_n_f(5) and the _U_s_e_r _G_u_i_d_e for more
        information.

        * There is a fix for the "file unrelated" error commonly seen on
        Solaris and BSD when combined with an automounter, in come cases.  It
        relies on the _b_a_s_h(1) behaviour which sets the $PWD environment
        variable.  (GNU libc does this internally to the _g_e_t_c_w_d(3) function,
        not all libcs do.)

        * The _a_e_r(1) report generator now has access to the project _c_o_n_f_i_g
        file fields, through a new config field in the report generator's
        concept of the project state.

        * There is a new _a_e_r(1) $comdir substitution, which gives access to
        the shared state directory, configured at build time.

        * The _a_e_b_u_f_f_y(1) now accepts a project name on the command line.

        * There is a new _b_u_i_l_d___c_o_v_e_r_s___a_l_l___a_r_c_h_i_t_e_c_t_u_r_e_s field in the project
        _c_o_n_f_i_g file, so that you can tell Aegis that the build tool builds all
        architectures wimultaneouasly.  See _a_e_p_c_o_n_f(5) for more information.

        * The _t_k_a_e_r(1) command now has a comment editor, so that you can edit
        your review fail comments from within the GUI.

        * A bug has been fixed which was caused _a_e_n_b_r_u(1) to delete one
        directory level too deep when the branch was removed.

        * There is a new getuid() function in the report generator.

        * This change fixed a bug in _a_e_d_e(1) where it would not allow a
        branch, created with _a_e_i_m_p_o_r_t(1), with new files which had
        subsequently been modified to end development, when those files had
        never existed in the baseline.

        * It is now possible for project administrators to nominate the
        developer in the _t_k_a_e_n_c(1) dialog.  You are presented with a pick
        list.

        * There is a new _a_e_s_u_b(1) $history_directory substitution.  This may
        be used in scripts which access the history tool's files directly.

        * There is a new _c_h_a_n_g_e___f_i_l_e___u_n_d_o___c_o_m_m_a_n_d field of the project _c_o_n_f_i_g
        file.  It is similar to the _c_h_a_n_g_e___f_i_l_e___c_o_m_m_a_n_d field (it defaults to
        it if unset), but is executed by all of the ``undo'' file commands.

        * The _a_e_d_e(1) command no longer cancels your build and test time
        stamps.  This means that you don't need to re-build if you don't
        change anything, after _a_e_d_e_u(1) or _a_e_r_f_a_i_l(1).

   VVeerrssiioonn 33..2255 ((33--AApprr--22000011))
        * It is now possible to remove users who's accounts have been removed
        (the affects the _a_e_r_a(1), _a_e_r_d(1), _a_e_r_i(1) and _a_e_r_r_v(1) commands).

        * There is a new _-_-_d_e_s_c_r_i_p_t_i_o_n_-_o_n_l_y option to the _a_e_c_a(1) command.
        This is useful for editing only the descrioption, and also for use
        within scripts.

        * The _-_-_f_i_l_e option has now been generalized to accept ``-'' to mean
        the standard input.  This is useful in scripts.

        * There is a new _a_e_b_u_f_f_y(1) command, which may be used to see what
        changes a user has outstanding.  It needs X11 (Tk/Tcl) to work.  Named
        after the _x_b_u_f_f_y(1) command.

        * The _t_k_a_e_r(1) command now presents you with a ``detail'' button, so
        that you may see the change details when pwerforming a review.

        * The restriction that placed the function name at the start of the
        command line (_e_._g_. the ``-cp'' of _a_e_c_p) has been relaxed.  This may
        now appear anywhere on the command line.

        * The Bourne / BASH shell aliases have been improved, so that they now
        preserve quoting of special characters and white space.  This dates
        from the earliest days of Aegis.  It's wonderful to have it fixed at
        last.

        * There is a new _a_e_m_v_u(1) command, which may be used to undo the
        effects of an _a_e_m_v(1) command.  This should prove less confusing than
        the previous method.

        * A big has been fixed in the _a_e_m_v(1) command.  It failed to accept
        the --base-relative option, even though it was documented to do so.

        * A bug has been fixed in the quote_tcl() report function.  Is fixes
        the problem with getting the dollars sign into descriptions when using
        the _t_k_a_e_n_c(1) command.

        * The SCCS section of the _U_s_e_r _G_u_i_d_e and example configurations have
        been updated and confirmed to work correctly, however I've only tested
        this with GNU CSSC.

        * A bug in the file name handling has been fixed.  This was most
        obvious around the _a_e_c_p_u(1) command when you had _c_r_e_a_t_e___s_y_m_l_i_n_k_s___-
        _b_e_f_o_r_e___b_u_i_l_d turned on and you were using an automounter, but it
        occured at other times as well.

        * The _a_e_i_m_p_o_r_t(1) command now understands the SCCS format.  If the
        comments in GNU CSSC are accurate, this also means you can import
        BitKeeper repositories, however I am unable to confirm this.

   VVeerrssiioonn 33..2244 ((1100--MMaarr--22000011))
        * There is a new _a_e_i_m_p_o_r_t(1) command, which may be used to import CVS
        archives into Aegis.

        * The cross branch merge has been improved so that it uses an earlier
        version number than it was using, resulting in a more sensable merge.

        * A bug has been fixed in the _$_{_q_u_o_t_e_} substitution which incorrectly
        quoted the exclamation mark (!).  Unfortunately, quoting isn't at all
        simple, because you can't exclusively use single quotes _o_r double
        quotes _o_r backslash.

        * There is now a _$_{_c_h_a_n_g_e _d_e_s_c_r_i_p_t_i_o_n_} substitution, allowing you
        access to the brief description of a change in a substitution.  (The
        suggested RCS history command have been changed to use it.)

        * A Dutch localization of the error messages has been contributed.

        * Project administrators can also use the _a_e_i_b_u(1) command.  Handy for
        abandoned integrations which inconvenience everyone else.

        * There is a new project _c_o_n_f_i_g file field, called build_covers_all_-
        architectures, which allows you to tell Aegis that your build process
        can cover all architectures simultaneously.

        * The _$_{_q_u_o_t_e_} substitution has been fixed to correctly quote more
        characters.  It now prefers the single quote (but is is npt possible
        to use this exclusively).

        * The web site now uses PDF files for documentation, rather than
        gzipped PostScript.  This was for lots of reasons, including the fact
        theat many folks couldn't work out how to print them, and also IE
        decompressed them ``for free'' but left the .gz suffix.

        * The report generator, _a_e_r_e_p_o_r_t(1), can now access fields of the
        _._a_e_g_i_s_r_c file.  This is important for accessing the preferred email
        address in various reports.  * The ``_a_e_c_p _-_d_e_l_t_a'' command now adds
        removed files to the change as removed files instead of adding them as
        copied-but-empty files.  This should make reproducing projects more
        accurate, but you need to use _a_e_r_m_u(1) to get rid of them ,rather than
        _a_e_c_p_u(1).

        * The _a_e_d_i_s_t program now adds a ``Content-Disposition'' header to the
        files it generates.  This means MIME programs will unpack it into a
        correctly named file more often.

        Numerous build problems have been fixed, both for Unix and for Cygwin
        (Windows).  There have benn some test script improvements, too.

        Contributions have started to roll in using the ``aedist'' format.
        This is very encouraging.  The instructions for how to do this are
        contained in the ``Howto'', in the _D_e_v_e_l_o_p_e_r section.

   VVeerrssiioonn 33..2233 ((2299--OOcctt--22000000))
        * A bug has been fixed which caused the report generator _c_h_a_n_g_e___n_u_m_b_e_r
        function to give garbage answers for change number zero (fortunalely,
        not very common).

        * There is a new _m_t_i_m_e function in the report generator.

        * There is a new _a_e_c_o_m_p utility, which may be used to compare two
        active changes, using _t_k_d_i_f_f_.

        * A bug in ``aesub ${dd}'' which reported the wrong directory when
        applied to branches, has been fixed.

        * The project _c_o_n_f_i_g file now contains two new fields, _c_r_e_a_t_e___-
        _s_y_m_l_i_n_k_s___b_e_f_o_r_e___i_n_t_e_g_r_a_t_i_o_n___b_u_i_l_d and _r_e_m_o_v_e___s_y_m_l_i_n_k_s___a_f_t_e_r___-
        _i_n_t_e_g_r_a_t_i_o_n___b_u_i_l_d, which may be used to better control the behavior of
        the symlink farm at integration time.  (Default behavior is backwards
        compatible.)

        * A new utility called _t_k_a_e_r has been contributed.  It is for
        reviewing, and shows you lists of files.  When you click on one, it
        launches _t_k_d_i_f_f(1) to examine it.  You're going to like this one,
        folks!

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command now preserves the testing exemptions, if
        possible.

        * A problem with very very large test runs and the --no-persevere
        option has been fixed.

        * The _a_e_n_f(1) and _a_e_n_t(1) commands now accept ----tteemmppllaattee and ----nnoo--
        tteemmppllaattee options, to control the use of new file templates.

        * A nasty Catch-22 in the _a_e_d_i_s_t(1) command has been fixed, involving
        the (unnecessary) use of new file templates, when the actual template
        files don't yet exist in the --receive development directory.

   VVeerrssiioonn 33..2222 ((1133--MMaayy--22000000))
        * PPlleeaassee NNoottee:: Some code has been added to Aegis to assist in
        diagnosing problems when restoring projects from backups.  If you see
        a message ``aegis: _p_r_o_j_e_c_t_-_p_a_t_h: has been tampered with (fatal)'' this
        means there are problems with the project file ownerships.  The
        project owner needs to be >= AEGIS_UID (defaults to 100), and the
        project group needs to be >= AEGIS_GID (defaults to 10).  Use chown -R
        and/or chgrp -R to fix these problems.

        * The _a_e_s_u_b(1) command now accepts the ${arch} substitution in
        combination with the -baseline option.

        * A bugs has been fixed in the _a_e_d_i_s_t _-_r_e_c_e_i_v_e command, when one of
        the files was also locked for review.

        * A bug in _a_e_c_l_o_n_e(1) has been fixed, where it dropped file move
        information.

        * The _a_e_i_b(1) command now correctly validates that youare actually
        allowed to do this integration.  This may win the prize for the _o_l_d_e_s_t
        Aegis bug.

        * There is a new ${search_path_executable} substitution.  See _a_e_s_u_b(5)
        and _a_e_t(1) for more information.

        * Line wrapping in reports works properly again for lines with no
        white space.  The previous release broke it when the wide output
        generalization was added.

        * The _a_e_t _-_n_o_p_e_r_s_e_v_e_r option works again.  The previous release broke
        it when the batch test support has implemented.

        * A problem with the _a_e_b(1) command which made it difficult to use
        with th symbolic link farm (in some cases) has been fixed.

        * A new report is available from the web interface, showing a change-
        of-state histogram over time for all state transitions (not just the
        integrate pass transitions).

        * A problem with the _a_e_n_f(1) command which made it difficult to use
        with th symbolic link farm (in some cases) has been fixed.

        * The _a_e_i_p_a_s_s(1) command now preserve file mod times across history
        updates, if the history tool gratuitously changes them.

        * The Solaris and IRIX build problems (wputc, _e_t _a_l) has been fixed.

        * Numerous documentation patches were received and have been applied.

   VVeerrssiioonn 33..2211 ((1122--MMaarr--22000000))
        * A couple of minor bugs have been fixed in _a_e_d_i_s_t, especially the
        problem with sending an baseline image while a change is being
        reviewed.

        * A couple of bugs have been fixed in the tkae* commands, in
        partucular they no longer leave temporary files lying around.

        * Lots of stuff has been added to the HOWTO: a cheat sheet, how to
        change a project's owner, how to use distributed development, how to
        become a developer.

        * The problem which caused `aesub ${copyright_years}' to contain
        duplicates has been fixed.

        * There have been Y2K fixes: the date parsing for the -delta-date
        option has been fixed, and the web page data has also been fixed.

        * The _a_e_t(1) command can now run more than one test at once, if
        configured appropriately.  This is of most use on systems with more
        than one CPU.

        * The -UNFormatted option no longer truncates column values.

        * The _a_e_s_u_b(1) command now accepts the -baseline option, so that you
        can get project-specific substitution in shell scripts.

        * A bug has been fixed in _t_k_a_e_n_c(1) which gave incorrect testing
        ssttings.  It now also tracks the project testing exemptions.

        * A bug in _a_e_n_f_(_1_) _h_a_s _b_e_e_n _f_i_x_e_d _w_h_i_c_h _a_l_l_o_w_e_d _m_u_l_t_i_p_l_e _i_n_s_t_a_n_c_e_s _o_f
        _t_h_e _s_a_m_e _f_i_l_e _t_o _b_e _c_r_e_a_t_e_d_.

        * A bug has been fixed which caused `aesub ${search_path}' to fail in
        some cases.

        * A bug has been fixed in _a_e_n_f(1) which allowed you to create the same
        file multiple times, corrupting Aegis' database and causing _a_e_d_e(1) to
        report mysterious errors.  Use _a_e_n_f_u(1) multiple times to untangle
        things.

        * Information has been added to the section 5 manual pages, detailing
        how to access state information from within the report generator.
        This should make writing report scripts a little easier.

        * A bug has been fixed which caused Aegis to misbehave when launched
        by some versions of _c_r_o_n(8) or _a_t(1).

   VVeerrssiioonn 33..2200 ((1199--OOcctt--11999999))
        * The _a_e_i_b command is now more robust about ``foreign'' files in the
        baseline (_e_._g_. root-owned core files).

        * A bug has been fixed in the _$_{_a_d_m_i_n_i_s_t_r_a_t_o_r___l_i_s_t_} substitution.

        * A bug has been fixed in the _a_e_d_i_s_t _-_-_d_e_l_t_a option, which caused it
        to dump core.

        * There is now a section in the _H_i_s_t_o_r_y _T_o_o_l chapter of the User Guide
        describing how to add checksums to your history files, in order to
        detect file corruptions.  It is a general technique which applies to
        most history tools (including RCS).

        * A bug has been fixed which caused _a_e_c_l_o_n_e to misbehave badly when
        dealing with removed files.

        * There is now an embryonic ``How To'' document for Aegis.  Please
        feel free to contribute subjects.

        * You can now say ``--BBRRaanncchh --'' as a synonym for the ``--TTRRuunnkk option,
        for those commands which accept it.

        * The report generator now copes with more types of empty lists.

        * A bug has been fixed which caused a core dump instead of a useful
        error message if you tried to create an alias with an illegal name.

        * A bug has been removed which left undeletable branch aliases if a
        branch was removed.

        * A bug has been fixed in _a_e_n_b_r_u which failed to remove the branch
        development directory .

        * The _a_e_n_f(1) command now behaves better when you do horrible things
        like turn the files you created into directories without telling Aegis
        first.

        * A couple of small bugs have been fixed in the _a_e_n_p_a(1) command, both
        in error situations.

        * A bug with the --iinntteerraaccttiivvee option has been fixed.  It will actually
        ask you, now.

   VVeerrssiioonn 33..1199 ((44--AAuugg--11999999))
        * You can now run a command to generate new file templates if you
        want, rather than using a simple string substitution.  See _a_e_n_f(1),
        _a_e_n_t(1) and _a_e_p_c_o_n_f(5) for more information.  The existing
        functionality is still there.

        * There is a new ${SUBSTitute} substitution, which provides regular
        expression substitutions.  This is useful in new file templates.

        * A bug has been fixed which allowed _a_e_d_e of a branch when there were
        some kinds of outstanding changes.

        * The automatic change number guessing has been improved slightly, and
        will cope with some more variation in the
        _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___t_e_m_p_l_a_t_e field.

        * There are two new commands, _a_e_n_p_a(1) and _a_e_r_p_a(1) for creating and
        removing project aliases.  This means that you can give project
        branches more meaningful names.

        * There is a new _a_e_s_u_b(1) command.  It substitutes its arguments and
        prints them, rather like the _e_c_h_o(1) command.  This is useful when you
        need access to the Aegis substitutions in a script.

        * The command line option ``--'' is now understood.  It means ``the
        rest of the arguments on the command line are filenames or strings''.
        Because this makes the options on the command line more "order
        sensitive" than usual, use with care.

        * There is a new _t_k_a_e_n_c(1) command, allowing you to create new change
        via a Tcl/Tk GUI.  (And a problem with TCL special characters in
        description text has been fixed.)

        * The _a_e_n_f(1) command now does the right thing with directories named
        on the command line.  In particular, you can now use ``aenf .'' to
        import whole directory trees.

        * There is a new _S_t_a_t_e_-_F_i_l_e_-_N_a_m_e list type, useful when writing
        cookbooks or makefiles to keep a web page in sync with a change.

        * There is a new ${capitalize} substitution, useful for putting in new
        file templates.

        * A bug has been fixed which caused _a_e_c_l_e_a_n to delete the development
        directory of changes with no files.

   VVeerrssiioonn 33..1188 ((88--JJuull--11999999))
        * A bug has been fixed which caused _a_e_c_p _-_d_e_l_t_a to dump core in some
        cases.

        * A bug has been fixed which caused the create-symlinks-before-build
        functionality to create symlinks to deleted files.

        * Still more typos and minor errors have been corrected in the
        documentation.

        * The _a_e_r_p(1) man page has been moved to _a_e_r_p_a_s_s(1).  Similarly for
        _a_e_r_f_a_i_l(1), _a_e_i_p_a_s_s(1) and _a_e_i_f_a_i_l(1).  This should make things easier
        for users to find the man pages.

   VVeerrssiioonn 33..1177 ((2222--JJuunn--11999999))
        * Another _a_e_d_i_s_t bug has been fixed - unfortunately it was introduced
        while trying to fix the last one.

        * A Cygwin 20.1 portability bug has been fixed.

        * There is a new _$_{_d_i_r_n_a_m_e___r_e_l_a_t_i_v_e_} substitution.  This is useful in
        new file templates, and also some configured commands.

   VVeerrssiioonn 33..1166 ((1155--JJuunn--11999999))
        * There is a new _t_k_a_e_c_a command.  It is a GUI interface to the _a_e_c_a(1)
        command, using Tcl/Tk.

        * There are two new reports available: the _P_r_o_j_e_c_t_-_B_r_a_n_c_h_e_s and
        _P_r_o_j_e_c_t_-_A_c_t_i_v_e_-_B_r_a_n_c_h_e_s reports may be used to query about branches
        within a project.

        * A bug has been fixed in the _a_e_d_i_s_t _-_r_e_c_e_i_v_e duplicate suppression
        code.  It was complaining about user permissions.

        * A bug has been fixed in _a_e_b(1), which did strange things if you
        tried to build an unbuildable change.

        * There is a new _-_N_o_-_W_h_i_t_e_O_u_t option for the _a_e_r_m(1) and _a_e_m_v(1)
        commands, letting you suppress the ``whiteout'' files, along with some
        explanation in the man page about why they are there.  See _a_e_r_m(1) for
        more information.

        * The default value of the ``_m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h'' field of the
        project _c_o_n_f_i_g file has been raised from 14 to 255.  If your project
        depends on the old default value, you will need to set it explicitly.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command now accepts a _-_d_i_r_e_c_t_o_r_y option, so you
        can specifiy the location of the development directory.

   VVeerrssiioonn 33..1155 ((22--MMaayy--11999999))
        * The ``_a_e_d_i_s_t _-_r_e_c_e_i_v_e'' command now accepts a --ddeellttaa option,
        allowing a received change set to be applied to an historical version.

        * There is now some information about managing super-projects and sub-
        projects in the _B_r_a_n_c_h_i_n_g chapter of the User Guide.

        * The _a_e_n_p_r(1) command now accepts a _-_k_e_e_p option, so that you can re-
        attach projects moved after using the _a_e_r_m_p_r _-_k_e_e_p command.  See
        _a_e_n_p_r(1) for more information.

        * The _a_e_n_p_r(1) command now accepts _-_e_d_i_t and _-_f_i_l_e options, allowing
        you to specify project attributes when creating the project.  See
        _a_e_n_p_r(1) for more information.

        * If the project _d_e_v_e_l_o_p_e_r_s___m_a_y___c_r_e_a_t_e___c_h_a_n_g_e_s attribute is true, the
        _a_e_n_c_u(1) command now allows developers to destroy changes they
        created.

        * There is a new _a_d_d___p_a_t_h___s_u_f_f_i_x substitution, for manipulating search
        paths.  See _a_e_s_u_b(5) for more information.

        * There are 3 new substitutions: ${bindir}, ${datadir} and ${libdir}.
        These are replaced by the _._/_c_o_n_f_i_g_u_r_e options of the same name (or the
        values calculated, if none were given to _._/_c_o_n_f_i_g_u_r_e).  The old ${lib}
        substitution is deprecated in favour of the new ${datadir}
        substitution.  See _a_e_s_u_b(5) for more information.

        * Some changes have been made which increases portability,
        particularly the Linux libc5 _v_s libc6 differences.

        * Some changes have been made which increases portability,
        particularly for Windows NT.  This isn't to say Aegis works under
        Windows NT yet, but it helps the porting efforts.  Don't forget to run
        the mkpasswd and mkgroup utilities included in the Cygwin system.

   VVeerrssiioonn 33..1122 ((2266--MMaarr--11999999))
        * The way the Apache configuration files are scanned for and read has
        been changed, to adapt to recent Apache changes.  The _._/_c_o_n_f_i_g_u_r_e
        script will now find it more often.

        * The ``_a_e_d_i_s_t _-_r_e_c_e_i_v_e'' command has been enhanced to be more robust
        about change sets without headers (some browsers _g_e_n_e_r_o_u_s_l_y strip them
        all off.

        * A bug has been fixed in the ``_a_e_d_i_s_t _-_r_e_c_e_i_v_e'' command which
        sometimes caused decompression failures.  An unfortunate interaction
        with the Windows NT support caused CRLF sequences in the compressed
        data to be mangled in some cases.

        * The wrong include file was being used for zlib.  This has been
        fixed, so it should build more easily now.

        * The way MANPATH is handled on Linux has been improved in the _c_h_s_r_c
        and _p_r_o_f_i_l_e commands.  It will not over-ride _/_e_t_c_/_m_a_n_._c_o_n_f_i_g now.

        * The _a_e_g_i_s_._c_g_i script has been made more robust in coping with _a_e_d_i_s_t
        errors.

        * The _s_y_m_l_i_n_k___e_x_c_e_p_t_i_o_n field of the project _c_o_n_f_i_g file now accepts
        filename patterns, not simply literal filenames.

        * There was a problem compiling with gcc 2.8, involving the <stdarg.h>
        header.  This has been fixed.

   VVeerrssiioonn 33..1111 ((1177--MMaarr--11999999))
        * The _a_e_t(1) command now accepts a --force option, forcing tests to be
        run, even if Aegis doesn't think they need to.

        * The Aegis CGI interface has been enhanced so that you can download
        changes from the generated web pages listing the changes, using the
        _a_e_d_i_s_t command.

        * The _a_e_d_i_s_t _-_-_s_e_n_d command now accepts a --no-ascii-armor option,
        which leaves off the MIME base 64 encoding.  Useful for binary
        distributions and web servers.

        * There is a new _t_r_o_j_a_n___h_o_r_s_e___s_u_s_p_e_c_t field in the project _c_o_n_f_i_g
        file.  This is used by _a_e_d_i_s_t _-_-_r_e_c_e_i_v_e to check for files which could
        be abused to carry Trojan horse attacks.

        * The _a_e_d_i_s_t _-_-_r_e_c_e_i_v_e command now accepts a --trojan option which
        treats the incoming change set as suspect, and a --no-trojan option
        which treats the incoming change set as benign.

        * The _a_e_d_i_s_t _-_-_r_e_c_e_i_v_e command now quotes filenames (if necessary)
        when executing commands, thus defending against filenames which
        contain semicolons.

        * The _a_e_n_b_r_u(1) command has been implemented at last.  At last!  You
        no longer need to use the _a_e_d_b_u work-around.

        * The _a_e_d_b_u(1) command now gives an error if you attempt to apply it
        to a branch.

        * The _a_e_r_m_p_r(1) command may now be applied to a project with active
        branches, and will remove the branches as well (provided there are no
        active changes on any of the branches).

        * The dos_filename_required and windows_filename_required fields of
        the project _c_o_n_f_i_g file have been enhanced to reject the brain-dead
        Windows special filenames such as ``aux'' _e_t _a_l.

        * The ${user} and ${project} substitutions have been enhanced to
        provide additional information when given an additional argument.
        Useful for file templates.  See _a_e_s_u_b(5) for more information.

        * Several portability enhacements, notably the Windows filename
        incompatibility has been fixed, and also the Linux _s_t_d_l_i_b_._h problem.

   VVeerrssiioonn 33..1100 ((66--MMaarr--11999999))
        * As of this release you must have zzlliibb installed before you can build
        Aegis.

        * There is a new _r_e_u_s_e___c_h_a_n_g_e___n_u_m_b_e_r_s project attribute, letting you
        control whether _a_e_n_c fills in holes in the change number sequence.
        Defaults to true if not set.  See _a_e_p_a_t_t_r(5) for more information.

        * There is a new _i_n_t_e_g_r_a_t_e___b_e_g_i_n___e_x_c_e_p_t_i_o_n_s field in the project
        _c_o_n_f_i_g file.  This permits the user to specify file to be omitted when
        the integration directory copy/link is performed.

        * The _a_e_t(1) command has been changed so that it does not exit with an
        error if you have a test exemption but no tests.  This is no longer an
        error.

        * There is a new _a_e_d_i_s_t(1) command, which may be used to send and
        receive Aegis change sets via e-mail and the web.

        * The _a_e_c_l_o_n_e(1), _a_e_n_b_r(1), _a_e_n_c(1) commands now accept a --oouuttppuutt
        option, a file to contain the automatically generated change number.
        This greatly assists in writing scripts.  See the man pages for more
        information.

        * The _a_e_n_t(1) command now accepts a --oouuttppuutt option, a file to contain
        the automatically generated file name.  See the man pages for more
        information.

        * There is a new _c_o_m_p_r_e_s___d_a_t_a_b_a_s_e field in the project attributes,
        allowing the Aegis database to be stored in a compressed form (using
        the GNU Zip algorthm).  Unless you have an exceptionally large
        project, coupled with fast CPUs and high network latency, there is
        probably very little benefit in using this feature.  (The database is
        usually less than 5% of the size of the repository.)  On slow
        networks, however, this can sometimes improve the preformance of file-
        related commands.

   VVeerrssiioonn 33..99 ((77--FFeebb--11999999))
        * A bug in the merge command has been fixed.  It no longer deletes all
        of your change source files if one of the merge commands fails.

        * There is a new _t_k_a_e_g_i_s command, using Tk/Tcl to give Aegis a GUI.
        Contributed by Graham Wheeler <gram@cdsec.com>.  Please report _t_k_a_e_g_i_s
        bugs and suggestions to Graham.

        * The integrate pass command has been enhanced to cope with RCS and
        SCCS expanding keywords in source files (modifying the repository) on
        check-in.  This can be ignored, or a warning can be issued, or it can
        be a fatal error (this is the default).  See _a_e_i_p_a_s_s(1) for more
        information.

        * The worked example in the User Guide has (finally!)  been updated to
        use the new branch numbering.  Numerous spelling errors have been
        corrected.

        * The developer section of the worked example chapter now also
        includes discussion of some common questions raised by folks
        evaluating Aegis.  It covers insulating development directories from
        the baseline, partial check-in and collaboration.

        * The _a_e_s_u_b(5) man page now brings attention to the fact that the
        ${Copyright_Years} substitution contains spaces.  You often need to
        quote it.

        * The man pages which mention filename limitations, now also note that
        where underlying file-system has stricter filename length limitations
        than the _f_i_l_e_n_a_m_e___m_a_x_i_m_u_m___l_e_n_g_t_h field in the project _c_o_n_f_i_g file, the
        file-system wins.  Mention of this is now also present in _a_e_d_b(1),
        _e_t_c; Linux UMSDOS is highlighted as problematic.

        * Aegis can now collect code metrics.  See _a_e_b(1) and _a_e_i_p_a_s_s(1) for
        more information.

        * There are three new report functions available: _q_u_o_t_e___u_r_l,
        _q_u_o_t_e___h_t_m_l and _u_n_q_u_o_t_e___u_r_l.  These are all for use when creating Aegis
        reports for the CGI interface.  See _a_e_r(5) for more information.

        * There are several new substitutions available.  These include subst,
        trim_extension, trim_directory, and trim_filename.  See _a_e_s_u_b(5) for
        more information.

        * The integrate_q.sh script now works correctly for branches.

        * Numerous configure, make and install problems have been fixed for a
        variety of portability targets.

        * The RPM spec file has been corrected to use appropriate file
        attributes.

   VVeerrssiioonn 33..88 ((11--OOcctt--11999988))
        * Some users were unable to build the previous release, due to
        inconsistent wide character support by the various UNIX vendors.  This
        has now been fixed.

        * There are two new substitutions, _t_r_i_m___d_i_r_e_c_t_o_r_y and _t_r_i_m___e_x_t_e_n_s_i_o_n,
        which are useful for constructing file templates.  These can be very
        useful in constructing skeletons of C++ classes.

        * Some changes have been made to pathname handling to better cope with
        automounters.  See _a_e_g_i_s(1) for more information (see discussion of
        the AEGIS_AUTOMOUNT_POINTS environment variable).  This assumes that
        paths below the automounter's mount directory are echoes of paths
        without it (_e_._g_. /home is the trigger, and /tmp_mnt/home is where the
        NFS mount is performed, with /home appearing to be a symlink).

   VVeerrssiioonn 33..77 ((2222--SSeepp--11999988))
        * The _a_e_i_f_a_i_l(1) and _a_e_r_f_a_i_l(1) commands now have a new --reason
        option, to specify the failure reason on the command line, rather than
        in a file.

        * Some file operations are now faster.  Mostly, this applies to
        operations which mention many files, and to projects with large
        numbers of files.  Smaller projects may not notice any improvement.

        * There is a new ----ddeellttaa--ddaattee option to the _a_e_c_p(1) command, allowing
        deltas to be extracted by date.  This change also had the side-effect
        of making extraction by delta number more accurate on branches.

        * There is a new ----bbaassee--rreellaattiivvee option to most of the file
        manipulation commands, _a_e_c_p(1), _a_e_n_f(1), _e_t_c.  This option may be used
        to specify that relative filenames are relative to the base of the
        source tree, rather than the current directory.  There is also a
        related user preference, see _a_e_u_c_o_n_f(5) for more information.

        * There is a new ``aeclean'' command.  It can be used to clean your
        development directories of non-source files.  See _a_e_c_l_e_a_n(1) for more
        information.

        * The _a_e_b(1) command now passes through arguments of the form
        _n_a_m_e==_v_a_l_u_e, on the assumption that these are variable assignments for
        th ebuild tool.  Previously, they were ``resolved'' as if they were
        file names.

        * A serious bug in the error and interrupt handling has been fixed.
        This bug would sometimes case Aegis to hang, and eventually run out of
        stack, when the user attempted to interrupt Aegis using ^C.

   VVeerrssiioonn 33..66 ((55--JJuull--11999988))
        * The _d_i_f_f_3___c_o_m_m_a_n_d field of the project _c_o_n_f_i_g file has been replaced
        by a _m_e_r_g_e___c_o_m_m_a_n_d field.  It works exactly the same way, but Aegis
        moves the files around first, so that the output replaces the change
        source file.  This results in fewer ``lost'' merges.  Those of you who
        have been hacking the _d_i_f_f_3___c_o_m_m_a_n_d to move the files around will need
        to take the moves oouutt when you rename the _d_i_f_f_3___c_o_m_m_a_n_d field to be
        the new _m_e_r_g_e___c_o_m_m_a_n_d field.

        * The columnizing functions used by the report generator and the
        listings has been enhanced to understand international character sets.
        This allows native character sets to be used in comments and
        descriptions, without getting gibberish (C escapes) in the output.

        * There is a new _s_h_e_l_l___s_a_f_e___f_i_l_e_n_a_m_e_s field in the project _c_o_n_f_i_g
        file.  This field controls whether filenames are required to be free
        of shell special characters.  This field defaults to true if not set,
        so if you are using any ``interesting'' filenames, you may need to
        explicitly set this field to false.  (You still can't use spaces or
        international characters in filenames.)

        * There is a new ${quote} substitution for insulating shell special
        characters in filenames in the commands in the project _c_o_n_f_i_g file.

        * A number of bugs relating to environment variables have been
        corrected; this will make the aereport and aefind commands behave more
        consistently, with respect to the aegis command.

        * A bug has been fixed which caused the final newline of new test
        files to be omitted.

        * A bug which prevented the ``aeb -minimum'' option from working in
        any non-trivial case has been fixed.

   VVeerrssiioonn 33..55 ((2288--MMaayy--11999988))
        * A bug was fixed in the lock waiting code.  Aegis will now correctly
        wait for locks when there are several users blocking on the same lock.

   VVeerrssiioonn 33..44 ((2222--MMaayy--11999988))
        * There is a new ``aegis -clone'' command, used to replicate changes
        across branches.  See _a_e_c_l_o_n_e(1) for more information.

        * There is a new ``-No-Wait'' command line option, which asks for a
        fatal error if a lock cannot be obtained immediately; this applies to
        all commands which takes locks.  See _a_e_u_c_o_n_f_(_5_) _f_o_r _m_o_r_e _i_n_f_o_r_m_a_t_i_o_n_.

   VVeerrssiioonn 33..33 ((44--AApprr--11999988))
        This release is a bug fix release, and mostly install and portability
        bug, at that.

        * The problem with _e_r_r_n_o defines messing up _g_l_u_e_._c has been fixed.

        * Numerous fixes to the wide character support, to cope with the
        vagueries of wide character support on many platforms.

        * The problem with the LINES and COLS environment variables messing up
        testing have been fixed.  Some tests gave false negatives because of
        this.

        * There is a new _a_e_b _-_m_i_n_i_m_u_m option, for use with symbolic links,
        only, which has a minimal set of source file links, rather than
        everything in the baseline.

   VVeerrssiioonn 33..22 ((2222--MMaarr--11999988))
        * There are some additional reports available via the web interface.
        They are mainly to extract error causes and trends from the project
        history statistics.

        * There have been a number of minor bug fixes concerning the handling
        of old 2.3 projects.  This should ease transition for users with
        existing 2.3 projects.

        * A bug in aecp -delta has been fixed, where Aegis was trying to find
        change state files one branch level too high.

        * There is now a re-try performed when a stale NFS file handle error
        is detected.  This should make it easier for some sites which are
        heavily networked.

        * There have been some improvements to the way Control-C is handled.
        It should be more responsive when waiting for locks.

        * Project administrators may now end development of a branch.  Since
        branches can endure for months or years, the orginal branch creator
        may have moved on.  This copes with this situation.

   VVeerrssiioonn 33..11 ((1155--JJaann--11999988))
        Version 3.0 was not used by many sites.  It was available as beta
        software for about a year, in numerous incarnations.  Version 3.1 is
        the first completely stable version since adding full branching
        support.

   VVeerrssiioonn 33..00
        Version 3.0 is fully backwards compatible with earlier versions,
        however once a project has been used under 3.0, it will not be
        possible to revert, e.g. to version 2.3, without restoring the
        project's ``info'' directory from backup.  While this was generally
        true of previous releases, any additional state information was
        usually undo-able with _v_i(1).  This time the process is much more
        involved because the project state files and the change state files
        have been combined as a necessary step in implementing branches.

   VVeerrssiioonn 33..00 MMaajjoorr NNeeww FFeeaattuurreess
        * Aegis now has a feature known in the literature as long
        transactions, also known as branches.  This allows appropriately
        created changes to be treated as if they were projects, and thus to
        have changes made to them.  This allows a hierachy of changes within
        changes, to any desired depth.  See the _B_r_a_n_c_h_i_n_g chapter of the _A_e_g_i_s
        _U_s_e_r _G_u_i_d_e for more information.

        * The project state files have been merged with the change state
        files.  This is part of the implementation of branching.  If you have
        written your own reports, you may need to alter them slightly.  For
        example, in version 2.3 and earlier, reports accessed the project
        state file using
                auto p, ps;
                p = project[project_name()];
                ps = p.state;
        Because the project state has been moved into a change state, the
        _s_t_a_t_e field above now points at a change state description, and most
        of the old project information is contained in the _b_r_a_n_c_h field within
        it.  Reports access this information as
                auto p, ps;
                p = project[project_name()];
                ps = p.state.branch;
        Except for files, which were already present in the _c_s_t_a_t_e, so access
        to the project file list need not change.  See the new _a_e_c_s_t_a_t_e(5) for
        more information.

        * The new project command now creates branches to match the version
        number specified.  See _a_e_n_p_r(1) for more information.

        * The error messages of Aegis have been internationalized.  This
        affects how you build Aegis, and the environment Aegis runs in.  See
        the _B_U_I_L_D_I_N_G file for more information.  The _c_s_h_r_c and _p_r_o_f_i_l_e shipped
        with this release set the LANG environment variable to ``en'' (for
        English) if you have not set it; otherwise ther error messages would
        be terse and uninformative.

        * The _a_e_t _(_1_) command can now suggest tests to be run.  This is done
        by correlating the source files and test files from each change.  See
        _a_e_t(1) for more information.

        * There is now an _a_e_r_e_p_o_r_t(1) command.  The separates out the report
        functionality from the main body of the Aegis code, allowing the
        report generator to be used in places where more trust is required.

        * There is an intranet Web interface, which is installed automaticly
        when the install script discovers a web server.  This interface allows
        browsing of much of the Aegis meta-data, of all publicly accessible
        projects.

        * There is now an _a_e_f_i_n_d(1) command.  This is very similar to the UNIX
        _f_i_n_d(1) command, except that it finds in the unified directory stack
        of a change and its project.  The introduction of full branch support
        can sometimes mean that finding a file may require looking in more
        than two directories; the _a_e_f_i_n_d(1) command makes this simple again.

   VVeerrssiioonn 33..00 MMiinnoorr NNeeww FFeeaattuurreess
        * There is now a -No_Pager option, to prevent listings and help from
        being redirected to a pager.  There is also a user preference to more
        thoroughly disable paging, and a -PAGer option to override it.  See
        _a_e_g_i_s(1) and _a_e_u_c_o_n_f(5) for more information.

        * There is now a -No_PErsevere option to _a_e_t(1), allowing you to
        request that _a_e_t(1) stop after the first test failure.  There is also
        a user preference to set this permanently if desired, and a -PErsever
        option to override it.  See _a_e_t(1) and _a_e_u_c_o_n_f(5) for more
        information.

        * The copyright years attribute has been moved from being a project
        attribute to a change attribute.  This is consistent with a number of
        other fields which have transparently moved from the project state
        files into the change state files, as a result of branching support.
        See _a_e_c_a(1) and _a_e_c_a_t_t_r(5) for more information.

        * There is a new _S_e_a_r_c_h___P_a_t_h substitution, to support builds on
        branches.  See _a_e_s_u_b(5) for more information.  As a side effect, you
        can also use it in the _t_e_s_t___c_o_m_m_a_n_d field of the project _c_o_n_f_i_g file,
        and thus have a search path to look down for data files for your
        tests.

        * Test times are now remembered, so that tests are only run if they
        need to be.  This allows you to keep working on a test, and Aegis only
        runs those that have not yet passed.

        * Aegis now uses ``fingerprints'' to tell if files have changed,
        rather than simply relying on file modification time stamps.  While
        this makes Aegis more robust, there is one caveat: it is recommended
        that 3.0 be installed when there are no changes in the 'being
        reviewed' or 'awaiting integration' states, in any project.

        * There is now a log file prefernces control, allowing users to set
        their preferred logging behaviour.  See _a_e_u_c_o_n_f(5) for more
        information.

        * It is now possible to specify the filename for new tests on the
        command line.  See _a_e_n_t(1) for more information.

        * It is not possible to specify a pattern for test filesnames.  See
        _a_e_p_c_o_n_f(5) for more information.

        * There is now a --MMAAXXiimmuumm option to the _a_e_i_b command, allowing you to
        keep obsolete derived files at integrate begin.  This can avoid long
        integration build times for large projects.

   VVeerrssiioonn 33..00 BBuugg FFiixxeess
        * Architecture names are now checked a `develop end' time, to ensure
        there are no unknown variants.  This fixes the mysterious ``you must
        build again'' problem.

        * The _a_e_c_p(1) and _a_e_d(1) commands now take a baseline read lock, to be
        more symetric with the _a_e_b(1) command which has always done so.  The
        _a_e_i_p_a_s_s(1) command takes the complementary baseline write lock,
        ensuring the the baseline remains constant for the duration of builds,
        file copies, differences and merges.  The manual entries for these
        commands have all been improved to document this behaviour.  See
        _a_e_b(1), _a_e_c_p(1), _a_e_d(1) and _a_e_i_p_a_s_s(1) for more information.

        * There are now some reminder scripts in the library, which can be run
        from _c_r_o_n_t_a_b(1).  These are installed into the _/_r_e_m_i_n_d directory.
        These scripts can be used to remind users of changes in various
        states, such as those being developed or being reviewed.

        * All of the commands which accept the _-_E_d_i_t option now also accept a
        _-_E_d_i_t___B_a_c_k_G_r_o_u_n_d option, allowing edit commands to be piped in from
        the standard input.

        * The _a_e_c_p(1) command now accepts a _-_I_N_D_e_p_e_n_d_e_n_t option, allowing
        files to be copied independent of any change (similar to the
        _-_I_N_D_e_p_e_n_d_e_n_t option of the command.)  See _a_e_c_p(1) for more
        information.

        * The _a_e_c_p(1) command now accepts a _-_R_e_a_d___O_n_l_y option, allowing files
        to be copied into a change specifically to insulate it from baseline
        changes.  Such files must be uncopied before development may end.  See
        _a_e_c_p(1) for more information.

        * The _a_e_n_r_l_s(1) command is now used _o_n_l_y to convert pre-3.0 projects
        into post-3.0 projects.  This is because the full branching support in
        3.0 makes it more useful to create a new release of a project by
        ending development on the branch of the previous release and starting
        development of a new branch numbered for the new release.  See the
        _B_r_a_n_c_h_i_n_g chapter of the _U_s_e_r _G_u_i_d_e for more information.

   VVeerrssiioonn 22..33
        * The merging behaviour of the _a_e_d(1) command has changed.  If any
        files require merging, it only merges.  In this way, merged files are
        not lost in the rest of the output.  Also, there are now command line
        options and user preferences so that you can select to only merge or
        only difference.  See _a_e_d(1) and _a_e_u_c_o_n_f(5) for more nformation.

        * It is now possible to assign symbolic names to project deltas.  This
        means that you may now recreate earlier project baselines by name.

        * All commands which accept a --EEddiitt option now check for most errors
        before commencing the edit.  This avoids wasted edits in many error
        cases.

        * Fuzzy file name matches are now used to improve the error messages
        from aecp, aerm, etc.

        * Version number separators in project names are preserved across new
        releases.  Particularly, you can use a minus ('-') between the name
        and the major version number.

        * A new ``copyright_years'' project attribute has been added.  This is
        a list of years maintained at integrate begin time, to automate the
        insertion of list of copyright years into copyright messages and
        documentation.  There is a new ${Copyright_Years} substitution and the
        copyright years are also listed in the ``aegis -list version''
        listing.  See _a_e_s_u_b(5) and _a_e_l(1) for more information.

        * It is now possible to specify patterns for acceptable and
        unacceptable filenames in the project configuration file.  See
        _a_e_p_c_o_n_f(5) for more information.

        * Four more functions have been added to the report language: _l_e_n_g_t_h,
        _s_p_l_i_t, _s_u_b_s_t_r and _w_r_a_p.  See _a_e_r(5) for more information.

        * The tests distributed with  are now more stable on very fast hosts.
        See the environment variables section of _a_e_b(1) for more information.

        * The _l_i_b_/_c_o_n_f_i_g_._e_x_a_m_p_l_e directory of the distribution now contains
        files with example portions of the project _c_o_n_f_i_g file.  May thanks to
        David R Shue <shue@ll.mit.edu> for this suggestion.

        Changes made in the previous release included:

   VVeerrssiioonn 22..22
        This release of Aegis provides 3 of the most commonly requested
        features: support for heterogeneous development, support for a greater
        range of DMTs, support for user-defined reports.

        * Aegis now supports heterogeneous development.  Now you can be sure
        that your project not only always builds and tests sucessfully, but
        that it does so across a configurable set of system or hardware
        architectures.  See the _H_e_t_e_r_o_g_e_n_e_o_u_s _D_e_v_e_l_o_p_m_e_n_t secion of the _T_i_p_s
        _a_n_d _T_r_a_p_s chapter of the User Guide for more information.

        * Aegis can now cope with a wider range of Dependency Maintenance
        Tools (DMTs).  It now has the ability to fill development directories
        with symbolic links to all files in the baseline which are not present
        in the development directory.  This allows DMTs to assume all files
        are present below the current directory, allowing DMTs such as _c_a_k_e
        and _G_N_U _M_a_k_e to be used.  See the _D_e_p_e_n_d_e_n_c_y _M_a_i_n_t_e_n_a_n_c_e _T_o_o_l section
        of the User Guide and _a_e_b(1) for more information.

        * Aegis now has a report generator, so you can create your own
        reports.  Many "canned" reports are included in this distribution; of
        particular interest to many will be the _F_i_l_e___A_c_t_i_v_i_t_y report, which
        details currently active files.  See _a_e_r(1) for more information.

        * Aegis is now configured using a shell script called _c_o_n_f_i_g_u_r_e,
        distributed with the package.  This shell script is generated using
        GNU Autoconf.  See the _B_U_I_L_D_I_N_G file for more information.

        * The _A_E_G_I_S environment variable has been renamed _A_E_G_I_S___P_A_T_H, to bring
        it in line with the AEGIS_PROJECT and AEGIS_CHANGE environment
        variable names.  The old name will keep working for some time, but
        aegis will warn you.

        * Filename lengths are now configurable.  The 14 character portability
        limit is still the default, but a higher limit is configurable for
        each project, up to the filesystem filename limit.  See _a_e_p_c_o_n_f(5) for
        more information.

        * It is now possible to specify that filenames must be within the
        minimum character set mandated by POSIX.  The default is as before, to
        allow any printing character.  See _a_e_p_c_o_n_f(5) for more information.

        * Limits on the length of project names have been relaxed.  Project
        names are now only limited by the filesystem filename limit.

        * It is now possible to specify the command to run tests, allowing a
        project to use a specialized test facility, rather than be forced to
        use shell scripts.  See _a_e_t(1) and for more information.

        * The commands which accept the _-_E_d_i_t now preserve the edited text in
        the event of a failure.

        * The commands which delete files now accept a _-_I_n_t_e_r_a_c_t_i_v_e option,
        which causes them to prompt the user for confirmation of file
        deletion.  This can be made the default by an appropriate setting of
        the aliases or individual users preferences files.  See _a_e_n_f_u(1),
        _a_e_n_t_u(1), _a_e_c_p_u(1), and _a_e_u_c_o_n_f(5) for more information.

        * The _a_e_c_p(1) command now accepts directory names, allowing whole
        directory trees to be copied into a change.  The _a_e_c_p_u(1) command now
        has a --UUNNCChhaannggeedd option which allows the unchanged files to be
        uncopied.

        * The _a_e_b command now accepts file names, allowing partial builds to
        be performed.  See _a_e_b(1) for more information.

        * There is a new _a_e_c_h_o_w_n(1) command to facilitate reassigning the
        developer of a change which is in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.

        * It is now possible for project administrators to assign changes to
        specific developers.  See _a_e_d_b(1) for more information.

   VVeerrssiioonn 22..11
        * Can now ask for history to maintained for file generated by the
        build.  This is useful for generating patch files.

   VVeerrssiioonn 22..00
        * A new command has been added to facilitate changing the name of a
        file as part of a change.  See _a_e_m_v(1) for more information.

        * It is now possible to list the locks currently held.  See _a_e_l(1) for
        more information.

        * If no other defaulting mechanism is specified, aegis will now
        attempt to guess the project name and change number from the pathname
        of the current directory.  This only works from within development
        directories.

        * The _a_e_n_c, _a_e_c_a, _a_e_r_f_a_i_l, _a_e_i_f_a_i_l and _a_e_p_a commands now accept a
        --EEddiitt command line argument.  See the relevant manual pages for more
        information.

        * The _a_e_n_p_r command now understands the --MMAAJJoorr and --MMIINNOOrr options,
        allowing the initial version of a project to be something other than
        1.0.

        * The _a_e_d command now understands the --AANNttiicciippaattee option.  See _a_e_d(1)
        for more information.

        * It is now possible to list all the outstanding changes of a project,
        or of all projects.  See _a_e_l(1) for more information.

   VVeerrssiioonn 11..44
        * Support has been added for systems without the _s_e_t_e_u_i_d system call,
        or those with crippled implementations.

        * Most of the unimplemented command variants have been finished.
        These include _N_e_w _C_h_a_n_g_e _U_n_d_o, _D_e_v_e_l_o_p _B_e_g_i_n _U_n_d_o and _R_e_M_o_v_e _P_R_o_j_e_c_t.
        Most notable of the exceptions is _-_A_N_t_i_c_i_p_a_t_e option for the
        _-_C_o_P_y___f_i_l_e and _-_D_I_F_F_e_r_e_n_c_e command.

        * The User Guide has been added to, making it a little more complete.
        It still needs more work, sigh.

        * The code to handle automounters has been made more robust.

        * The command substitutions have been vastly improved, and are now
        documented.



Build(Aegis)                                                      Build(Aegis)



NNAAMMEE
        aegis - project change supervisor
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The _a_e_g_i_s program is distributed under the terms of the GNU General
        Public License.  See the LICENSE section, below, for more details.

        aaeeggiiss (ee.j.iz) _n_._, a protection, a defense.

SSPPAACCEE RREEQQUUIIRREEMMEENNTTSS
        You will need up to 250MB to unpack and build the _a_e_g_i_s package.
        (This is the worst case seen so far, most systems have binaries
        smaller than this, 200MB is more typical.)  Your mileage may vary.

SSIITTEE CCOONNFFIIGGUURRAATTIIOONN
        The aaeeggiiss package is configured using the _c_o_n_f_i_g_u_r_e shell script
        included in this distribution.

        The _c_o_n_f_i_g_u_r_e shell script attempts to guess correct values for
        various system-dependent variables used during compilation, and
        creates the _M_a_k_e_f_i_l_e and _c_o_m_m_o_n_/_c_o_n_f_i_g_._h files.  It also creates a
        shell script _c_o_n_f_i_g_._s_t_a_t_u_s that you can run in the future to recreate
        the current configuration.

   UUppggrraaddiinngg
        The ./configure script will look for an existing install of Aegis and
        use the existing configuration settings.  This works best if the
        version you are upgrading is 4.11 or later.

        To disable looking for an existing installation (maybe because you
        want to change the prefix), use the ./configure --with-no-aegis-
        configured option.

   BBeeffoorree YYoouu SSttaarrtt
        Before you start configuring, it is worth reading the _O_T_H_E_R _U_S_E_F_U_L
        _S_O_F_T_W_A_R_E section, below.

        The _c_o_n_f_i_g_u_r_e script checks for the internationalization library and
        functions.  If your system does not have them, it is worth fetching
        and installing GGNNUU GGeetttteexxtt before you run the _c_o_n_f_i_g_u_r_e script.  Make
        sure that the _m_s_g_f_m_t command from GNU Gettext appears earlier in your
        command search PATH than the existing system ones, if any (this is
        very important for SunOS and Solaris).  You must do the GNU gettext
        install _b_e_f_o_r_e running the _c_o_n_f_i_g_u_r_e script, or the error messages,
        even for English speakers, will be terse and uninformative.  Remember
        to use the GNU gettext configure _-_-_w_i_t_h_-_g_n_u_-_g_e_t_t_e_x_t option if your
        system has native gettext tools.

        The _c_o_n_f_i_g_u_r_e script checks for the compression library and functions.
        If your system does not have them, it is worth fetching and installing
        GGNNUU zzlliibb compression library before you run the _c_o_n_f_i_g_u_r_e script.
        (See http://www.gzip.org/zlib/ for download.)  This is essential,
        because Aegis will not build.  without it.  (NNoottee:: this is not the
        same thing as zlibcc which does something completely different.)

        The _c_o_n_f_i_g_u_r_e script checks for the regular expression library and
        functions.  If your system does not have them, it is worth fetching
        and installing GGNNUU rrxx compression library before you run the _c_o_n_f_i_g_u_r_e
        script.  (Note: test 81 will fail if the POSIX regular expression
        functions are not available.)

   RRuunnnniinngg CCoonnffiigguurree
        Normally, you just _c_d to the directory containing _a_e_g_i_s' source code
        and type
                % ..//ccoonnffiigguurree ----ssyyssccoonnffddiirr==//eettcc
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                %
        If you're using _c_s_h on an old version of System V, you might need to
        type
                % sshh ccoonnffiigguurree ----ssyyssccoonnffddiirr==//eettcc
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                %
        instead to prevent _c_s_h from trying to execute _c_o_n_f_i_g_u_r_e itself.

        Running _c_o_n_f_i_g_u_r_e takes a minute or two.  While it is running, it
        prints some messages that tell what it is doing.  If you don't want to
        see the messages, run _c_o_n_f_i_g_u_r_e with its standard output redirected to
        _/_d_e_v_/_n_u_l_l; for example,
                % ..//ccoonnffiigguurree  ----ssyyssccoonnffddiirr==//eettcc ----qquuiieett
                %

        There is a known problem with GCC 2.8.3 and HP/UX.  You will need to
        set CFLAGS = -O in the generated Makefile.  (The configure script sets
        it to CFLAGS = -O2.)  This is because the code optimization breaks the
        fingerprints.  If test 32 fails (see below) this is probably the
        reason.

        There is a known problem with IRIX builds.  You need to use the
        following configuration
                # systune ncargs 0x8000
        to increase the length of command lines.

        For mips IRIX and IRIX64 using the MipsPro compiler up to at least
        version 7.3 you must specify the flag to allow -I for loop
        initializations. You may give either of:
                CXXFLAGS='LANG:ansi-for-init-scope=ON'
                CXXFLAGS='LANG:std'
        Also required is _-_l_C_i_o but configure will test for that. Even using
        that library there remains a link failure due to:
                Unresolved text symbol
                "std::_List_base<undo_item*,std::allocator<undo_item*> >::clear(void)"
        on several of the binaries. A work around for this problem is not
        known at this time.

        By default, _c_o_n_f_i_g_u_r_e will arrange for the _m_a_k_e _i_n_s_t_a_l_l command to
        install the aaeeggiiss package's files in _/_u_s_r_/_l_o_c_a_l_/_b_i_n,
        _/_u_s_r_/_l_o_c_a_l_/_c_o_m_/_a_e_g_i_s, _/_u_s_r_/_l_o_c_a_l_/_l_i_b_/_a_e_g_i_s, _/_u_s_r_/_l_o_c_a_l_/_m_a_n and
        _/_u_s_r_/_l_o_c_a_l_/_s_h_a_r_e_/_a_e_g_i_s.  There are a number of options which allow you
        to control the placement of these files.

        --prefix=_P_A_T_H
                This specifies the path prefix to be used in the installation.
                Defaults to _/_u_s_r_/_l_o_c_a_l unless otherwise specified.  The rest
                of these building instructions assume you are using the
                default _/_u_s_r_/_l_o_c_a_l as the install prefix.

        --exec-prefix=_P_A_T_H
                You can specify separate installation prefixes for
                architecture-specific files and architecture-independent
                files.  Defaults to _$_{_p_r_e_f_i_x_} unless otherwise specified.

        --bindir=_P_A_T_H
                This directory contains executable programs.  On a network,
                this directory may be shared between machines with identical
                hardware and operating systems; it may be mounted read-only.
                Defaults to _$_{_e_x_e_c___p_r_e_f_i_x_}_/_b_i_n unless otherwise specified.

        --datadir=_P_A_T_H
                This directory contains installed data, such as the
                documentation, reports and shell scripts distributed with
                Aegis.  On a network, this directory may be shared between all
                machines; it may be mounted read-only.  Defaults to
                _$_{_p_r_e_f_i_x_}_/_s_h_a_r_e_/_a_e_g_i_s unless otherwise specified.  An
                ``aegis'' directory will be appended if there is none in the
                specified path.

        --libdir=_P_A_T_H
                This directory contains installed data, such as the error
                message catalogues.  On a network, this directory may be
                shared between machines with identical hardware and operating
                systems; it may be mounted read-only.  Defaults to
                _$_{_e_x_e_c___p_r_e_f_i_x_}_/_l_i_b_/_a_e_g_i_s unless otherwise specified.  An
                ``aegis'' directory will be appended if there is none in the
                specified path.

        --mandir=_P_A_T_H
                This directory contains the on-line manual entries.  On a
                network, this directory may be shared between all machines; it
                may be mounted read-only.  Defaults to _$_{_p_r_e_f_i_x_}_/_m_a_n unless
                otherwise specified.

        --sharedstatedir=_P_A_T_H
                This directory contains share state information, such as the
                Aegis lock file, and information on the location of the
                various Aegis projects.  On a network, this directory may be
                shared between all machines; it MUST be mounted READ-WRITE.
                Defaults to _$_{_p_r_e_f_i_x_}_/_c_o_m_/_a_e_g_i_s unless otherwise specified.
                An ``aegis'' directory will be appended if there is none in
                the specified path.

        --sysconfdir=_P_A_T_H
                Location of system configuration files.  You should almost
                always use the _/_e_t_c directory.

        _c_o_n_f_i_g_u_r_e ignores any other arguments that you give it.

        On systems that require unusual options for compilation or linking
        that the _a_e_g_i_s package's _c_o_n_f_i_g_u_r_e script does not know about, you can
        give _c_o_n_f_i_g_u_r_e initial values for variables by setting them in the
        environment.  In Bourne-compatible shells, you can do that on the
        command line like this:
                $ CCCC==''ggcccc --ttrraaddiittiioonnaall'' LLIIBBSS==--llppoossiixx \
                  ..//ccoonnffiigguurree ----ssyyssccoonnffddiirr==//eettcc
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                $
        Here are the _m_a_k_e variables that you might want to override with
        environment variables when running _c_o_n_f_i_g_u_r_e.

        Variable: CC
                C compiler program.  The default is _c_c.

        Variable: INSTALL
                Program to use to install files.  The default is _i_n_s_t_a_l_l if
                you have it, _c_p otherwise.

        Variable: LIBS
                Libraries to link with, in the form -l_f_o_o -l_b_a_r.  The
                _c_o_n_f_i_g_u_r_e script will append to this, rather than replace it.

        If you need to do unusual things to compile the package, the author
        encourages you to figure out how _c_o_n_f_i_g_u_r_e could check whether to do
        them, and mail diffs or instructions to the author so that they can be
        included in the next release.

   CCoommmmoonn PPrroobblleemm
        It is very common that other packages, such as _g_e_t_t_e_x_t, _r_x and _z_l_i_b
        are installed using _/_u_s_r_/_l_o_c_a_l as the prefix.  However, the configure
        script can't work this out, even when it, too, is using _/_u_s_r_/_l_o_c_a_l as
        the prefix.

        To cope with this, you need to say
                $ CCPPPPFFLLAAGGSS==--II//uussrr//llooccaall//iinncclluuddee LLDDFFLLAAGGSS==--LL//uussrr//llooccaall//lliibb \
                  ..//ccoonnffiigguurree ----ssyyssccoonnffddiirr==//eettcc
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                $
        when running configure.  Substitute the appropriate prefix if you are
        using something other than the default _/_u_s_r_/_l_o_c_a_l prefix.  Watch the
        output... it should now find your installed packages correctly.

   AAIIXX CCoommmmaanndd LLiinnee LLeennggtthhss
        For some reason, AIX has a very short command line length limit by
        default.  You can extend this by using the command
                $ ssyyssttuunnee nnccaarrggss 00xx88000000
                $
        You will need to do this to build Aegis.  It has some very long link
        lines.

   PPRRIIVVIILLEEGGEESS
        There are a number of items in the generated _M_a_k_e_f_i_l_e and
        _c_o_m_m_o_n_/_c_o_n_f_i_g_._h file which affect the way _a_e_g_i_s works.  If they are
        altered too far, _a_e_g_i_s will not be able to function correctly.

        AEGIS_MIN_UID
                This specifies the minimum unprivileged uid on your system.
                UIDs less than this may not own projects, or play any other
                role in an aegis project.  The default value is 100.

        AEGIS_MIN_GID
                This specifies the minimum unprivileged GID on your system.
                GIDs less than this may not own projects, or play any other
                role in an aegis project.  The default value is 10.

        AEGIS_USER_UID
                This is the owner of files used by _a_e_g_i_s to record pointers to
                your projects.  It is _n_o_t used to own projects (i.e. it must
                be less than AEGIS_MIN_UID).  If possible, the _c_o_n_f_i_g_u_r_e
                script tries to work out what value was used previously, but
                you must specify the --prefix option correctly for this to
                work.  Because of operating system inconsistencies, this is
                specified numerically so that _a_e_g_i_s will work across NFS.  The
                default value is 3.

        AEGIS_USER_GID
                This is the group of files used by _a_e_g_i_s to record pointers to
                your projects.  It is _n_o_t used as the group for projects (i.e.
                it must be less than AEGIS_MIN_GID).  If possible, the
                _c_o_n_f_i_g_u_r_e script tries to work out what value was used
                previously, but you must specify the --prefix option correctly
                for this to work.  Because of operating system
                inconsistencies, this is specified numerically so that _a_e_g_i_s
                will work across NFS.  The default value is 3.

        DEFAULT_UMASK
                When _a_e_g_i_s runs commands for you, or creates files or
                directories for you, it will use the defined project umask.
                This is a project attribute, and may be altered using the
                _a_e_p_a(1) command.  The DEFAULT_UMASK is the umask initially
                given to all new projects created by the _a_e_n_p_r(1) command.
                The default value of DEFAULT_UMASK is 026.  See the comments
                in the _c_o_m_m_o_n_/_c_o_n_f_i_g_._h file for an explanation of the
                alternatives.

        It is required that _a_e_g_i_s run set-uid-root for all of its
        functionality to be available.  It is NOT possible to create an
        "aegis" account and make _a_e_g_i_s run set-uid-aegis.  This is because
        _a_e_g_i_s does things as various different user IDs, sometimes as many as
        3 in the one command.  This allows _a_e_g_i_s to use UNIX security rather
        than inventing its own, and also allows _a_e_g_i_s to work across NFS.  To
        be able to do these things, _a_e_g_i_s must be set-uid-root.  Appendix D of
        the _A_e_g_i_s _U_s_e_r _G_u_i_d_e explains why _a_e_g_i_s must run set-uid-root; please
        read it if you have concerns.

   RReemmeemmbbeerr YYoouurr SSeettttiinnggss
        It is important to remember your configuration settings.  This way, it
        will be a simple matter when it comes time to upgrade Aegis.

BBUUIILLDDIINNGG AAEEGGIISS
        All you should need to do is use the
                % mmaakkee
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                %
        command and wait.  When this finishes you should see a directory
        called _b_i_n containing several files: _a_e_g_i_s, _a_e_r_e_p_o_r_t, _a_e_f_i_n_d, _a_e_f_p,
        _f_i_n_d___s_i_z_e_s and _f_m_t_g_e_n.

        aaeeggiiss   The _a_e_g_i_s program is a project change supervisor.

        aaeeffpp    The _a_e_f_p program may be used to ``fingerprint'' files.  It is
                used to test Aegis (see the testing section, below) but it
                isn't installed.

        aereport
                The _a_e_r_e_p_o_r_t program is used to query Aegis' database.

        aefind  The _a_e_f_i_n_d program is used to find files.

        ffiinndd__ssiizzeess
                The _f_i_n_d___s_i_z_e_s program is a utility used to build the _a_e_g_i_s
                package; it is not intended for general use and should not be
                installed.

        ffmmttggeenn  The _f_m_t_g_e_n program is a utility used to build the _a_e_g_i_s
                package; it is not intended for general use and should not be
                installed.

        You can remove the program binaries and object files from the source
        directory by using the
                % mmaakkee cclleeaann
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                %
        command.  To remove all of the above files, and also remove the
        _M_a_k_e_f_i_l_e and _c_o_m_m_o_n_/_c_o_n_f_i_g_._h and _c_o_n_f_i_g_._s_t_a_t_u_s files, use the
                % mmaakkee ddiissttcclleeaann
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                %
        command.

        The file _a_u_x_/_c_o_n_f_i_g_u_r_e_._i_n is used to create _c_o_n_f_i_g_u_r_e by a GNU program
        called _a_u_t_o_c_o_n_f.  You only need to know this if you want to regenerate
        _c_o_n_f_i_g_u_r_e using a newer version of _a_u_t_o_c_o_n_f.

   UUppggrraaddiinngg
        When upgrading from one release to a newer one, it is important that
        all of the machines on your network are running the same release of
        Aegis.  This minimizes the possibility of database incompatibilities.
        In general, Aegis is backwards compatible with earlier releases, but
        not forwards compatible in the face of new capabilities.

OOTTHHEERR UUSSEEFFUULL SSOOFFTTWWAARREE
        Before describing how to test _a_e_g_i_s, you may need to grab some other
        free software, because the tests require it in some cases, and because
        it is generally useful in others.

        ccooookk    This is a dependency maintenance tool (DMT).  An example of a
                well-known DMT is _m_a_k_e(1), however this old faithful is mostly
                not sufficiently capable to meet the demands placed on it by
                the _a_e_g_i_s program, but _c_o_o_k certainly is.  The _c_o_o_k package is
                written by the same author as _a_e_g_i_s.  The _c_o_o_k package is
                necessary if test 11 is to be meaningful.  It is also used in
                the documentation.  The _c_o_o_k program may be found at the same
                archive site as the _a_e_g_i_s program.  The _c_o_o_k program is
                available under the terms of the GNU General Public License.

        GNU diff
                If the _d_i_f_f(1) utility supplied by your flavor of unix does
                not have the --cc option, you will need GNU diff for _a_e_p_a_t_c_h(1)
                to work (and the _a_e_p_a_t_c_h(1) tests to pass).  Context
                differences are also helpful for reviewing changes.  GNU diff
                is essential for Solaris, because the Solaris diff has bugs
                that Aegis' tests uncover.

        RCS     This is a source control package, and is available from any of
                the GNU archives.  The tests use RCS as the history mechanism,
                so it is necessary to have RCS for most of the tests to pass.
                (It is best to compile and install RCS _a_f_t_e_r GNU diff.  This
                is because the RCS configuration hard-codes the pathnames of
                the GNU diff utilities it needs into the RCS executables.)

        GNU Gettext
                Many systems do not yet supply the _g_e_t_t_e_x_t(3) function.  Aegis
                uses this function to internationalize its error messages.  If
                your system does not have this function, you should fetch and
                install GNU Gettext _b_e_f_o_r_e running the _c_o_n_f_i_g_u_r_e script.  If
                you do not, Aegis will still work, but the error messages will
                be rather terse, even for English speakers.  (You will be able
                to tell if your system has the internationalization library
                and functions, because the _c_o_n_f_i_g_u_r_e script will report
                finding -lintl and _(_C_W_l_i_b_i_n_t_l_._h and msgfmt in its running
                commentary.)  Please note that the GNU Gettext implementation
                is likely to be superior to the one supplied with your system,
                if any.  Remember to use the GNU gettext configure _-_-_w_i_t_h_-_g_n_u_-
                _g_e_t_t_e_x_t option if your system has native gettext tools.

                Please note: if you install GNU gettext package into
                _/_u_s_r_/_l_o_c_a_l (for example) you must ensure that the Aegis
                _._/_c_o_n_f_i_g_u_r_e script is told to also look in _/_u_s_r_/_l_o_c_a_l_/_i_n_c_l_u_d_e
                for include files (CFLAGS), and _/_u_s_r_/_l_o_c_a_l_/_l_i_b for library
                files (LDFLAGS).  Otherwise the _._/_c_o_n_f_i_g_u_r_e script will
                incorrectly conclude that GNU Gettext has not been installed.

                GNU Gettext version 0.11.1 or later is recommended.

        GNU Groff
                This GNU software replaces the documentation tools which
                (sometimes) come with UNIX.  They produce superior error
                messages, and support a wider range of functionality and
                fonts.  The _A_e_g_i_s User Guide was prepared with GNU Groff.  You
                need GNU Groff 1.14 or later.

        bison   This GNU software is a replacement for _y_a_c_c(1).  Some systems
                have very sick yaccs, and _b_i_s_o_n may be necessary if your
                system include files disagree strongly with your system's
                yacc.  The generated _M_a_k_e_f_i_l_e will use bison if you have it.

        fhist   This software, available under the terms of the GNU General
                Public License, is a set of file history and comparison
                utilities.  It was originally written by David I. Bell, and is
                based on the minimal difference algorithm by Eugene W. Myers.
                This copy is enhanced and maintained by the same author as
                _A_e_g_i_s, and may be found at the same archive site, in the same
                directory.

        rx      This library provides POSIX regular expressions, for systems
                which don't have them.  (Note: test 81 will fail if the POSIX
                regular expression functions are not available.)

        zlib    This library provides access to the GNU Zip (de)compression
                algorithm(s).  It is essential to have this installed before
                you build Aegis.  The home page may be found at
                http://www.gzip.org/zlib/ if you need to download it.  Note:
                this is not the same as zzlliibbcc which is Linux specific.

        tkdiff  This program shows the difference between two text files,
                nicely highlighted in color.  This is used by the _t_k_a_e_r and
                _a_e_c_o_m_p scripts (and probably others as they are contributed).
                By John M. Klassa, http://www.ede.com/free/tkdiff

        libmagic
                If _l_i_b_m_a_g_i_c(3) is present, the _a_e_g_e_t(1) CGI handler will use
                it to determine the MIME type of files.  This is installed by
                ffiillee version 4.0 and later (ftp://ftp.astron.com/pub/file/),
                and uses the same database as the _f_i_l_e(1) command.  If this
                library is not present when Aegis is built, a much less
                accurate method will be used.

        The tests also depend on the presence of a number of common UNIX
        programs, including but not limited to: _c_c, _c_m_p, _d_i_f_f, eedd, _f_i_n_d, _m_a_k_e,
        the _R_C_S package, etc.  Depending on your version of UNIX, some or all
        of these programs may be in optional packages.  (This is especially
        true of Linux.)  You need to ensure that these programs are correctly
        installed before you run the tests.

TTEESSTTIINNGG AAEEGGIISS
        The _A_e_g_i_s program comes with a test suite.  To run this test suite,
        use the command
                % mmaakkee ssuurree
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                Passed All Tests
                %

        The tests take a minute or two each, with a few very fast, and a
        couple very slow, but it varies greatly depending on your CPU.

   KKnnoowwnn PPrroobblleemmss
        In order to get the long form of the error messages on Solaris, it is
        necessary to install GNU Gettext before running ./configure, and once
        ./configure has been run you need to edit the Makefile to statically
        link the executables.

        The tests assume that the RCS commands "ci", "co", "rlog" and "rcs"
        are somewhere in the command search PATH.

        The _t_e_s_t_/_0_0_/_t_0_0_1_1_a_._s_h file assumes the _c_o_o_k(1) command by the author
        is somewhere in the command search path.  This test reproduces the
        example used in Chapter 3 of the User Guide.  If the _c_o_o_k(1) command
        is not available, this test gives a pass result without testing
        anything.

        If you are using HPUX and GCC, test 32 fails if you use -O2.  You need
        to edit the Makefile to only optimize at -O, delete the objects and
        rebuild.

        If you are using Solaris' diff, test 133 will report ``no result''.
        You need to install GNU diff, because the Solaris diff has bugs.

        If you are using Sun's _t_m_p_f_s file system as your _/_t_m_p directory, the
        tests will fail.  This is because the _t_m_p_f_s file system does not
        support file locking.  Set the _A_E_G_I_S___T_M_P environment variable to
        somewhere else before running the tests.  Something like
                % sseetteennvv AAEEGGIISS__TTMMPP //uussrr//ttmmpp
                %
        is usually sufficient if you are using C shell, or
                $ AAEEGGIISS__TTMMPP==//uussrr//ttmmpp
                $ eexxppoorrtt AAEEGGIISS__TTMMPP
                $
        if you are using Bourne shell.  Remember, this must be done before
        running the tests.

        If the tests fail due to errors complaining of "user too privileged"
        you will need to adjust the _A_E_G_I_S___M_I_N___U_I_D defined in the
        _c_o_m_m_o_n_/_c_o_n_f_i_g_._h file.  Similarly for "group too privileged", although
        this is rarer.  This error message will also occur if you run the
        tests as root: the tests must be run as a mortal each time.

        If the POSIX regular expression functions are not available, test 81
        will fail.  The GNU rx library provides these.  Installing it and re-
        configuring and re-building Aegis will solve the problem.

TTEESSTTIINNGG SSEETT--UUIIDD--RROOOOTT
        If the _A_e_g_i_s program is not set-uid-root then it runs in "test" mode
        which gives you some confidence that _A_e_g_i_s is working before being
        tested again when it is set-uid-root.  Two pass testing like this
        means that you need not trust your system to a set-uid-root program
        which is not known to work.

        You will need to do a little of the install, to create the directory
        which will contain _A_e_g_i_s' lock file.  (Note that these building
        instructions assume you are using the default _/_u_s_r_/_l_o_c_a_l as the
        install prefix.  You will need to substitute as appropriate if you are
        using some other prefix.)
                # mmaakkee iinnssttaallll--lliibbddiirr
                mkdir /usr/local/lib/aegis
                chown 3 /usr/local/lib/aegis
                chgrp 3 /usr/local/lib/aegis
                chmod 0755 /usr/local/lib/aegis
                mkdir /usr/local/com/aegis
                chown 3 /usr/local/com/aegis
                chgrp 3 /usr/local/com/aegis
                chmod 0755 /usr/local/com/aegis
                chown root bin/aegis
                chmod 4755 bin/aegis
                #
        As you can see, the previous command also changed _A_e_g_i_s to be set-uid-
        root.  Once this has been done, _A_e_g_i_s should be tested again, in the
        same manner as before.
                % mmaakkee ssuurree
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                Passed All Tests
                %

        You should test _A_e_g_i_s as a mortal in both passes, rather than as root,
        to be sure the set-uid-root functionality is working correctly.

        It is required that _A_e_g_i_s run set-uid-root for all of its
        functionality to be available.  It is NOT possible to create an
        "aegis" account and make _A_e_g_i_s run set-uid-aegis.  This is because
        _A_e_g_i_s does things as various different user IDs, sometimes as many as
        3 in the one command.  This allows _A_e_g_i_s to use UNIX security rather
        than inventing its own, and also allows _A_e_g_i_s to work across NFS.  To
        be able to do these things, _A_e_g_i_s must be set-uid-root.  Appendix D of
        the _A_e_g_i_s _U_s_e_r _G_u_i_d_e explains why _A_e_g_i_s must run set-uid-root; please
        read it if you have concerns.

IINNSSTTAALLLLIINNGG AAEEGGIISS
        As explained in the _S_I_T_E _C_O_N_F_I_G_U_R_A_T_I_O_N section, above, the _A_e_g_i_s
        package is installed under the _/_u_s_r_/_l_o_c_a_l tree by default.  Use the
        --prefix=_P_A_T_H option to _c_o_n_f_i_g_u_r_e if you want some other path.

        All that is required to install the _A_e_g_i_s package is to use the
                % mmaakkee iinnssttaallll
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                %
        command.  Control of the directories used may be found in the first
        few lines of the _M_a_k_e_f_i_l_e file if you want to bypass the _c_o_n_f_i_g_u_r_e
        script.

        The above procedure assumes that the _s_o_e_l_i_m(1) command is somewhere in
        the command search _P_A_T_H.  The _s_o_e_l_i_m(1) command is available as part
        of the _G_N_U _G_r_o_f_f package, mentioned below in the _P_R_I_N_T_E_D _M_A_N_U_A_L_S
        section.  If you don't have it, but you do have the _c_o_o_k package, then
        a link from _r_o_f_f_p_p to _s_o_e_l_i_m will also work.

        The above procedure also assumes that the _$_(_p_r_e_f_i_x_)_/_m_a_n_/_m_a_n_1 and
        _$_(_p_r_e_f_i_x_)_/_m_a_n_/_m_a_n_5 directories already exist.  If they do not, you
        will need to _m_k_d_i_r them manually.

UUSSEERR CCOONNFFIIGGUURRAATTIIOONN
        The _A_e_g_i_s command is assumed to be in a generally accessible place,
        otherwise users will need to add the relevant directory to their PATH.
        Users should add
                source /usr/local/lib/aegis/cshrc
        to the end of their _._c_s_h_r_c file for the recommended aliases.  (Note
        that these building instructions assume you are using the default
        _/_u_s_r_/_l_o_c_a_l as the install prefix.  You will need to substitute as
        appropriate if you are using some other prefix.)

        There is also a _p_r_o_f_i_l_e for users of the Bourne shell (it assumes you
        have a version of the Bourne shell which has functions).  Users should
        add
                . /usr/local/share/aegis/profile
        to the end of their _._p_r_o_f_i_l_e file for the recommended aliases.  (This
        _p_r_o_f_i_l_e assumes that users are using a Bourne shell which understands
        functions.)

        The _/_u_s_r_/_l_o_c_a_l_/_c_o_m_/_a_e_g_i_s_/_s_t_a_t_e file contains pointers to "system"
        projects.  Users may add their own project pointers (to their own
        projects) by putting a search path into the _A_E_G_I_S___P_A_T_H environment
        variable.  The system part is always automatically appended by _A_e_g_i_s.
        The default, already set by the _/_u_s_r_/_l_o_c_a_l_/_l_i_b_/_a_e_g_i_s_/_c_s_h_r_c file, is
        _$_H_O_M_E_/_l_i_b_/_a_e_g_i_s.  Do not create this directory, _A_e_g_i_s is finicky and
        wants to do this itself.

        Where projects reside is completely flexible, be they system projects
        or user projects.  They are not kept under the _/_u_s_r_/_l_o_c_a_l_/_c_o_m_/_a_e_g_i_s
        directory, this directory only contains pointers.  (Note that these
        building instructions assume you are using the default _/_u_s_r_/_l_o_c_a_l as
        the install prefix.  You will need to substitute as appropriate if you
        are using some other prefix.)

   WWeebb IInntteerrffaaccee
        If you have a Web server, you may like to install the Aegis web
        interface.  You do this by copying the _a_e_g_e_t script from
        _/_u_s_r_/_l_o_c_a_l_/_b_i_n_/_a_e_g_e_t into your web server's _c_g_i_-_b_i_n directory.  There
        is a _a_e_g_e_t_._i_n_s_t_a_l helper script, if you don't know where your web
        server's _c_g_i_-_b_i_n directory is.

        You may prefer to use a symbolic link, as this will be more stable
        across Aegis upgrades.  However, this requires a corresponding _f_o_l_l_o_w_-
        _s_y_m_l_i_n_k_s setting in your web server's configuration file.  (Use the
        _a_e_g_e_t_._i_n_s_t_a_l _-_s option.)

        You may need to wrap _a_e_g_e_t with a script which sets the _A_E_G_I_S___P_A_T_H
        environment variable, if you want it to be able to see more projects
        than just the global projects.  You may also need to set the _P_A_T_H
        environment variable, if you don't have the Aegis install path in the
        default path.

        (Note that these building instructions assume you are using the
        default _/_u_s_r_/_l_o_c_a_l as the install prefix.  You will need to substitute
        as appropriate if you are using some other prefix.)

PPRRIINNTTEEDD MMAANNUUAALLSS
        This distribution contains the sources to all of the documentation for
        _A_e_g_i_s, however the simplest way to get the documentation is by
        anonymous FTP; PostScript files of the User Guide and Reference Manual
        are available from the FTP sites listed in the README file.

        The Reference Manual contains the README and BUILDING files, as well
        as all of the section 1 and section 5 manual pages.  The Reference
        Manual is about 200 pages long.

        The User Guide contains information about how to use Aegis, including
        a fully worked example.  The User Guide is about 100 pages long.

TTIIMMEE SSYYNNCCHHRROONNIIZZAATTIIOONN
        The _A_e_g_i_s program uses time stamps to remember whether various events
        have happened and when.  If you are using _A_e_g_i_s in a networked
        environment, typically a server and data-less workstations, you need
        to make absolutely sure that all of the machines agree about the time.

        If possible, use the time daemon.  Otherwise, use _r_d_a_t_e(8) via _c_r_o_n(8)
        every hour or less.

GGEETTTTIINNGG HHEELLPP
        If you need assistance with _A_e_g_i_s, please do not hesitate to contact
        the author at
                Peter Miller <millerp@canb.auug.org.au>
        Any and all feedback is welcome.

        When reporting problems, please include the version number given by
        the
                % aaeeggiiss --vveerrssiioonn
                aegis version _4_._2_0
                _._._.
                %
        command.  Please run this command to get the exact number, do not send
        the text of this example.

   RRuunnttiimmee CChheecckkiinngg
        In the _c_o_m_m_o_n_/_m_a_i_n_._h file, there is a define of _D_E_B_U_G in comments.  If
        the comments are removed, extensive debugging is turned on.  This
        causes some performance loss, but performs much run-time checking and
        adds the --TTRRAAccee command line option.

        When the --TTRRAAccee command line option is followed by one or more file
        names, it turns on execution traces in those source files.  It is
        usually best to place this on the end of the command line so that
        names of the files to be traced are not confused with other file names
        or strings on the command line.

   PPrroobblleemm RReeppoorrttss
        If you send email to the author, please include the following
        information:

        1. The type of UNIX
                The author will need to know the brand and version of UNIX you
                are using, or if it is not UNIX but something else.  The
                output of "uname -sr" is usually sufficient (but not all
                systems have it).

        2. The Version Number
                In any information you send, please include the version number
                reported in the _c_o_m_m_o_n_/_p_a_t_c_h_l_e_v_e_l_._h file, or `aegis -vers` if
                you can get it to compile.

        3. The Archive Site
                When and where you obtained this version of _A_e_g_i_s.  If you
                tell me nothing else, tell me this (and, hopefully, why you
                did nothing else).

        4. Unpacking
                Did you have problems unpacking _A_e_g_i_s?  This probably isn't a
                problem with the .tar.Z distribution, but you could have
                obtained a shar format copy.

        5. Building
                Did you have problems building _A_e_g_i_s?  This could have been
                the instructions included, it could have been the configure
                script, it could have been the Makefile, or anything else.

        6. Testing, Non-Set-Uid
                Did you have problems with the tests?  You could have had
                problems running them, or some of them could have failed.  If
                some tests fail but not others, please let me know _w_h_i_c_h ones
                failed, and include the fact that _A_e_g_i_s was nnoott set-uid-root
                at the time.  The -k option to _m_a_k_e can be useful if some
                tests fail but not others.

        7. Testing, Set-Uid-Root
                Did you have problems with the tests when _A_e_g_i_s was set-uid-
                root?  You could have had problems running them, or some of
                them could have failed.  If some tests fail but not others,
                please let me know _w_h_i_c_h ones failed, and include the fact
                that _A_e_g_i_s was set-uid-root at the time.

        8. Installation
                Did you have problems installing _A_e_g_i_s?  This could have been
                the instructions, or anything else.

        At this point it would probably be a very good idea to print out the
        manual entries and read them carefully.  You will also want to print a
        copy of the User Guide; if you don't have groff, there should be a
        PostScript copy at the archive site.  It is a known flaw that the User
        Guide is incomplete, contributions are most welcome.

        9. The Example Project
                After reading the User Guide, it is often useful to manually
                run through the example in chapter 3.  You will need to do
                more than one change, hopefully several; the first change is
                not representative of the system.  Did you manually do the
                example?  Did you find flaws in the User Guide or manual
                entries?

        10. Using Aegis
                Did you have problems using _A_e_g_i_s?  This is a whole can of
                worms.  If possible, include a shell script similar to the
                tests which accompany _A_e_g_i_s, which reproduces the bug.  Exit
                code 1 on failure (bug), exit code 0 on success (for when bug
                is fixed).

        11. The Source Code
                Did you read the code?  Did you write some code?  If you read
                the code and found problems, fixed them, or extended _A_e_g_i_s,
                these contributions are most welcome.  I reserve the right to
                modify or reject such contributions.

        The above list is inclusive, not exclusive.  Any and all feedback is
        greatly appreciated, as is the effort and interest required to produce
        it.

LLIICCEENNSSEE
        The _A_e_g_i_s program is free software; you can redistribute it and/or
        modify it under the terms of the GNU General Public License as
        published by the Free Software Foundation; either version 2 of the
        License, or (at your option) any later version.

        The _A_e_g_i_s program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
        General Public License for more details.

        It should be in the _L_I_C_E_N_S_E file included in this distribution.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/

WWIINNDDOOWWSS--NNTT
        It is possible to build Aegis for Windows-NT.  I have only done this
        using the Cygnus freeware CygWin32 system, though it may be possible
        with other Unix porting layers also.

   CCaavveeaatt
        This document only describes a ssiinnggllee uusseerr port of Aegis to Windows
        NT.

        Aegis depends on the underlying security provided by the operating
        system (rather than re-invent yet another security mechanism).
        However, in order to do this, Aegis uses the POSIX _s_e_t_e_u_i_d(2) system
        call, which has no direct equivalent on Windows NT.  This makes
        porting difficult.  SSiinnggllee uusseerr ports are possible (_e_._g_. using Cygwin
        (http://www.cygwin.com/), but are not usually what folks want.

        Compounding this is the fact that many sites want to develop their
        software for both Unix and Windows NT simultaneously.  This means that
        the security of the repository needs to be guaranteed to be handled in
        the same way by both operating systems, otherwise one can act as a
        ``back door'' into the repository.  Many sites do not have the same
        users and permissions (sourced from the same network register of
        users) on both Unix and Windows NT, making the mapping almost
        impossible even if the security models did actually correspond.

        Most sites using Aegis and Windows NT together do so by running Aegis
        on the Unix systems, but building and testing on the NT systems.  The
        work areas and repository are accessed via Samba or NFS.

   TThhee SSoouurrccee
        You need to FTP the Cygwin system from RedHat.  It can be found at
                http://www.cygwin.com/
        and then follow the links.  The original version used was B20.1, but
        more recently 1.1.7 has been used.

        It is _a_b_s_o_l_u_t_e_l_y _e_s_s_e_n_t_i_a_l to run the _m_k_p_a_s_s_w_d and _m_k_g_r_o_u_p commands,
        otherwise Aegis will give fatal errors about unknown users and groups.
        See the Cygwin README for instructions.

   MMoouunnttiinngg TThhiinnggss
        You need to mount a directory onto /tmp, or lots of things, and
        especially _b_a_s_h(1), don't work.  If you are in a heavily networked
        environment, like me, you need to know that using a networked drive
        for /tmp just doesn't work.  I have no idea why.  Use
                mount C:/temp /tmp
        instead.  (Or some other local drive.)

        Just a tip for all of you who, like me, know Unix much better than you
        know Windows-NT: the left-hand mount argument needs to be specified
        with a drive letter (_e_._g_. C:_) _r_a_t_h_e_r _t_h_a_n _w_i_t_h _a _d_o_u_b_l_e _s_l_a_s_h _(_e_._g_.
        _n_o_t //C_) _u_n_l_e_s_s _i_t_s _W_i_n_d_o_w_s_-_N_T _n_a_m_e _s_t_a_r_t_s _w_i_t_h _\_\_.

        You need to follow the install instructions about _/_b_i_n_/_s_h, otherwise
        shell scripts that start with #!/bin/sh don't work, among other
        things.  This includes the ./configure script, and the scripts it
        writes (_e_._g_. config.status).

        You will want to mount your various network drives onto the same
        places they appear on your Unix hosts.  This way you don't need to
        learn two names for all your files.

        Mounts persist across Cygwin sessions.  They are stored in a registry
        file somewhere.  You will not need to do all this every time!

   TToooo MMuucchh AAddmmiinniissttrraattoorr
        If you have administrator privilege on your Windows NT box, you need
        to get rid of it.  (Have a second admin account instead.)  This is
        because Windows NT will make the files belong to the wrong user for
        files on _s_o_m_e partitions, like _/_t_m_p.  (This took me days to work out!)
        This confuses both Aegis _a_n_d RCS.

        If you get weird ``Permission denied'' errors from amazingly unlikely
        causes, this is probably why.

   BBeeffoorree YYoouu SSttaarrtt
        There are several pieces of software you need before you can build
        Aegis on Cygwin.

        I'm going to keep mentioning ``your local GNU mirror''.  You can find
                GNU at http://www.gnu.org, however you are better off using a
                local mirror, and these are scattered around the globe.
                Follow the ``mirrors'' link on their front page to find your
                closest mirror.  Also, it's often a good idea to configure
                these packages with the ``--with-gnu-gettext'' option to their
                ./configure commands.

        DDoo nnoott uussee WWiinnZZiipp to unpack the tarball.  It has a nasty habit of
                turning all of the newlines into CRLFs.  This will confuse
                _l_o_t_s of utilities, especially GNU Groff.  Use the ``_t_a_r _x_z_f
                _a_e_g_i_s_-_4_._2_0_._t_a_r_._g_z'' command from within Cygwin.

        Make sure the Cygwin you are using has GNU Groff 1.15 or later
                (use a ``groff -v'' command).  Grab and install the latest
                from your local GNU mirror, if it isn't.

        util-linux
                You need to get GNU rx, but to make it work you have to find a
                _t_s_o_r_t command, so that GNU rx's _._/_c_o_n_f_i_g_u_r_e script works.  Try
                the latest copy of system/misc/util-linux-?.?.tar.gz from the
                metalab.unc.edu Linux archive (or a mirror).  Simply build and
                install _m_i_s_c_-_u_t_i_l_s_/_t_s_o_r_t_._c by hand.

        GNU rx  Once you have _t_s_o_r_t installed, you will be able to get GNU rx
                configured.  Get a copy from your local GNU mirror.

        zlib    You need to grab a copy of _z_l_i_b; the same source as works for
                Unix will work for Cygwin.  It will install as a static
                library.

        GNU diffutils
                You need GNU diffults, because when you come to configure GNU
                RCS (next) it would otherwise complain about a stupid _d_i_f_f and
                a missing _d_i_f_f_3 command.  The _i_n_s_t_a_l_l_-_s_h script is broken, so
                you'll need to do the final step in the install by hand.

        GNU RCS All of Aegis' tests assume RCS is present.  Also, you are
                going to need _s_o_m_e_t_h_i_n_g for a history tool.  The _i_n_s_t_a_l_l_-_s_h
                script is broken, so you'll need to do the final step in the
                install by hand.

   CCoonnffiigguurree
        The configure and build step should be the same as for Unix, as
        described above.  All the problems I encountered were to do with
        getting the mounts just right.  (But expect it to be dog slow compared
        to Linux or FreeBSD on the same box.)

        Sharutils
                You need the _u_u_d_e_c_o_d_e command for several of the tests, and
                this may be found in the GNU Sharutils package.  You can get a
                copy from your local GNU mirror.

        The configure step is almost the same as for Unix.  I know you are
        itching to get typing, but read through to the install section before
        you configure anything.
                bbaasshh$$ ./configure
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                bbaasshh$$

   BBuuiilldd
        The build step is exactly the same as for Unix, and you shouldn't
        notice any difference...
                bbaasshh$$ make
                bbaasshh$$

   TTeesstt
        The tests are run in the same way as the Unix tests, but you don't
        need to run the set-uid-root variants, because no such thing exists
        under Windows NT.
                bbaasshh$$ make sure
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                PPaasssseedd AAllll TTeessttss
                bbaasshh$$

        Unfortunately, it isn't that simple.  There are a number of things you
        will see go wrong...

        +o Several tests fail because _e_d isn't there.

        +o Several tests fail because _c_i (RCS 5.7) dumps core much too often
          for my liking.

        +o A couple of tests fail because they don't expect the ``.exe''
          extension on executable files.

        +o A couple of tests (notably, the _a_e_d_i_s_t tests) fail because of the
          CRLF _v_s NL dichotomy.  This means that the expected results don't
          match, not that it isn't working.

        Despite all the bad news, the vast majority of tests pass, and the
        others have good excuses.

   IInnssttaallll
        Installing the software works as usual, though you need to make some
        choices right at the start (I told you to read this all the way
        through first).  If you want to use the ``_/_u_s_r_/_l_o_c_a_l'' prefix (or any
        other install prefix) you mount it right at the start.  For anything
        other than the ``_/_u_s_r_/_l_o_c_a_l'' default prefix, you also needed to give
        a ``----pprreeffiixx==_b_l_a_h_b_l_a_h_'_' _a_r_g_u_m_e_n_t _t_o _t_h_e _c_o_n_f_i_g_u_r_e _s_c_r_i_p_t_, _r_i_g_h_t _a_t _t_h_e
        _s_t_a_r_t_.
                bbaasshh$$ _m_a_k_e _i_n_s_t_a_l_l
                _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
                bbaasshh$$



aegis(1)                                                              aegis(1)



NNAAMMEE
        aegis - project change supervisor

SSYYNNOOPPSSIISS
        aaeeggiiss _f_u_n_c_t_i_o_n [ _o_p_t_i_o_n...  ]
        aaeeggiiss --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s program is a transaction base software configuration
        management system.  It is used to supervise the development and
        integration of changes into projects.

FFUUNNCCTTIIOONNSS
        The following functions are available:

        --BBuuiilldd
                The _a_e_g_i_s _-_B_u_i_l_d command is used to build a project.  See
                _a_e_b(1) for more information.

        --CChhaannggee__AAttttrriibbuutteess
                The _a_e_g_i_s _-_C_h_a_n_g_e___A_t_t_r_i_b_u_t_e_s command is used to modify the
                attributes of a change.  See _a_e_c_a(1) for more information.

        --CChhaannggee__DDiirreeccttoorryy
                The _a_e_g_i_s _-_C_h_a_n_g_e___D_i_r_e_c_t_o_r_y command is used to change
                directory.  See _a_e_c_d(1) for more information.

        --CChhaannggee__OOwwnneerr
                The _a_e_g_i_s _-_C_h_a_n_g_e___O_w_n_e_r command is used to facilitate
                reassignment of the developer of a change in the _b_e_i_n_g
                _d_e_v_e_l_o_p_e_d state.  See _a_e_c_h_o_w_n(1) for more information.

        --CCLLoonnee
                The _a_e_g_i_s _-_C_L_o_n_e command is used to exactly replicate a
                change, usually on another branch.  See _a_e_c_l_o_n_e(1) for more
                information.

        --CCooPPyy__ffiillee
                The _a_e_g_i_s _-_C_o_P_y___f_i_l_e command is used to copy a file into a
                change.  See _a_e_c_p(1) for more information.

        --CCooPPyy__ffiillee__UUnnddoo
                The _a_e_g_i_s _-_C_o_p_y___F_i_l_e___U_n_d_o command is used to remove a copy of
                a file from a change.  See _a_e_c_p_u(1) for more information.

        --DDEELLttaa__NNAAmmee
                The _a_e_g_i_s _-_D_E_L_t_a___N_A_m_e command is used to add a symbolic name
                to a project delta.  See _a_e_d_n(1) for more information.

        --DDeevveelloopp__BBeeggiinn
                The _a_e_g_i_s _-_D_e_v_e_l_o_p___B_e_g_i_n command is used to begin development
                of a change.  See _a_e_d_b(1) for more information.

        --DDeevveelloopp__BBeeggiinn__UUnnddoo
                The _a_e_g_i_s _-_D_e_v_e_l_o_p___B_e_g_i_n___U_n_d_o command is used to cease
                development of a change.  See _a_e_d_b_u(1) for more information.

        --DDeevveelloopp__EEnndd
                The _a_e_g_i_s _-_D_e_v_e_l_o_p___E_n_d command is used to complete development
                of a change.  See _a_e_d_e(1) for more information.

        --DDeevveelloopp__EEnndd__UUnnddoo
                The _a_e_g_i_s _-_D_e_v_e_l_o_p___E_n_d___U_n_d_o command is used to recall a change
                for further development.  See _a_e_d_e_u(1) for more information.

        --DDIIFFFFeerreennccee
                The _a_e_g_i_s _-_D_I_F_F_e_r_e_n_c_e command is used to find differences
                between development directory and baseline.  See _a_e_d(1) for
                more information.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --IInntteeggrraattee__BBeeggiinn
                The _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___B_e_g_i_n command is used to begin
                integrating a change.  See _a_e_i_b(1) for more information.

        --IInntteeggrraattee__BBeeggiinn__UUnnddoo
                The _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___B_e_g_i_n___U_n_d_o command is used to cease
                integrating a change.  See _a_e_i_b_u(1) for more information.

        --IInntteeggrraattee__FFaaiill
                The _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___F_a_i_l command is used to fail a change
                integration.  See _a_e_i_f_a_i_l(1) for more information.

        --IInntteeggrraattee__PPaassss
                The _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___P_A_S_S command is used to pass a change
                integration.  See _a_e_i_p_a_s_s(1) for more information.

        --LLiisstt
                The _a_e_g_i_s _-_L_i_s_t command is used to list interesting things.
                See _a_e_l(1) for more information.

        --MMooVVee__ffiillee
                The _a_e_g_i_s _-_M_o_V_e___f_i_l_e command is used to change the name of a
                file as part of a change.  See _a_e_m_v(1) for more information.

        --MMooVVee__ffiillee__UUnnddoo
                The _a_e_g_i_s _-_M_o_V_e___f_i_l_e___U_n_d_o command is used to undo a change to
                the name of a file as part of a change.  See _a_e_m_v_u(1) for more
                information.

        --NNeeww__AAddmmiinniissttrraattoorr
                The _a_e_g_i_s _-_N_e_w___A_d_m_i_n_i_s_t_r_a_t_o_r command is used to add new
                administrators to a project.  See _a_e_n_a(1) for more
                information.

        --NNeeww__BBRRaanncchh
                The _a_e_g_i_s _-_N_e_w___B_R_a_n_c_h command is used to add a new branch to a
                project.  See _a_e_n_b_r(1) for more information.

        --NNeeww__BBRRaanncchh__UUnnddoo
                The _a_e_g_i_s _-_N_e_w___B_R_a_n_c_h___U_n_d_o command is used to remove a new
                branch from a project.  See _a_e_n_b_r_u(1) for more information.

        --NNeeww__CChhaannggee
                The _a_e_g_i_s _-_N_e_w___C_h_a_n_g_e command is used to add a new change to a
                project.  See _a_e_n_c(1) for more information.

        --NNeeww__CChhaannggee__UUnnddoo
                The _a_e_g_i_s _-_N_e_w___C_h_a_n_g_e___U_n_d_o command is used to remove a new
                change from a project.  See _a_e_n_c_u(1) for more information.

        --NNeeww__DDeevveellooppeerr
                The _a_e_g_i_s _-_N_e_w___D_e_v_e_l_o_p_e_r command is used to add new developers
                to a project.  See _a_e_n_d(1) for more information.

        --NNeeww__FFiillee
                The _a_e_g_i_s _-_N_e_w___F_i_l_e command is used to add new files to a
                change.  See _a_e_n_f(1) for more information.

        --NNeeww__FFiillee__UUnnddoo
                The _a_e_g_i_s _-_N_e_w___F_i_l_e___U_n_d_o command is used to remove new files
                from a change.  See _a_e_n_f_u(1) for more information.

        --NNeeww__IInntteeggrraattoorr
                The _a_e_g_i_s _-_N_e_w___I_n_t_e_g_r_a_t_o_r command is used to add new
                integrators to a project.  See _a_e_n_i(1) for more information.

        --NNeeww__PPrroojjeecctt
                The _a_e_g_i_s _-_N_e_w___P_r_o_j_e_c_t command is used to create a new project
                to be watched over by aegis.  See _a_e_n_p_r(1) for more
                information.

        --NNeeww__PPrroojjeecctt__AAlliiaass
                The _a_e_g_i_s _-_N_e_w___P_r_o_j_e_c_t___A_l_i_a_s command is used to create a new
                project alias.  See _a_e_n_p_a(1) for more information.

        --NNeeww__RReeLLeeaaSSee
                The _a_e_g_i_s _-_N_e_w___R_e_L_e_a_S_e command is used to create a new project
                from an existing project.  See _a_e_n_r_l_s(1) for more information.

        --NNeeww__RReeVViieewweerr
                The _a_e_g_i_s _-_N_e_w___R_e_V_i_e_w_e_r command is used to add new reviewers
                to a project.  See _a_e_n_r_v(1) for more information.

        --NNeeww__TTeesstt
                The _a_e_g_i_s _-_N_e_w___T_e_s_t command is used to add a new test to a
                change.  See _a_e_n_t(1) for more information.

        --NNeeww__TTeesstt__UUnnddoo
                The _a_e_g_i_s _-_N_e_w___T_e_s_t___U_n_d_o command is used to remove new tests
                from a change.  See _a_e_n_t_u(1) for more information.

        --PPrroojjeecctt__AAttttrriibbuutteess
                The _a_e_g_i_s _-_P_r_o_j_e_c_t___A_t_t_r_i_b_u_t_e_s command is used to modify the
                attributes of a project.  See _a_e_p_a(1) for more information.

        --RReemmoovvee__AAddmmiinniissttrraattoorr
                The _a_e_g_i_s _-_R_e_m_o_v_e___A_d_m_i_n_i_s_t_r_a_t_o_r command is used to remove
                administrators from a project.  See _a_e_r_a(1) for more
                information.

        --RReemmoovvee__DDeevveellooppeerr
                The _a_e_g_i_s _-_R_e_m_o_v_e___D_e_v_e_l_o_p_e_r command is used to remove
                developers from a project.  See _a_e_r_d(1) for more information.

        --RReeMMoovvee__ffiillee
                The _a_e_g_i_s _-_R_e_M_o_v_e___f_i_l_e command is used to add files to be
                deleted to a change.  See _a_e_r_m(1) for more information.

        --RReeMMoovvee__ffiillee__UUnnddoo
                The _a_e_g_i_s _-_R_e_m_o_v_e___F_i_l_e___U_n_d_o command is used to remove files to
                be deleted from a change.  See _a_e_r_m_u(1) for more information.

        --RReemmoovvee__IInntteeggrraattoorr
                The _a_e_g_i_s _-_R_e_m_o_v_e___I_n_t_e_g_r_a_t_o_r command is used to remove
                integrators from a project.  See _a_e_r_i(1) for more information.

        --RReeMMoovvee__PPRRoojjeecctt
                The _a_e_g_i_s _-_R_e_M_o_v_e___P_R_o_j_e_c_t command is used to remove a project.
                See _a_e_r_m_p_r(1) for more information.

        --RReemmoovvee__PPrroojjeecctt__AAlliiaass
                The _a_e_g_i_s _-_R_e_m_o_v_e___P_r_o_j_e_c_t___A_l_i_a_s command is used to remove a
                project alias.  See _a_e_r_p_a(1) for more information.

        --RReemmoovvee__RReeVViieewweerr
                The _a_e_g_i_s _-_R_e_m_o_v_e___R_e_V_i_e_w_e_r command is used to remove reviewers
                from a project.  See _a_e_r_r_v(1) for more information.

        --RReePPoorrTT
                The _a_e_g_i_s _-_R_e_P_o_r_T command is used to generate reports from
                aegis' database.  These reports may be written by users, or be
                distributed with aegis.

        --RReevviieeww__FFaaiill
                The _a_e_g_i_s _-_R_e_v_i_e_w___F_a_i_l command is used to fail a change
                review.  See _a_e_r_f_a_i_l(1) for more information.

        --RReevviieeww__BBeeggiinn
                The _a_e_g_i_s _-_R_e_v_i_e_w___B_e_g_i_n command is used to begin to review a
                change.  See _a_e_r_b(1) for more information.

        --RReevviieeww__BBeeggiinn__UUnnddoo
                The _a_e_g_i_s _-_R_e_v_i_e_w___B_e_g_i_n___U_n_d_o command is used to stop reviewing
                a change.  See _a_e_r_b_u(1) for more information.

        --RReevviieeww__PPaassss
                The _a_e_g_i_s _-_R_e_v_i_e_w___P_A_S_S command is used to pass a change
                review.  See _a_e_r_p_a_s_s(1) for more information.

        --RReevviieeww__PPaassss__UUnnddoo
                The _a_e_g_i_s _-_R_e_v_i_e_w___P_a_s_s___U_n_d_o command is used to rescind a
                change review pass.  See _a_e_r_p_u(1) for more information.

        --TTeesstt
                The _a_e_g_i_s _-_T_e_s_t command is used to run tests.  See _a_e_t(1) for
                more information.

        --VVEERRSSiioonn
                The _a_e_g_i_s _-_V_E_R_S_i_o_n command is used to get copyright and
                version details.  See _a_e_v(1) for more information.

        All function selectors are case insensitive.  Function selectors may
        be abbreviated; the abbreviation is the upper case letters.  Function
        selectors must appear as the first command line argument.

   NNoottiiffiiccaattiioonn
        Many _a_e_g_i_s commands are capable of notification that they have been
        run.  The individual commands document those specific to them.  For
        documentation on the various configurable notifications, see
        _a_e_p_c_o_n_f(5) and _a_e_p_a_t_t_r(5) for more information.

OOPPTTIIOONNSS
        The following options are available to all functions.  These options
        may appear anywhere on the command line following the function
        selectors.

        --LLIIBBrraarryy _a_b_s_p_a_t_h
                This option may be used to specify a directory to be searched
                for global state files and user state files.  (See _a_e_g_s_t_a_t_e(5)
                and _a_e_u_s_t_a_t_e(5) for more information.)  Several library
                options 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 _A_E_G_I_S___P_A_T_H environment
                variable (colon separated), and finally, _/_u_s_r_/_l_o_c_a_l_/_l_i_b_/_a_e_g_i_s
                is always searched.  All paths specified, either on the
                command line or in the _A_E_G_I_S___P_A_T_H environment variable, must
                be absolute.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        The following options are available to _m_o_s_t functions.  These options
        may appear anywhere on the command line following the function
        selectors.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  When no --CChhaannggee option is specified, the
                _A_E_G_I_S___C_H_A_N_G_E environment variable is consulted.  If that does
                not exist, the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a
                default change field (see _a_e_u_c_o_n_f(5) for more information).
                If that does not exist, when the user is only working on one
                change within a project, that is the default change number.
                Otherwise, it is an error.

        --CChhaannggee _p_r_o_j_e_c_t..CC_n_u_m_b_e_r
                As a shortcut, it is possible to combine the --PPrroojjeecctt and
                --CChhaannggee options into a single option.

        --CChhaannggee _b_r_a_n_c_h..CC_n_u_m_b_e_r
                Several functions accept a --BBRRaanncchh option; it is possible to
                combine the --BBRRaanncchh and --CChhaannggee options in a single option.
                (This intentinally has the same form as the _$_{_v_e_r_s_i_o_n_}
                substitution output for incomplete changes.)

        --CChhaannggee _b_r_a_n_c_h..DD_n_u_m_b_e_r
                Several functions accept both the --BBRRaanncchh and --DDeellttaa options
                (or --BBRRaanncchh and --CChhaannggee--FFrroomm--DDeellttaa options); it is possible to
                combine them in a single option.  (This intentinally has the
                same form as the _$_{_v_e_r_s_i_o_n_} substitution output for completed
                changes.)

        --CChhaannggee _p_r_o_j_e_c_t..DD_n_u_m_b_e_r
                It is possible to combine the --PPrroojjeecctt and --CChhaannggee--FFrroomm--DDeellttaa
                options as a single option.

LLiissttiinnggss
        The following options are available to all listings.  These options
        may appear anywhere on the command line following the function
        selectors.

        --PPAAGGeerr  The output of listings and help is piped through the pager
                command given in the PAGER environment variable (or _m_o_r_e if
                not set).  This is the default if the command is in the
                foreground, and the output is a TTY.  This option may be used
                to override any preference specified in the _a_e_u_c_o_n_f(5) file.

        --NNoo__PPAAGGeerr
                This option may be used to ensure that the output of listings
                and help is not piped through a pager command.  This is the
                default if the command is in the background, or if the output
                is not a TTY.  This option may be used to override any
                preference specified in the _a_e_u_c_o_n_f(5) file.

        --PPaaggee__LLeennggtthh _n_u_m_b_e_r
                This option may be used to set the page length of listings.
                The default, in order of preference, is obtained from the
                system, from the _L_I_N_E_S environment variable, or set to 24
                lines.

        --PPaaggee__WWiiddtthh _n_u_m_b_e_r
                This option may be used to set the page width of listings and
                error messages.  The default, in order of preference, is
                obtained from the system, from the _C_O_L_S environment variable,
                or set to 79 characters.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --UUNNFFoorrmmaatttteedd
                This option may be used with most listings to specify that the
                column formatting is not to be performed.  This is useful for
                shell scripts.

        --PPaaggee--HHeeaaddiinnggss
                This option requests that page headings be present in listings
                and reports.  This is the default.

        --NNoo--PPaaggee--HHeeaaddiinnggss
                This option requests that page headings be omitted from
                listings and reports.

AAbbbbrreevviiaattiioonnss
        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        The _a_e_g_i_s command understands the following environment variables:

        AEGIS_PATH
                A colon-separated list of library directories.  See the
                --LLIIBBrraarryy option for a description how this environment
                variable is used.

        AEGIS_PROJECT
                Names a default project.  See the --PPrroojjeecctt option for a
                description how this environment variable is used.

        AEGIS_CHANGE
                Specifies a default change.  See the --CChhaannggee option for a
                description how this environment variable is used.

        AEGIS_FLAGS
                This environment variable is used to hold _a_e_u_c_o_n_f(5)
                information, and over-rides the settings in the users _._a_e_g_i_s_r_c
                file.  This is intended to be used within the tests
                distributed with aegis, but can also be of use within some
                shell scripts.

        AEGIS_THROTTLE
                Specifies the number of seconds to delay execution within
                commands which set time stamps.  This is intended to be used
                within the tests distributed with aegis, but can also be of
                use within some shell scripts.

        AEGIS_AUTOMOUNT_POINTS
                A colon-separated list of directories which the automounter
                may use to mount file systems.  Use with extreme care, as this
                distorts Aegis' idea of the shape of the filesystem.

                This feature assumes that paths below the automounter's mount
                directory are echoes of paths without it.  _E_._g_. When /home is
                the trigger, and /tmp_mnt/home is where the on-demand NFS
                mount is performed, with /home appearing to processes to be a
                symlink.

                This is the behavior of the Sun automounter.  The AMD
                automounter is capable of being configured in this way, though
                it is not typical of the examples in the manual.  Nor is it
                typical of the out-of-the-box Linux AMD configuration in many
                distributions.

        COLS    Specifies the page width for errors and listings.  See the
                --PPaaggee__WWiiddtthh option for a description how this environment
                variable is used.

        EDITOR  Specifies the program use to edit files when the --EEddiitt or
                --EEddiitt__BBaacckkGGrroouunndd options are used.  (See also the _V_I_S_U_A_L
                environment variable.)  Defaults to _v_i if not set.  See the
                _e_d_i_t_o_r___c_o_m_m_a_n_d fields in _a_e_u_c_o_n_f(1) for how to override this
                specifically for Aegis.

        LINES   Specifies the page length for listings.  See the --PPaaggee__LLeennggtthh
                option for a description how this environment variable is
                used.

        PAGER   Specifies the program to use to view listings and help.  Not
                used if output is to a file or a pipe.  Defaults to _m_o_r_e if
                not set.

        VISUAL  Specifies the program use to edit files when the --EEddiitt option
                is used.  (See also the _E_D_I_T_O_R environment variable.)
                Defaults to _v_i if not set.  See the _v_i_s_u_a_l___c_o_m_m_a_n_d fields in
                _a_e_u_c_o_n_f(1) for how to override this specifically for Aegis.

        When commands are executed by Aegis, it ensures that the
        AEGIS_PROJECT, AEGIS_CHANGE, AEGIS_ARCH, LINES and COLS environment
        variables are set appropriately.  The project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field is also consulted, looking for value's whose
        name starts with "setenv:" and sets the corresponding environment
        variable.  All of the substitutions described by _a_e_s_u_b(5) are
        available.  For example: specifying a PATH and a SEARCH_PATH to be
        used for all commands may be set as follows:
                project_specific =
                [
                  {
                    name = "setenv:PATH";
                    value = "/usr/bin:/bin";
                  },
                  {
                    name = "setenv:SEARCH_PATH";
                    value = "${search_path}";
                  },
                ];
        As many environment variables as desired may be specified in this way.

SSEEEE AALLSSOO
        _a_e_g_i_s(5)
                aegis file format syntax

        _a_e_c_a_t_t_r(5)
                change attributes file format

        _a_e_c_s_t_a_t_e(5)
                change state file format

        _a_e_d_i_r(5)
                directory structures

        _a_e_g_s_t_a_t_e(5)
                aegis state file format

        _a_e_p_a_t_t_r(5)
                project attributes file format

        _a_e_p_c_o_n_f(5)
                project configuration file format

        _a_e_p_s_t_a_t_e(5)
                project state file format

        _a_e_r(5)  report script language definition

        _a_e_s_u_b(5)
                available command substitutions

        _a_e_u_c_o_n_f(5)
                user configuration file format

        _a_e_u_s_t_a_t_e(5)
                user state file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



ae-cvs-ci(1)                                                      ae-cvs-ci(1)



NNAAMMEE
        ae-cvs-ci - checkin a change set to CVS

SSYYNNOOPPSSIISS
        aaee--ccvvss--ccii _p_r_o_j_e_c_t_-_n_a_m_e _c_h_a_n_g_e_-_n_u_m_b_e_r

DDEESSCCRRIIPPTTIIOONN
        The _a_e_-_c_v_s_-_c_i command is used to check an Aegis change set into CVS.
        This is usually used in the _i_n_t_e_g_r_a_t_e _p_a_s_s _n_o_t_i_f_y _c_o_m_m_a_n_d project
        attribute, as in
                integrate_pass_notify_command =
                    "$bin/ae-cvs-ci $project $change";

        Alternatively, you may wish to taylor this script to the individual
        needs of your project.  Make it a source file, e.g. _e_t_c_/_a_e_-_c_v_s_-_c_i_._s_h
        and the use the following:
                integrate_pass_notify_command =
                    "$sh ${source etc/ae-cvs-ci abs} $project $change";

        It is assumed that your CVSROOT and CVS_RSH environment variables have
        already been set appropriately, or you could set them in the command.

EEXXIITT SSTTAATTUUSS
        The _a_e_-_c_v_s_-_c_i command will exit with a status of 1 on any error.  The
        _a_e_-_c_v_s_-_c_i command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        ae-cvs-ci version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The ae-cvs-ci program comes with ABSOLUTELY NO WARRANTY; for details
        use the '_a_e_-_c_v_s_-_c_i _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software
        and you are welcome to redistribute it under certain conditions; for
        details use the '_a_e_-_c_v_s_-_c_i _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



ae-sccs-put(1)                                                  ae-sccs-put(1)



NNAAMMEE
        ae-sccs-put - put sccs version

SSYYNNOOPPSSIISS
        aaee--ssccccss--ppuutt --yy_c_o_m_m_e_n_t --GG_i_n_p_u_t_-_f_i_l_e _h_i_s_t_o_r_y_-_f_i_l_e

DDEESSCCRRIIPPTTIIOONN
        The _a_e_-_s_c_c_s_-_p_u_t command is used to commit changes to an SCCS file.  It
        insulates against a number of SCCS's quirks, and maps to Aegis'
        expectations better than using the SCCS commands directory in the
        history commands in the project _c_o_n_f_i_g file.

        The file comments _m_u_s_t be specified on the command line.

        The source file _m_u_s_t be specified on the command line.

        It is expected that there is not lock current in the history file.
        This is consistent with Aegis' use of its history tool.

        The history file need to exist yet.  It will be created (with the _s_c_c_s
        _a_d_m_i_n command) if it does not.

OOPPTTIIOONNSS
        The following options are understood:

        --GG_s_o_u_r_c_e_-_f_i_l_e
                This option must be used to specify the source file to be
                checked into the history.

        --yy_c_o_m_m_e_n_t
                This option must be used to specify the comment to be attached
                to the file history.  You probably need to use quotes to
                insulate the white space in the comment.

EEXXIITT SSTTAATTUUSS
        The _a_e_-_s_c_c_s_-_p_u_t command will exit with a status of 1 on any error.
        The _a_e_-_s_c_c_s_-_p_u_t command will only exit with a status of 0 if there are
        no errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        ae-sccs-put version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The ae-sccs-put program comes with ABSOLUTELY NO WARRANTY; for details
        use the '_a_e_-_s_c_c_s_-_p_u_t _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software
        and you are welcome to redistribute it under certain conditions; for
        details use the '_a_e_-_s_c_c_s_-_p_u_t _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



ae_c(1)                                                                ae_c(1)



NNAAMMEE
        ae_c - set change number

SSYYNNOOPPSSIISS
        aaee__cc _c_h_a_n_g_e_-_n_u_m_b_e_r

DDEESSCCRRIIPPTTIIOONN
        The _a_e___c command is an alias used to set the AEGIS_CHANGE environment
        variable.  No checking of the argument is performed.

        This can make changing the change you are working on quick and simple.

SSEEEE AALLSSOO
        _a_e_g_i_s(1)
                For information on environment variables.

        _a_e___p(1) Set project name.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



ae_p(1)                                                                ae_p(1)



NNAAMMEE
        ae_p - set project name

SSYYNNOOPPSSIISS
        aaee__pp _p_r_o_j_e_c_t_-_n_a_m_e

DDEESSCCRRIIPPTTIIOONN
        The _a_e___p command is an alias used to set the AEGIS_PROJECT environment
        variable.  No checking of the argument is performed.

        This can make changing projects quick and simple.

SSEEEE AALLSSOO
        _a_e_g_i_s(1)
                For information on environment variables.

        _a_e___c(1) Set change number.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aeannotate(1)                                                    aeannotate(1)



NNAAMMEE
        aeannotate - annotated source file listing

SSYYNNOOPPSSIISS
        aaeeaannnnoottaattee [ _o_p_t_i_o_n...  ] _f_i_l_e_n_a_m_e
        aaeeaannnnoottaattee --HHeellpp
        aaeeaannnnoottaattee --LLiisstt
        aaeeaannnnoottaattee --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_a_n_n_o_t_a_t_e command is used to produce an annotated listing of the
        named source file.

        The columns specified by the user (see the ----ccoolluummnn option, below) are
        used of the left hand side of the output.  Two additional columns are
        always added: the line number and the source code.

        If no columns are specified, the default columns are

                    -column   '${change date %Y-%m}'   Date      7
                    -column   '$version'               Version   9
                    -column   '${change developer}'    Who       8
        The _$_v_e_r_s_i_o_n string always contains enough information to reproduce
        the entire project baseline at the time of the delta.  The first
        portion is the project branch, and the second portion (following the
        `D') is the delta number; use these to form the -branch and -delta
        options for an _a_e_c_p(1) command.

        At the end of the listing, accumulated statistics are presented,
        correlated to the unique columns values see in the listing.

OOPPTTIIOONNSS
        The following options are understood:

        --CCOOLLuummnn _f_o_r_m_u_l_a  [[ _h_e_a_d_i_n_g ]][[ _w_i_d_t_h ]]
                This option may be used to specify columns you wish to see in
                the output.  The formula is in the for of an _a_e_s_u_b(5) string.
                The heading is a string to be used as the column heading;
                defaults to the formula if not specified.  The width is the
                width of the columns; defaults to 7 if not specified.

        --FFiillee__SSttaattiissttiiccss
                This option causes file statistics to be appended.  This lists
                the number of lines in the file were changed at the same time
                as another file.  For example, this allows you to see tests
                associated with source files, and _v_i_c_e _v_e_r_s_a.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_a_n_n_o_t_a_t_e program.

        --DDiiffff__OOppttiioonn _s_t_r_i_n_g
                This option may be used to pass addition arguments to the diff
                commands that is run between each delta of the file.  Use with
                caution: poor choice of options can render aeannotate
                inoperable, or yield meaningless results.  Probably the best
                use of this option is to pass the --bb option, to ignore white
                space changes, because this ignores the vast majority of
                cosmetic formatting changes, showing you the content changes
                instead.  The --ii option, to ignore case, can also be useful
                for case-insensitive languages.

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify the output file.  The
                output is sent to the standard output by default.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_a_n_n_o_t_a_t_e are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_a_n_n_o_t_a_t_e command will exit with a status of 1 on any error.  The
        _a_e_a_n_n_o_t_a_t_e command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

EEXXAAMMPPLLEESS
        If you wanted to list only the year against the lines of the file, use
        this column specification:

                       -column   '${change date %Y}'   Year   4

        If you wanted to list the developer and the reviewer against the lines
        of the file (commonly called a ``blame'' listing) use this column
        specification:

                    -column   '${change developer}'   Develop.   8
                    -column   '${change reviewer}'    Reviewer   8

        If you wanted to see the change cause of each line, use this column
        specification:

                      -column   '$version'          Version   9
                      -column   '${change cause}'   Cause     20

        All of the _a_e_s_u_b(5) substitutions are available, however only the
        _$_{_c_h_a_n_g_e _._._._} variants are particularly useful.

        To see only content changes, and ignore changes in indentation
        (assuming you are using GNU diff), use this command:
                aeannotate -diff-opt -b _f_i_l_e_n_a_m_e

CCOOPPYYRRIIGGHHTT
        aeannotate version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aeannotate program comes with ABSOLUTELY NO WARRANTY; for details
        use the '_a_e_a_n_n_o_t_a_t_e _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software
        and you are welcome to redistribute it under certain conditions; for
        details use the '_a_e_a_n_n_o_t_a_t_e _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Build(1)                                                aegis -Build(1)



NNAAMMEE
        aegis -Build - build a change

SSYYNNOOPPSSIISS
        aaeeggiiss --BBuuiilldd [ _o_p_t_i_o_n...  ][ _f_i_l_e_n_a_m_e...  ]
        aaeeggiiss --BBuuiilldd --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --BBuuiilldd --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_B_u_i_l_d command is used to build a project.  The project
        configuration file is consulted for the appropriate build command, and
        that command is executed (see the _b_u_i_l_d__ _c_o_m_m_a_n_d and _i_n_t_e_g_r_a_t_i_o_n___-
        _b_u_i_l_d___c_o_m_m_a_n_d fields in _a_e_p_c_o_n_f(5) for more information.)  Output of
        the command is automatically logged to the _a_e_g_i_s_._l_o_g file at the root
        of the development directory tree.  The build command will be executed
        with its current directory being the root of the development
        directory, irrespective of there the _a_e_g_i_s _-_B_u_i_l_d command was
        executed.

        If the change is in the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state, references to the
        development directory, above, should be read as the integration
        directory.  Integration build commands are executed with the user and
        group set to the project's owning user and group.  That is, it is not
        necessary for an integrator to log in as someone else, the project
        account for instance, in order to do an integration.

   PPrroocceessss SSiiddee EEffffeeccttss
        This command will cancel any test registrations, because building the
        project logically invalidates them.  If the project configuration file
        was deleted, any diff registration will also be canceled.

   NNoottiiffiiccaattiioonn
        The actions of the command are controlled by the _b_u_i_l_d__ _c_o_m_m_a_n_d and
        _i_n_t_e_g_r_a_t_i_o_n___b_u_i_l_d___c_o_m_m_a_n_d fields of the project _c_o_n_f_i_g file.  See
        _a_e_p_c_o_n_f(5) for more information.

PPAARRTTIIAALL BBUUIILLDD
        If files are named on the command line, these files are appended to
        the build command.  This is known as a partial build.  Partial builds
        are not legal in the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state, but can often be useful
        in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.  Partial builds are not recorded in the
        change status, because builds are decoupled from aegis it is not
        possible for aegis to know if any set of partial builds is equivalent
        to a full build.

        Warning: no change state lock is taken for a partial build, only a
        baseline read lock.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

SSYYMMBBOOLLIICC LLIINNKKSS
        Many dependency maintenance tools, and indeed some compilers, have
        little or no support for include file search paths, and thus for the
        concept of the two-level directory hierarchy employed by Aegis.  (It
        becomes multi-level when Aegis' branching functionality is used.)  To
        allow these tools to be used, Aegis provides the ability to maintain a
        set of symbolic links between the development directory of a change
        and the baseline of a project, so it appears to these tools that all
        of the project's files are present in the development directory.

   PPrroojjeecctt CCoonnffiigguurraattiioonn
        The _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field of the project configuration
        file controls the appearance of the development directory.  See
        _a_e_p_c_o_n_f(5) for more information.

        By using a setting such as
                development_directory_style =
                {
                    source_file_symlink = true;
                    during_build_only = true;
                };
        the user never sees the symbolic links, because they are added purely
        for the benefit of the dependency maintenance tool during the
        execution of the _a_e_b(1) command.

        By using a setting such as
                development_directory_style =
                {
                    source_file_symlink = true;
                };
        (the other will default to false) the symbolic links will be created
        at develop begin time (see _a_e_d_b(1) for more information) and also
        maintained by each _a_e_b(1) invocation.  Note that the symbolic links
        are only maintained at these times, so project integrations during the
        course of editing change sourec files may leave the symbolic links in
        an inconsistent state until the next build.

        When files are copied from the baseline into a change, using the
        _a_e_c_p(1) command, the symbolic link pointing into the baseline, if any,
        will be removed before the file is copied.

        NNoottee:: Using this functionality in either form has implications for how
        the rules file of the dependency maintenance tool is written.  Rules
        must _r_e_m_o_v_e their targets before creating them (usually with an _r_m _-_f
        command) if you use any of the link sub-fields (both hard links and
        symbolic links).  This is to avoid attempting to write the result on
        the symbolic link, which will point at a read-only file in the project
        baseline.  This is similar to the same requirement for using the
        _l_i_n_k___i_n_t_e_g_r_a_t_i_o_n___d_i_r_e_c_t_o_r_y field of the project configuration file.

   UUsseerr CCoonnffiigguurraattiioonn
        There is a _s_y_m_b_o_l_i_c___l_i_n_k___p_r_e_f_e_r_e_n_c_e field in the user configuration
        file (see _a_e_u_c_o_n_f(5) for more information).  This controls whether
        _a_e_b(1) will verify the symbolic links before the build (default) or
        whether it will assume they are up-to-date.  (This field is only
        relevant if _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y_____s_t_y_l_e_._s_o_u_r_c_e___f_i_l_e___s_y_m_l_i_n_k is true.)

        For medium-to-large projects, verifying the symbolic links can take as
        long as the build itself.  Assuming the symbolic links are up-to-date
        can be a large time-saving for these projects.  It may be advisable to
        review your choice of DMT in such a situation.

        The _a_e_d_b(1) command ddooeess nnoott consult this preference.  Thus, in most
        situations, the symbolic links will be up-to-date when the build is
        performed.  The only Aegis function which may result in the symbolic
        links becoming out-of-date is the integration of another change, as
        this may alter the presence or absence of files in the baseline.  In
        this situation, the default _a_e_b(1) action is to ignore the user
        preference and the verify symbolic links.

        There are two command line options which modify _a_e_b(1) behavior
        further: the --VVeerriiffyy--SSyymmbboolliicc--LLiinnkkss option says to verify the symbolic
        links; and the --AAssssuummee--SSyymmbboolliicc--LLiinnkkss option says to assume the
        symbolic links are up-to-date.  In each case the option over-rides the
        default and the user preference.

        It is possible to obtain behaviour similar to Tom Lord'a Arch by using
        a setting such as:
                development_directory_style =
                {
                    source_file_link = true;
                    source_file_symlink = true;
                };

        It is possible to obtain behaviour similar to CVS by using a setting
        such as:
                development_directory_style =
                {
                    source_file_copy = true;
                };
        There are many more possible configurations of the _d_e_v_e_l_o_p_m_e_n_t___-
        _d_i_r_e_c_t_o_r_y___s_t_y_l_e, usually with helpful build side-effects.  See
        _a_e_p_c_o_n_f(1) and the _D_e_p_e_n_e_d_e_n_c_y _M_a_i_n_t_e_n_a_n_c_e _T_o_o_l chapter of the User
        Guide for more information.

        The symbolic link command line options and preferences apply equally
        to hard links and file copies (the names have historical origins).

TTHHEE BBAASSEELLIINNEE LLOOCCKK
        The baseline lock is used to ensure that the baseline remains in a
        consistent state for the duration of commands which need to read the
        contents of files in the baseline.

        The commands which require the baseline to be consistent (these
        include the _a_e_b(1), _a_e_c_p(1) and _a_e_d(1) commands) take a baseline _r_e_a_d
        lock.  This is a non-exclusive lock, so the concurrent development of
        changes is not hindered.

        The command which modifies the baseline, _a_e_i_p_a_s_s(1), takes a baseline
        _w_r_i_t_e lock.  This is an exclusive lock, forcing _a_e_i_p_a_s_s(1) to block
        until there are no active baseline read locks.

        It is possible that one of the above development commands will block
        until an in-progress _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___P_A_S_S completes.  This is usually
        of short duration while the project history is updated.  The delay is
        essential so that these commands receive a consistent view of the
        baseline.  No other integration command will cause the above
        development commands to block.

        When aegis' branch functionality is in use, a read (non-exclusive)
        lock is taken on the branch baseline and also each of the "parent"
        baselines.  However, a baseline write (exclusive) lock is only taken
        on the branch baseline; the "parent" baselines are only read (non-
        exclusive) locked.

MMEETTRRIICCSS
        Aegis is capable of recording metrics as part of the file attributes
        of a change.  This allows various properties of files to be recorded
        for later trend analysis, or other uses.

        The specific metrics are not dictated by Aegis.  It is expected that
        the integration build will create a metrics file for each of the
        source files the change.  These metrics files must be in the format
        specified by _a_e_m_e_t_r_i_c_s(5).

        The name of the metrics file defaults to ``_f_i_l_e_n_a_m_e,,SS'', however it
        may be varied, by setting the _m_e_t_r_i_c_s___f_i_l_e_n_a_m_e___p_a_t_t_e_r_n field of the
        project _c_o_n_f_i_g file.  See _a_e_p_c_o_n_f(5) for more information.

        If such a metrics file exists, for each source file in a change, it
        will be read and remembered at integrate pass time.  If it does not
        exist, Aegis assumes there are no relevant metrics for that file, and
        proceeds silently; it is not an error.

OOPPTTIIOONNSS
        The following options are understood:

        _n_a_m_e==_v_a_l_u_e
                Command line arguments of this form are assumed to be variable
                assignments for the build tool.  They are passed through
                unchanged.  They imply a partial build.

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --MMIINNIImmuumm
                This option may be used to request a source-only _d_e_v_e_l_o_p_m_e_n_t___-
                _d_i_r_e_c_t_o_r_y___s_t_y_l_e.  This is useful if you want to simulate
                something like _a_e_i_b _-_m_i_n_i_m_u_m in the development directory.
                This option is only meaningful if _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e
                is being used.  If the change is in the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d
                state, and the developer specified --MMIINNIImmuumm when issuing the
                _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___B_e_g_i_n command, then this option is set by
                default.

        --NNoott__LLooggggiinngg
                This option may be used to disable the automatic logging of
                output and errors to a file.  This is often useful when
                several aegis commands are combined in a shell script.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --VVeerriiffyy__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that the symbolic links, or
                hard links, or file copies, in the work area be updated to
                reflect the current state of the baseline.  This is controlled
                by the _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field of the project
                configuration file.  Only files which are not involved in the
                change are updated.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if meaningful for your configuration.
                The name is an historical accident, hard links and file copies
                are included.

        --AAssssuummee__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that no update of baseline
                mirror files take place.  This options is useful when you
                _d_e_f_i_n_i_t_e_l_y _k_n_o_w the files' up-to-date-ness isn't important
                right now; incorrect use of this option may have unanticipated
                build side-effects.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if not meaningful for your
                configuration.  The name is an historical accident, hard links
                and file copies are included.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aeb 'aegis -b \!* -v'
        sh$     aeb(){aegis -b "$@" -v}

EERRRROORRSS
        It is an error if the change is not assigned to the current user.
        It is an error if the change is not in one of the _b_e_i_n_g _d_e_v_e_l_o_p_e_d or
        _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d states.
        It is an error if a partial build is requested and the change is in
        the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_d_b(1) begin development of a change

        _a_e_c_p(1) file copy also takes a baseline read lock (non-exclusive)

        _a_e_i_b(1) begin integration of a change

        _a_e_i_p_a_s_s(1)
                integrate pass takes a baseline write lock (exclusive)

        _a_e_t(1)  run tests

        _a_e_m_e_t_r_i_c_s(5)
                metrics values file format

        _a_e_p_c_o_n_f(5)
                project configuration file format

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aebuffy(1)                                                          aebuffy(1)



NNAAMMEE
        aebuffy - watch for changes

SSYYNNOOPPSSIISS
        aaeebbuuffffyy [ _p_r_o_j_e_c_t_-_n_a_m_e ]

DDEESSCCRRIIPPTTIIOONN
        The _a_e_b_u_f_f_y command is used to watch for changes which the current
        user may be able to act upon.  These include changes being developed
        by the user, and changes which could be reviewed or integrated by the
        user.

        If you don't use the _p_r_o_j_e_c_t_-_n_a_m_e command line option, you need to set
        the AEGIS_PROJECT environment variable, or the default_project field
        of the _._a_e_g_i_s_r_c file before you invoke this command.  This is
        especially important if you launch it from your X11 session start-up
        file.

        At the moment it can only watch one project.  If you are good at
        Tcl/Tk, improvements are most welcome.

CCOOPPYYRRIIGGHHTT
        aebuffy version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aebuffy program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_b_u_f_f_y _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_b_u_f_f_y _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Change_Attributes(1)                        aegis -Change_Attributes(1)



NNAAMMEE
        aegis -Change_Attributes - modify the attributes of a change

SSYYNNOOPPSSIISS
        aaeeggiiss --CChhaannggee__AAttttrriibbuutteess --FFiillee _a_t_t_r_-_f_i_l_e [ _o_p_t_i_o_n...  ]
        aaeeggiiss --CChhaannggee__AAttttrriibbuutteess --EEddiitt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --CChhaannggee__AAttttrriibbuutteess --FFiixx__AARRcchhiitteeccttuurree
        aaeeggiiss --CChhaannggee__AAttttrriibbuutteess --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --CChhaannggee__AAttttrriibbuutteess --HHeellpp
        aaeeggiiss --CChhaannggee__AAttttrriibbuutteess --UUUUIIDD _s_t_r_i_n_g [ _o_p_t_i_o_n... ]

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_C_h_a_n_g_e___A_t_t_r_i_b_u_t_e_s command is used to set, edit or list the
        attributes of a change.

        The output of the --LLiisstt variant is suitable for use as input at a
        later time.

        See _a_e_c_a_t_t_r(5) for a description of the file format.

   EExxaammppllee
        When you edit the file, you will see something like this:
                brief_description = "login(1) is too fussy";
                description = "When users type their password "
                    "incorrectly, after three times the login(1) "
                    "program should assume they have forgotten "
                    "their password and automatically reset it "
                    "for them.";
                cause = external_enhancement;
                attribute =
                [
                    {
                        name = "bugzilla";
                        value = "666";
                    },
                    {
                        name = "customer-priority";
                        value = "high";
                    },
                    {
                        name = "marketing-priority";
                        value = "urgent-panic-headless-chicken";
                    },
                    {
                        name = "engineering-priority";
                        value = "after-heat-death-of-universe";
                    }
                ];
        Note the semicolons, you need to get them right.  Edit the fields you
        want to change.  When you quit the editor, they will be updated.

   UUnniivveerrssaall UUnniiqquuee IIddeennttiiffiieerr
        Each change set is assigned a unique universal identifier (UUID) at
        _i_n_t_e_g_r_a_t_e _p_a_s_s time.  This serves to identify the change across all
        sites when a geographically distributed development model is being
        used.  This may be exploited to rapidly determine which change sets
        need to be downloaded.

        The --UUnniivveerrssaall__UUnniiqquuee__IIDDeennttiiffiieerr option is used by the _a_e_d_i_s_t(1) and
        _a_e_p_a_t_c_h(1) commands to set the UUID of a change set.  It should not be
        used by developers.

   UUssiinngg CChhaannggee AAttttrriibbuutteess iinn SSccrriippttss
        There are several ways you can use the attributes of an Aegis change
        in a shell script:

        _a_e_r_e_p_o_r_t(1)
                The report generator is able to access change attributes.  You
                can then have the report generator print the necessary data.

        _a_e_s_u_b(1)
                Many change atrributes can be accessed via the _a_e_s_u_b(5)
                command substitutions, and printed using the _a_e_s_u_b(1) command.

        aeca -l The list option of the _a_e_c_a(1) command may be used to print
                the values of all editable change attributes.  It can be
                groped using _g_r_e_p(1) or _a_w_k(1), or similar.

        _a_e_x_m_l(1)
                It is possible to get a great deal of information in XML
                format, including change attributes.  This format can be
                parsed by a variety of packages.

        Use the method best suited to your particular needs.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --DDeessccrriippttiioonn__OOnnllyy
                This option may be used to specify that only the change
                description is the subject of this command.  It will be
                presented as plain text, without any of the quotes or escapes
                present when this command is not used.

        --EEddiitt
                Edit the attributes with a text editor, this is usually more
                convenient than supplying a text file.  The _V_I_S_U_A_L and then
                _E_D_I_T_O_R environment variables are consulted for the name of the
                editor to use; defaults to _v_i(1) if neither is set.  See the
                _v_i_s_u_a_l___c_o_m_m_a_n_d and _e_d_i_t_o_r___c_o_m_m_a_n_d fields in _a_e_u_c_o_n_f(1) for how
                to override this specifically for Aegis.

                Warning: Aegis tries to be well behaved when faced with
                errors, so the temporary file is left in your home directory
                where you can edit it further and re-use it with a --ffiillee
                option.

                The --eeddiitt option may not be used in the background, or when
                the standard input is not a terminal.

        --EEddiitt__BBaacckkGGrroouunndd
                Edit the attributes with a dumb text editor, this is most
                often desired when edit commands are being piped into the
                editor via the standard input.  Only the EEDDIITTOORR environment
                variable is consulted for the name of the editor to use; it is
                a fatal error if it is not set.  See the _e_d_i_t_o_r___c_o_m_m_a_n_d field
                in _a_e_u_c_o_n_f(1) for how to override this specifically for Aegis.

        --FFiillee _f_i_l_e_n_a_m_e
                Take the attributes from the specified file.  The filename `-'
                is understood to mean the standard input.

        -Fix_ARchitecture
                This option may be used to replace change change's
                architecture list with all of the mandatory architectures from
                the project _c_o_n_f_i_g file, plus any of the optional
                architectures that match the current machine.  May not be used
                with -file or -edit options.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --UUnniivveerrssaall__UUnniiqquuee__IIDDeennttiiffiieerr _s_t_r_i_n_g
                This option may be used to set the UUID of change change.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aeca 'aegis -ca \!* -v'
        sh$     aeca(){aegis -ca "$@" -v}

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        specified project.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _t_k_a_e_c_a(1)
                GUI interface to the _a_e_c_a(1) command.

        _a_e_c_a_t_t_r(5)
                change attributes file format

        _a_e_c_s_t_a_t_e(5)
                change state file format

        _a_e_p_a(5) modify the attributes of a project

        _a_e_s_u_b(5)
                available command substitutions

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Change_Directory(1)                          aegis -Change_Directory(1)



NNAAMMEE
        aegis -Change_Directory - change directory

SSYYNNOOPPSSIISS
        aaeeggiiss --CChhaannggee__DDiirreeccttoorryy [ _o_p_t_i_o_n...  ][ _r_e_l_a_t_i_v_e_-_p_a_t_h ]
        aaeeggiiss --CChhaannggee__DDiirreeccttoorryy --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --CChhaannggee__DDiirreeccttoorryy --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_C_h_a_n_g_e___D_i_r_e_c_t_o_r_y command is used to obtain a path to change
        directory to.  If the _r_e_l_a_t_i_v_e_-_p_a_t_h is supplied, this will be added to
        the output.

        This command is usually used to calculate an argument for _c_d(1),
        however it can also be used to obtain an absolute path for change and
        project files.

OOPPTTIIOONNSS
        The following options are understood:

        --BBaasseeLLiinnee
                This option may be used to specify that the project baseline
                is the subject of the command.

        --BBRRaanncchh _n_u_m_b_e_r
                This option may be used to specify a different branch for the
                origin file, rather than the baseline.  (See also --TTRRuunnkk
                option.  Please Note: the --BBRRaanncchh option does not take a
                project name, just the branch number suffix.

        --GGrraannddPPaarreenntt
                This option may be used to specify the grandparent branch (one
                up from the current branch) for the origin file, rather than
                the baseline.  (The -grandparent option is the same as the
                ``-branch ..'' option.)

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --DDeevveellooppmmeenntt__DDiirreeccttoorryy
                This option is used to specify that the development directory
                is the subject of the command.  This is only useful for a
                change which is in the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state, when the
                default is the integration directory.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --TTRRuunnkk
                This option may be used to specify the project trunk for the
                origin file, rather than the baseline.  (See also --BBRRaanncchh
                option, the -trunk option is the same as the ``-branch -''
                option.)

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aecd 'cd `aegis -cd \!* -v`'
        sh$     aecd(){cd `aegis -cd "$@" -v`}

EERRRROORRSS
        It is an error if the specified change is not in a state where it has
        a directory to change to.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_d_b(1) begin development of a change

        _a_e_i_b(1) begin integration of a change

        _a_e_r_p_a_s_s(1)
                pass review of a change

        _a_e_r_f_a_i_l(1)
                fail review of a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Change_Owner(1)                                  aegis -Change_Owner(1)



NNAAMMEE
        aegis -Change_Owner - set change owner

SSYYNNOOPPSSIISS
        aaeeggiiss --CChhaannggee__OOwwnneerr _c_h_a_n_g_e_-_n_u_m_b_e_r _u_s_e_r_-_n_a_m_e [ _o_p_t_i_o_n...  ]
        aaeeggiiss --CChhaannggee__OOwwnneerr --HHeellpp
        aaeeggiiss --CChhaannggee__OOwwnneerr --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_C_h_a_n_g_e___O_w_n_e_r command is used to reassign a change from one
        developer to another.

        A new development directory is created for the change in the new
        developers default area (see _a_e_d_b(1) for more information) and the
        change files are copied across.  Derived files are ignored, so a new
        build will be required.  The old development directory will be
        deleted.

        This command must be performed by a project administrator, and the new
        assignee must be a developer.

        Warning: capricious use of this command will alienate developers very
        rapidly.

   NNoottiiffiiccaattiioonn
        This command mimics many of the actions of the _a_e_b_d_u(1) and _a_e_d_b(1)
        command.  In particular, it invokes the _d_e_v_e_l_o_p___b_e_g_i_n___u_n_d_o___c_o_m_m_a_n_d and
        _d_e_v_e_l_o_p___b_e_g_i_n___c_o_m_m_a_n_d of the project _c_o_n_f_i_g file.  See _a_e_p_c_o_n_f(5) for
        more information.

   DDeevveellooppmmeenntt DDiirreeccttoorryy LLooccaattiioonn
        PPlleeaassee NNoottee:: Aegis also consults the underlying file system, to
        determine its notion of maximum file size.  Where the file system's
        maximum file size is less than _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h, 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 _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h 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
        filesystems 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 _c_o_n_f_i_g 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 environments.

        If your development directories are routinely on a Linux UMSDOS
        filesystem, you would probably be better off setting
        _d_o_s___f_i_l_e_n_a_m_e___r_e_q_u_i_r_e_d _= _t_r_u_e, and also changing the
        _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___t_e_m_p_l_a_t_e field.  Heterogeneous development with
        various Windows environments may also require this.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --DDIIRReeccttoorryy _p_a_t_h
                This option may be used to specify which directory is to be
                used.  It is an error if the current user does not have
                appropriate 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.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --IInntteerraaccttiivvee
                Specify that aegis should ask the user for confirmation before
                deleting each file.  Answer the question _y_e_s to delete the
                file, or _n_o to keep the file.  You can also answer _a_l_l to
                delete the file and all that follow, or _n_o_n_e to keep the file
                and all that follow.

                Defaults to the user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not
                specified, see _a_e_u_c_o_n_f(5) for more information.

                If aegis is running in the background, the question will not
                be asked, and the files will be deleted.

        --KKeeeepp
                This option may be used to retain files and/or directories
                usually deleted by the command.  Defaults to the user's
                _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for
                more information.

        --NNoo__KKeeeepp
                This option may be used to ensure that the files and/or
                directories are deleted by the command.  Defaults to the
                user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5)
                for more information.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --UUsseerr _n_a_m_e
                This option is used to specify the user who is to develop the
                change.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aechown 'aegis -chown \!* -v'
        sh$     aechown(){aegis -chown "$@" -v}

EERRRROORRSS
        It is an error if the user issuing the command is not a project
        administrator.
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the user given is not a developer.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -CLEan(1)                                                aegis -CLEan(1)



NNAAMMEE
        aegis -CLEan - clean files from development directory

SSYYNNOOPPSSIISS
        aaeeggiiss --CCLLEEaann [ _o_p_t_i_o_n...  ]
        aaeeggiiss --CCLLEEaann --HHeellpp
        aaeeggiiss --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_C_L_E_a_n command is used to remove all files which are not
        change source files from a development directory.  This can be used to
        obtain a ``clean'' development directory before a final build, to
        ensure that a change is ready to end development.  A new build will be
        required.

        This command is only allowed in the ``_b_e_i_n_g _d_e_v_e_l_o_p_e_d'' state, and
        only the change's developer may issue it.  It may not be applied to
        branches.

        All symbolic links will be removed from the development directory,
        even if _r_e_m_o_v_e___s_y_m_l_i_n_k_s___a_f_t_e_r___b_u_i_l_d _= _f_a_l_s_e in the project _c_o_n_f_i_g
        file.  The symbolic links will be re-installed, if _c_r_e_a_t_e___s_y_m_l_i_n_k_s___-
        _b_e_f_o_r_e___b_u_i_l_d _= _t_r_u_e.  This is to ensure that the symlinks are
        accurate, and that unnecessary ones are removed.

        All special device files, pipes and sockets will be removed.  These
        files cannot be source files, and it is expected that the following
        build will restore them.

        All derived files created by previous builds of the change will be
        removed.  It is expected that the following build will recreate them.
        Any temporary files you may have created in the development directory
        will also be removed.

        The _d_e_v_e_l_o_p___b_e_g_i_n___c_o_m_m_a_n_d in the project configuration file (see
        _a_e_p_c_o_n_f(5) for more information) will be run, if there is one.  The
        _c_h_a_n_g_e___f_i_l_e___c_o_m_m_a_n_d will be run, if there is one.  The
        _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d will be run, if there is one.

        You will be warned if any of the files are out-of-date and need to be
        merged.  You will be warned if any files need to be differenced.

SSYYMMBBOOLLIICC LLIINNKKSS
        Many dependency maintenance tools, and indeed some compilers, have
        little or no support for include file search paths, and thus for the
        concept of the two-level directory hierarchy employed by Aegis.  (It
        becomes multi-level when Aegis' branching functionality is used.)  To
        allow these tools to be used, Aegis provides the ability to maintain a
        set of symbolic links between the development directory of a change
        and the baseline of a project, so it appears to these tools that all
        of the project's files are present in the development directory.

   PPrroojjeecctt CCoonnffiigguurraattiioonn
        The _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field of the project configuration
        file controls the appearance of the development directory.  See
        _a_e_p_c_o_n_f(5) for more information.

        By using a setting such as
                development_directory_style =
                {
                    source_file_symlink = true;
                    during_build_only = true;
                };
        the user never sees the symbolic links, because they are added purely
        for the benefit of the dependency maintenance tool during the
        execution of the _a_e_b(1) command.

        By using a setting such as
                development_directory_style =
                {
                    source_file_symlink = true;
                };
        (the other will default to false) the symbolic links will be created
        at develop begin time (see _a_e_d_b(1) for more information) and also
        maintained by each _a_e_b(1) invocation.  Note that the symbolic links
        are only maintained at these times, so project integrations during the
        course of editing change sourec files may leave the symbolic links in
        an inconsistent state until the next build.

        When files are copied from the baseline into a change, using the
        _a_e_c_p(1) command, the symbolic link pointing into the baseline, if any,
        will be removed before the file is copied.

        NNoottee:: Using this functionality in either form has implications for how
        the rules file of the dependency maintenance tool is written.  Rules
        must _r_e_m_o_v_e their targets before creating them (usually with an _r_m _-_f
        command) if you use any of the link sub-fields (both hard links and
        symbolic links).  This is to avoid attempting to write the result on
        the symbolic link, which will point at a read-only file in the project
        baseline.  This is similar to the same requirement for using the
        _l_i_n_k___i_n_t_e_g_r_a_t_i_o_n___d_i_r_e_c_t_o_r_y field of the project configuration file.

   UUsseerr CCoonnffiigguurraattiioonn
        There is a _s_y_m_b_o_l_i_c___l_i_n_k___p_r_e_f_e_r_e_n_c_e field in the user configuration
        file (see _a_e_u_c_o_n_f(5) for more information).  This controls whether
        _a_e_b(1) will verify the symbolic links before the build (default) or
        whether it will assume they are up-to-date.  (This field is only
        relevant if _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y_____s_t_y_l_e_._s_o_u_r_c_e___f_i_l_e___s_y_m_l_i_n_k is true.)

        For medium-to-large projects, verifying the symbolic links can take as
        long as the build itself.  Assuming the symbolic links are up-to-date
        can be a large time-saving for these projects.  It may be advisable to
        review your choice of DMT in such a situation.

        The _a_e_d_b(1) command ddooeess nnoott consult this preference.  Thus, in most
        situations, the symbolic links will be up-to-date when the build is
        performed.  The only Aegis function which may result in the symbolic
        links becoming out-of-date is the integration of another change, as
        this may alter the presence or absence of files in the baseline.  In
        this situation, the default _a_e_b(1) action is to ignore the user
        preference and the verify symbolic links.

        There are two command line options which modify _a_e_b(1) behavior
        further: the --VVeerriiffyy--SSyymmbboolliicc--LLiinnkkss option says to verify the symbolic
        links; and the --AAssssuummee--SSyymmbboolliicc--LLiinnkkss option says to assume the
        symbolic links are up-to-date.  In each case the option over-rides the
        default and the user preference.

        It is possible to obtain behaviour similar to Tom Lord'a Arch by using
        a setting such as:
                development_directory_style =
                {
                    source_file_link = true;
                    source_file_symlink = true;
                };

        It is possible to obtain behaviour similar to CVS by using a setting
        such as:
                development_directory_style =
                {
                    source_file_copy = true;
                };
        There are many more possible configurations of the _d_e_v_e_l_o_p_m_e_n_t___-
        _d_i_r_e_c_t_o_r_y___s_t_y_l_e, usually with helpful build side-effects.  See
        _a_e_p_c_o_n_f(1) and the _D_e_p_e_n_e_d_e_n_c_y _M_a_i_n_t_e_n_a_n_c_e _T_o_o_l chapter of the User
        Guide for more information.

        The symbolic link command line options and preferences apply equally
        to hard links and file copies (the names have historical origins).

   NNoottiiffiiccaattiioonn
        The notification commands that would be run by the _a_e_c_p(1), _a_e_d_b(1),
        _a_e_n_f(1), _a_e_n_t(1) and _a_e_r_m(1) commands are run, as appropriate.  The
        _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set.  See _a_e_p_c_o_n_f(5) for more
        information.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --NNoott__LLooggggiinngg
                This option may be used to disable the automatic logging of
                output and errors to a file.  This is often useful when
                several aegis commands are combined in a shell script.

        --TTOOuucchh  This option may be used to request that each change source
                file have its last-modified time-stamp be updated to the
                current time.  This is the default.  Derived files and other
                non-source file are left alone.

        --NNoo__TTOOuucchh
                This option may be used to request that the last-modified
                time-stamp of each source file be left unmodified.

        --MMIINNIIMMuumm
                This option may be used to request a minimum set of symbolic
                links, when the _c_r_e_a_t_e___s_y_m_l_i_n_k_s___t_o___b_a_s_e_l_i_n_e functions are
                being used.  This is useful if you want to simulate something
                like _a_e_i_b _-_m_i_n_i_m_u_m in the development directory.  This option
                is not meaningful if symbolic links are not being used.

                This option also says not to remove normal files which occlude
                project source files.  This is a common technique used to
                temporarily over-ride project source files.  The ``_a_e_c_p _-_r_e_a_d_-
                _o_n_l_y_'_' _c_o_m_m_a_n_d _w_o_u_l_d _h_a_v_e _b_e_e_n _m_o_r_e _a_p_p_r_o_p_r_i_a_t_e_.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -clone(1)                                                aegis -clone(1)



NNAAMMEE
        aegis -clone - make an exact copy of a change

SSYYNNOOPPSSIISS
        aaeeggiiss --CCLLoonnee [ _o_p_t_i_o_n...  ] _c_h_a_n_g_e_-_n_u_m_b_e_r [ change-number ]
        aaeeggiiss --CCLLoonnee --HHeellpp
        aaeeggiiss --CCLLoonnee --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_C_L_o_n_e command is used to create exact replicas of changes.
        This is of most use when a change need to be applied to several
        parallel branches.

        One change number _m_u_s_t be supplied.  This is the change to be
        replicated.  If any branch options are given (see below) the mandatory
        change number applies to the branch specified.  If no branch is
        specified, the change applies to the project (implicit or explicit).

        If the optional second change number is supplied, this is the change
        number to be created to hold the replica; if it is not supplied, the
        next available change number will be used.

        If the change to be replicated has been completed, the appropriate
        file revisions will be extracted from history; otherwise the files
        will be copied from the development directory of the change to be
        copied.  Be warned: if a file in the change which was cloned
        subsequently changes, those changes _w_i_l_l _n_o_t automagically be tracked.
        It is best if changes are cloned at a stable time, such as one of the
        states after develop end, or even after integrate pass.

   DDeevveellooppmmeenntt DDiirreeccttoorryy LLooccaattiioonn
        PPlleeaassee NNoottee:: Aegis also consults the underlying file system, to
        determine its notion of maximum file size.  Where the file system's
        maximum file size is less than _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h, 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 _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h 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
        filesystems 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 _c_o_n_f_i_g 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 environments.

        If your development directories are routinely on a Linux UMSDOS
        filesystem, you would probably be better off setting
        _d_o_s___f_i_l_e_n_a_m_e___r_e_q_u_i_r_e_d _= _t_r_u_e, and also changing the
        _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___t_e_m_p_l_a_t_e field.  Heterogeneous development with
        various Windows environments may also require this.

WWHHIITTEEOOUUTT
        Aegis provides you with what is often called a ``view path'' which
        indicates to development tools (compilers, build systems, _e_t_c) look
        first in the development directory, then in the branch baseline, and
        so on up to the trunk baseline.

        The problem with view paths is that in order to remove files, you need
        some kind of "whiteout" to say ``stop looking, it's been removed.''

        When you user the _a_e_r_m(1) or _a_e_m_v(1) commands, this means "add
        information to this change which will remove the file from the
        baseline when this change is integrated".  _I_._e_. while the change is in
        the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state, the file is only "removed" in the
        development directory - it's still present in the baseline, and will
        be until the change is successfully integrated.

        When you use the _a_e_r_m(1) or _a_e_m_v(1) commands, Aegis will create a 1K
        file to act as the whiteout.  It's contents are rather ugly so that if
        you compile or include the "removed" file accidentally, you get a
        fatal error.  This will remind you to remove obsolete references.

        When the change in integrated, the removed file is _n_o_t copied/linked
        from the baseline to the integration directory, and is _n_o_t copied from
        the development directory.  At this time it is physically gone (no
        whiteout).  It is assumed that because of the error inducing whiteout
        all old references were found and fixed while the change was in the
        _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.

   FFiillee MMaanniiffeessttss
        When generating list of files to be compiled or linked, it is
        important that the file manifest be generated from information known
        by Aegis, rather than from the file system.  This is for several
        reasons:

        (a) Aegis knows exactly what (source) files are where, whereas
            everything else is inferring Aegis' knowledge; and

        (b) looking in the file system is hard when the view path is longer
            that 2 directories (and Aegis' branching method can make it
            arbitrarily long); and

        (c) The whiteout files, and anything else left ``lying around'', will
            confuse any method which interrogates the file system.

        The easiest way to use Aegis' file knowledge is with something like an
        _a_w_k(1) script processing the Aegis file lists.  For example, you can
        do this with _m_a_k_e(1) as follows:
                # generate the file manifest
                manifest.make.inc: manifest.make.awk
                     ( aegis -l cf -ter ; aegis -l pf -ter ) | \
                     awk -f manifest.make.awk > manifest.make.inc
                # now include the file manifest
                include manifest.make.inc
        Note: this would be inefficient of you did it once per directory, but
        there is nothing stopping you writing numerous assignments into the
        _m_a_n_i_f_e_s_t_._m_a_k_e_._i_n_c file, all in one pass.

        It is possible to do the same thing with Aegis' report generator (see
        _a_e_r(1) for more information), but this is more involved than the
        _a_w_k(1) script.  However, with the information "straight from the
        horse's mouth" as it were, it can also be much smarter.

        This file manifest would become out-of-date without an interlock to
        Aegis' file operations commands.  By using the _p_r_o_j_e_c_t_-_f_i_l_e___c_o_m_m_a_n_d
        and _c_h_a_n_g_e___f_i_l_e___c_o_m_m_a_n_d fields of the project _c_o_n_f_i_g file (see
        _a_e_p_c_o_n_f(5) for more information), you can delete this file at
        strategic times.
                /* run when the change file manifest is altered */
                change_file_command = "rm -f manifest.make.inc";
                /* run when the project file manifest is altered */
                project_file_command = "rm -f manifest.make.inc";
        The new file manifest will thus be re-built during the next _a_e_b(1)
        command.

   OOppttiioonnss aanndd PPrreeffeerreenncceess
        There is a --NNoo--WWhhiitteeOOuutt option, which may be used to suppress whiteout
        files when you use the _a_e_r_m(1) and _a_e_m_v(1) commands.  There is a
        corresponding --WWhhiitteeOOuutt option, which is usually the default.

        There is a _w_h_i_t_e_o_u_t___p_r_e_f_e_r_e_n_c_e field in the user preferences file (see
        _a_e_u_c_o_n_f(5) for more information) if you want to set this option more
        permanently.

   WWhhiitteeoouutt FFiillee TTeemmppllaatteess
        The _w_h_i_t_e_o_u_t___t_e_m_p_l_a_t_e field of the project _c_o_n_f_i_g file may be used to
        produce language-specific error files.  If no whiteout template entry
        matches, a very ugly 1KB file will be produced - it should induce
        compiler errors for just about any language.

        If you want a more human-readable error message, entries such as
                whiteout_template =
                [
                     {
                     pattern = [ "*.[ch]" ];
                     body = "#error This file has been removed.";
                     }
                ];
        can be very effective (this example assumes _g_c_c(1) is being used).

        If it is essential that _n_o whiteout file be produced, say for C source
        files, you could use a whiteout template such as
                whiteout_template =
                [
                     { pattern = [ "*.c" ]; }
                ];
        because an absent _b_o_d_y sub-field means generate no whiteout file at
        all.

        You may have more than one whiteout template entry, but note that the
        order of the entries is important.  The first entry which matches will
        be used.

   NNoottiiffiiccaattiioonn
        The notification commands that would be run by the _a_e_c_p(1), _a_e_d_b(1),
        _a_e_n_f(1), _a_e_n_t(1) and _a_e_r_m(1) commands are run, as appropriate.  The
        _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set.  See _a_e_p_c_o_n_f(5) for more
        information.

CClloonniinngg aanndd MMeerrggiinngg
        When you use _a_e_c_l_o_n_e(1) to clone a change set, and then integrate one
        of the two change sets, you will observe that Aegis says that the
        files of the un-integrated change are now out-of-date.

        If you run _a_e_m(1) to bring the out-of-date files back up-to-date,
        _f_m_e_r_g_e(1) and some (but not) all other merging tools, it signals just
        about everything as a conflict, even though both alternatives are
        identical.

        The problem is that two changes making identical edits to the same
        place in the same file are a logical conflict, even if not an actual
        conflict, and it takes a human to figure out the difference.  Think of
        a shopping list: the ensuite needs more soap, and so does the main
        bathroom.  The second "soap" on the merge of the two shopping lists
        isn't a duplicate, you really do need two boxes of soap.  Sometimes
        edits of source files are the same: sometimes the logical conflict is
        resolved by applying both identical edits, not just one.

        This is just the _f_m_e_r_g_e(1) command being more conservative than RCS's
        _m_e_r_g_e(1) command.

        The easiest way to deal with this common situation it to run an
                aecpu -unchanged
        command _b_e_f_o_r_e you run the _a_e_m(1) merge command, and you will have
        less grief.  It's also worth remembering that Aegis stashes the
        original file with a ,B suffix (B for backup) so you can simply
                mv _f_u_b_a_r,B _f_u_b_a_r
        if you know that all of the conflicts are logical conflicts.

OOPPTTIIOONNSS
        The following options are understood:

        --BBRRaanncchh _n_u_m_b_e_r
                This option may be used to specify a different branch for the
                origin file, rather than the baseline.  (See also --TTRRuunnkk
                option.  Please Note: the --BBRRaanncchh option does not take a
                project name, just the branch number suffix.

        --GGrraannddPPaarreenntt
                This option may be used to specify the grandparent branch (one
                up from the current branch) for the origin file, rather than
                the baseline.  (The -grandparent option is the same as the
                ``-branch ..'' option.)

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --DDIIRReeccttoorryy _p_a_t_h
                This option may be used to specify which directory is to be
                used.  It is an error if the current user does not have
                appropriate 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.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --WWhhiitteeOOuutt
                This option may be used to request that deleted files be
                replaced by a ``whiteout'' file in the development directory.
                The idea is that compiling such a file will result in a fatal
                error, in order that all references may be found.  This is
                usually the default.

        --NNoo__WWhhiitteeOOuutt
                This option may be used to request that no ``whiteout'' file
                be placed in the development directory.

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify a filename which is to be
                written with the automatically determined change number.
                Useful for writing scripts.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTRRuunnkk
                This option may be used to specify the project trunk for the
                origin file, rather than the baseline.  (See also --BBRRaanncchh
                option, the -trunk option is the same as the ``-branch -''
                option.)

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        project.  (In some cases it is possible for developers of a project to
        create changes, see _a_e_p_a_t_t_r(5) for more information.)

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_c(1) Create a new change.

        _a_e_c_a(1) modify the attributes of a change

        _a_e_n_a(1) add a new administrator to a project

        _a_e_p_a(1) modify the attributes of a project

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aecomp(1)                                                            aecomp(1)



NNAAMMEE
        aecomp - compare two changes

SSYYNNOOPPSSIISS
        aaeeccoommpp _n_u_m_b_e_r [ _n_u_m_b_e_r ]

DDEESSCCRRIIPPTTIIOONN
        The _a_e_c_o_m_p script is used to compare two changes, using _t_k_d_i_f_f(1) to
        display the changes.  If you give one change on the command line, the
        other change is determined in the usual way.  If you give two changes,
        those are the two compared.  Both changes must be in the _b_e_i_n_g
        _d_e_v_e_l_o_p_e_d state (it's only a script, after all).

        Basically, aecomp allows you to specify two project/change pairs (ie
        the compared changes don't have to be in the same branch or project).
        aecomp attempts to use defaults (for project and change number) where
        possible.  As a minimum, it needs a single change number as an option.
        A list of files which are common between the two changes is
        constructed and presented.  Double clicking on any of the file names
        will _t_k_d_i_f_f the two versions (ie the files in each change).

        It is useful after you have used _a_e_c_l_o_n_e(1), then modified a change
        and subsequently are wondering what on earth you did.  Files are
        considered to be "common" if they have the same name.  In the case of
        a file which has been moved, it's original filename is used (the diff
        of course takes place against the new file name).

AAUUTTHHOORR
        Scott Finneran <scottf@lucent.com>



aecomplete(1)                                                    aecomplete(1)



NNAAMMEE
        aecomplete - command completion

SSYYNNOOPPSSIISS
        aaeeccoommpplleettee _c_m_d_-_n_a_m_e _i_n_c_o_m_p_l_e_t_e_-_w_o_r_d _p_r_e_v_i_o_u_s_-_w_o_r_d

DDEESSCCRRIIPPTTIIOONN
        The _a_e_c_o_m_p_l_e_t_e command is used to perform command completion for
        shells.

        See _b_a_s_h(1) for more information about Bash command completion, and
        how this command is expected to be executed.

        At present, this is the only shell supported.  The code has been
        written to be extensible, should other shells have programmable
        completion by external programs.

EEXXIITT SSTTAATTUUSS
        The _a_e_c_o_m_p_l_e_t_e command will exit with a status of 1 on any error.  The
        _a_e_c_o_m_p_l_e_t_e command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aecomplete version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aecomplete program comes with ABSOLUTELY NO WARRANTY; for details
        use the '_a_e_c_o_m_p_l_e_t_e _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software
        and you are welcome to redistribute it under certain conditions; for
        details use the '_a_e_c_o_m_p_l_e_t_e _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -CoPy_file(1)                                        aegis -CoPy_file(1)



NNAAMMEE
        aegis -CoPy_file - copy a file into a change

SSYYNNOOPPSSIISS
        aaeeggiiss --CCooPPyy__ffiillee [ _o_p_t_i_o_n...  ] _f_i_l_e_n_a_m_e...
        aaeeggiiss --CCooPPyy__ffiillee --IINNDDeeppeennddeenntt [ _o_p_t_i_o_n...  ] _f_i_l_e_n_a_m_e...
        aaeeggiiss --CCooPPyy__ffiillee --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --CCooPPyy__ffiillee --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_C_o_P_y___f_i_l_e command is used to copy a file into a change.
        The named files will be copied from the baseline into the development
        directory, and added to the list of files in the change.  The version
        of files copied from the baseline is remembered.

        This command may be used to copy tests into a change, not just source
        files.  Tests are treated just like any other source file, and are
        subject to the same process.

        Warning: If there are files in the development directory of the same
        name they will be overwritten by this command.

        You may also name directories.  All of the source files in the
        directories named, and all directories below them, will be copied from
        the baseline into the development directory, and added to the list of
        files in the change.

        When copying files explicitly, it is an error if the file is already
        part of the change.  When you name a directory, all of the source
        files in the project below that directory are copied, except any which
        are already in the change.  It is an error if none of the files
        implicitly named by the directory can be used.

        If you want to change a copied source file to be executable (shell
        scripts, for example) then you simply use the normal _c_h_m_o_d(1) command;
        the reverse to make it not executable.  If any of the file's
        executable bits are set at _a_e_d_e(1) time the file is remembered as
        executable and all execute bits (minus the project's umask) will be
        set by subsequent _a_e_c_p(1) commands.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   PPrroocceessss SSiiddee EEffffeeccttss
        This command will cancel any build or test registrations, because
        adding another file logically invalidates them.  If the project
        configuration file was added, any diff registration will also be
        canceled.

        When the change files are listed (_a_e_g_i_s _-_L_i_s_t _C_h_a_n_g_e___F_i_l_e_s _-_T_E_R_s_e) the
        copied files will appear in the listing.  When the project files are
        listed with an explicit change number (_a_e_g_i_s _-_L_i_s_t _P_r_o_j_e_c_t___F_i_l_e_s
        _-_T_E_R_s_e _-_C_h_a_n_g_e N) none of the change's files, including the copied
        files, will appear in the terse listing.  These two features are very
        helpful when calling aegis from within a DMT to generate the list of
        source files.

TTHHEE BBAASSEELLIINNEE LLOOCCKK
        The baseline lock is used to ensure that the baseline remains in a
        consistent state for the duration of commands which need to read the
        contents of files in the baseline.

        The commands which require the baseline to be consistent (these
        include the _a_e_b(1), _a_e_c_p(1) and _a_e_d(1) commands) take a baseline _r_e_a_d
        lock.  This is a non-exclusive lock, so the concurrent development of
        changes is not hindered.

        The command which modifies the baseline, _a_e_i_p_a_s_s(1), takes a baseline
        _w_r_i_t_e lock.  This is an exclusive lock, forcing _a_e_i_p_a_s_s(1) to block
        until there are no active baseline read locks.

        It is possible that one of the above development commands will block
        until an in-progress _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___P_A_S_S completes.  This is usually
        of short duration while the project history is updated.  The delay is
        essential so that these commands receive a consistent view of the
        baseline.  No other integration command will cause the above
        development commands to block.

        When aegis' branch functionality is in use, a read (non-exclusive)
        lock is taken on the branch baseline and also each of the "parent"
        baselines.  However, a baseline write (exclusive) lock is only taken
        on the branch baseline; the "parent" baselines are only read (non-
        exclusive) locked.

TTEESSTT CCOORRRREELLAATTIIOONNSS
        The ``aegis -Test -SUGgest'' command may be used to have aegis suggest
        suitable regression tests for your change, based on the source files
        in your change.  This automatically focuses testing effort to relevant
        tests, reducing the number of regression tests necessary to be
        confident that you have not introduced a bug.

        The test correlations are generated by the ``aegis -Integrate_Pass''
        command, which associates each test in the change with each source
        file in the change.  Thus, each source file accumulates a list of
        tests which have been associated with it in the past.  This is not as
        exact as code coverage analysis, but is a reasonable approximation in
        practice.

        The _a_e_c_p(1) and _a_e_n_f(1) commands are used to associate files with a
        change.  While they do not actively perform the association, these are
        the files used by _a_e_i_p_a_s_s(1) and _a_e_t(1) to determine which source
        files are associated with which tests.

   TTeesstt CCoorrrreellaattiioonn AAccccuurraaccyy
        Assuming that the testing correlations are accurate and that the tests
        are evenly distributed across the function space, there will be a less
        than _1_/_n_u_m_b_e_r chance that a relevant test has not been run by the
        ``aegis -Test -SUGgest _n_u_m_b_e_r'' command.  A small amount of noise is
        added to the test weighting, so that unexpected things are sometimes
        tested, and the same tests are not run every time.

        Test correlation accuracy can be improved by ensuring that:

        +o Each change should be strongly focused, with no gratuitous file
          inclusions.  This avoids spurious correlations.

        +o Each item of new functionality should be added in an individual
          change, rather than several together.  This strongly correlates
          tests with functionality.

        +o Each bug should be fixed in an individual change, rather than
          several together.  This strongly correlates tests with
          functionality.

        +o Test correlations will be lost if files are moved.  This is because
          correlations are by name.

        The best way for tests to correlate accurately with source files is
        when a change contains a test and exactly those files relating to the
        functionality under test.  Too many spurious files will weaken the
        usefulness of the testing correlations.

   NNoottiiffiiccaattiioonn
        The _c_o_p_y___f_i_l_e___c_o_m_m_a_n_d in the project _c_o_n_f_i_g file is run, if set.  The
        _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set, and if there has been an
        integration recently.  See _a_e_p_c_o_n_f(5) for more information.

OOPPTTIIOONNSS
        The following options are understood:

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --BBRRaanncchh _n_u_m_b_e_r
                This option may be used to specify a different branch for the
                origin file, rather than the baseline.  (See also --TTRRuunnkk
                option.  Please Note: the --BBRRaanncchh option does not take a
                project name, just the branch number suffix.

        --GGrraannddPPaarreenntt
                This option may be used to specify the grandparent branch (one
                up from the current branch) for the origin file, rather than
                the baseline.  (The -grandparent option is the same as the
                ``-branch ..'' option.)

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --DDEELLttaa _n_u_m_b_e_r
                This option may be used to specify a particular delta in the
                project's history to copy the file from, rather than the most
                current version.  If the delta has been given a name (see
                _a_e_d_n(1) for how) you may use a delta name instead of a delta
                number.  It is an error if the delta specified does not exist.
                Delta numbers start from 1 and increase; delta 0 is a special
                case meaning ``when the branch started''.

        --DDEELLttaa__DDaattee _s_t_r_i_n_g
                This option may be used to specify a particular date and time
                in the project's history to copy the file from, rather than
                the most current version.  It is an error if the string
                specified cannot be interpreted as a valid date and time.
                Quote the string if you need to use spaces.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --IINNDDeeppeennddeenntt
                This option is used to specify that the copy is to be run
                independent of any particular change.  The files will be
                copied relative to the current directory.

        --KKeeeepp
                This option may be used to retain files and/or directories
                usually deleted by the command.  Defaults to the user's
                _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for
                more information.

        --NNoo__KKeeeepp
                This option may be used to ensure that the files and/or
                directories are deleted by the command.  Defaults to the
                user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5)
                for more information.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --NNoott__LLooggggiinngg
                This option may be used to disable the automatic logging of
                output and errors to a file.  This is often useful when
                several aegis commands are combined in a shell script.

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify an output file of a file
                being copied from the baseline.  Only one baseline file may be
                named when this option is used.  The file name "-" is
                understood to mean the standard output.  This option does not
                add the file to the set of change files.  _N_o _l_o_c_k_s are taken
                when this option is used, not even the baseline read lock.

        --OOvveerrWWrriittiinngg
                This option may be used to force overwriting of files.  The
                default action is to give an error if an existing file would
                be overwritten.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --RReeaadd__OOnnllyy
                This option may be used to specify that the file is to be used
                to insulate the change from the baseline.  The user does not
                intend to edit the file.  These files must be uncopied before
                development may end.

        --RREESScciinndd
                This option may be used to rescind (roll back) a completed
                change.  The change to rescind (roll back) is specified in the
                usual way, with one of the --delta options.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --TTRRuunnkk
                This option may be used to specify the project trunk for the
                origin file, rather than the baseline.  (See also --BBRRaanncchh
                option, the -trunk option is the same as the ``-branch -''
                option.)

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aecp 'aegis -cp \!* -v'
        sh$     aecp(){aegis -cp "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the change is not assigned to the current user.
        It is an error if the file is already in the change and the --OOvveerrWWrriittee
        option is not specified.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

EEXXAAMMPPLLEESS
        Here are some simple examples.  Remember that most commands are
        relative to the current directory, even though these examples assume
        you are at the base of the development directory tree.

   CCooppyy WWhhoollee PPrroojjeecctt
        To copy the whole project into your change, use the command
                aecp .
        The trailing dot is part of the command, it means "the currect
        directory and everything below it".  This works for any directory in
        your project source tree, if you want to be more seledctive.

   PPrrrroodduuccee EEaarrlliieerr PPrroojjeecctt VVeerrssiioonn
        You you wish to exactly reproduces the sources for an earlier version
        of your project, you need to know the edelta number (use _a_e_l _p_r_o_j_-
        _h_i_s_t_o_r_y to find it).  Then use this command:
                aecp -delta _n .
        where _n is the delta number from the project history.  Again, the
        trailing dot is part of the command.  By using the _$_v_e_r_s_i_o_n
        substitution (see _a_e_s_u_b(5) for more information) you can embed this
        delta number into your program before distributing it.

        It is also possible to give a previous change number, instead, using
        this command:
                aecp -delta-from-change _n .
        where _n is the change number of interest.  Again, the trailing dot is
        part of the command.

   RReesscciinndd aa CChhaannggee
        When you need to rescind (back out) a completed change, it will
        probably have been some time ago, so you need to know the delta number
        or change number.  Use this command:
                aecp -delta _n -rescind .
        where _n is the delta number of interest.  All of the other -delta
        variantrs also work, so if you know the change number, you can be more
        selective about which files to copy:
                aecp -delta-from-change _n `aegis -l cf -ter -c _n`
        where _n is the change number of interest.  This only copies the files
        which were in the offending change.

SSEEEE AALLSSOO
        _a_e_b(1)  build also takes a baseline read lock (non-exclusive)

        _a_e_c_p_u(1)
                reverse action of aecp

        _a_e_d_b(1) begin development of a change

        _a_e_d_n(1) assign a name to a delta

        _a_e_i_p_a_s_s(1)
                integrate pass takes a baseline write lock (exclusive)

        _a_e_m_v(1) rename a file as part of a change

        _a_e_n_f(1) add a new file to a change

        _a_e_r_m(1) add files to be deleted to a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -CoPy_file_Undo(1)                              aegis -CoPy_file_Undo(1)



NNAAMMEE
        aegis -CoPy_file_Undo - reverse action of aecp

SSYYNNOOPPSSIISS
        aaeeggiiss --CCooPPyy__ffiillee__UUnnddoo [ _o_p_t_i_o_n...  ] _f_i_l_e_n_a_m_e...
        aaeeggiiss --CCooPPyy__ffiillee__UUnnddoo --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --CCooPPyy__ffiillee__UUnnddoo --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_C_o_P_y___f_i_l_e___U_n_d_o command is used to delete files previously
        copied into a change.  The named files will be removed from the list
        of files in the change.

        The file is deleted from the development directory unless the --KKeeeepp
        option is specified.  The --KKeeeepp option should be used with great care,
        as you can confuse tools such as _m_a_k_e(1) by leaving these files in
        place.

        You may name a directory to delete from the change all files in that
        directory tree previously copied into the change, other files in the
        tree will be ignored.  It is an error if there are no relevant files.

   BBrraanncchh _v_s CChhaannggee
        The _a_e_c_p_u(1) command may only be applied to a change.  If you wish to
        perform the same operation on a branch, use the _a_e_m_t(1) command,
        through the agency of a change.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   PPrroocceessss SSiiddee EEffffeeccttss
        This command will cancel any build or test registrations, because
        deleting a file logically invalidates them.  If the project
        configuration file was deleted, any diff registration will also be
        canceled.

        The difference file (,D) will also be removed, however any DMT derived
        files (e.g a .o file from a .c file) will not be removed.  This is
        because aegis is decoupled from the DMT, and cannot know what these
        derived file may be called.  You may need to delete derived files
        manually.

   NNoottiiffiiccaattiioonn
        The _c_o_p_y___f_i_l_e___u_n_d_o___c_o_m_m_a_n_d in the project _c_o_n_f_i_g file is run, if set.
        The _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set, and if there has been an
        integration recently.  See _a_e_p_c_o_n_f(5) for more information.

OOPPTTIIOONNSS
        The following options are understood:

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --IInntteerraaccttiivvee
                Specify that aegis should ask the user for confirmation before
                deleting each file.  Answer the question _y_e_s to delete the
                file, or _n_o to keep the file.  You can also answer _a_l_l to
                delete the file and all that follow, or _n_o_n_e to keep the file
                and all that follow.

                Defaults to the user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not
                specified, see _a_e_u_c_o_n_f(5) for more information.

                If aegis is running in the background, the question will not
                be asked, and the files will be deleted.

        --KKeeeepp
                This option may be used to retain files and/or directories
                usually deleted by the command.  Defaults to the user's
                _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for
                more information.

        --NNoo__KKeeeepp
                This option may be used to ensure that the files and/or
                directories are deleted by the command.  Defaults to the
                user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5)
                for more information.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerriiffyy__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that the symbolic links, or
                hard links, or file copies, in the work area be updated to
                reflect the current state of the baseline.  This is controlled
                by the _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field of the project
                configuration file.  Only files which are not involved in the
                change are updated.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if meaningful for your configuration.
                The name is an historical accident, hard links and file copies
                are included.

        --AAssssuummee__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that no update of baseline
                mirror files take place.  This options is useful when you
                _d_e_f_i_n_i_t_e_l_y _k_n_o_w the files' up-to-date-ness isn't important
                right now; incorrect use of this option may have unanticipated
                build side-effects.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if not meaningful for your
                configuration.  The name is an historical accident, hard links
                and file copies are included.

        --UUNNCChhaannggeedd
                Examine the named files to see if they are unchanged.  Only
                remove the unchanged files from the change, and leave the
                files which have changed.  If no files are named on the
                command line all change files are checked.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aecpu 'aegis -cpu \!* -v'
        sh$     aecpu(){aegis -cpu "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the change is not assigned to the current user.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_p(1) copy files into a change

        _a_e_m_t(1) make branch files transparent

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aecvsserver(1)                                                  aecvsserver(1)



NNAAMMEE
        aecvsserver - serve CVS client protocol against Aegis projects

SSYYNNOOPPSSIISS
        aaeeccvvsssseerrvveerr sseerrvveerr
        aaeeccvvsssseerrvveerr ppsseerrvveerr
        aaeeccvvsssseerrvveerr --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_c_v_s_s_e_r_v_e_r command is used to serve the CVS client protocol.  The
        repository, of course, is stored within Aegis.

        The server works by retrieving file contents from locations within
        Aegis change sets and repositories.  When necessary, appropriate
        _a_e_g_i_s(1) commands are executed by the server to fulfill the requests.

        _T_h_i_s _c_o_d_e _i_s _s_t_i_l_l _e_x_p_e_r_i_m_e_n_t_a_l_.  At the present time only a limited
        number of CVS commands are understood.  If you would like to extend
        this code, contributions are welcome.  The following commands are
        thought to work at this time: add, admin, checkout, commit, init,
        remove, update.

   sseerrvveerr
        To use the server, you will need to set the following environment
        variables:
                CVSROOT=:ext:_h_o_s_t_n_a_m_e/aegis
                CVS_RSH=ssh
                CVS_SERVER=aecvsserver

   ppsseerrvveerr
        It is also possible to use _a_e_c_v_s_s_e_r_v_e_r as a cvs pserver, with all the
        usual caveats about how insecure this access method is, because it
        transmits the password _a_l_m_o_s_t in the clear.  The root and modules are
        as above.

MMOODDUULLEESS
        The CVS concept of modules is mapped onto Aegis concept of projects
        and changes.  The special CVSROOT administrative module is simulated.

   PPrroojjeeccttss aass MMoodduulleess
        Each Aegis project appears to the CVS client as a module; the module's
        name is the same as the Aegis project's name.  This type of module
        isn't immediately useful except for the _c_v_s _e_x_p_o_r_t command, or to
        perform a read-only _c_v_s _c_h_e_c_k_o_u_t command.

        You can't commit to a project-named module.  This because Aegis
        requires all operations which would change the repository to be
        performed through a change set.

        It is theoretically possible to code _a_e_c_v_s_s_e_r_v_e_r to create a change
        (via _a_e_n_c(1) and _a_e_d_b(1) commands), then add the necessary files (via
        _a_e_n_f(1) and _a_e_c_p(1) commands), then build (via the _a_e_b(1) command),
        then test (via the _a_e_t(1) command), and finally to end development of
        the change (via the _a_e_d_e(1) command).  As the CVS protocol
        documentation says
                "The protocol makes it possible for updates to be atomic with
                respect to checkins; that is, if someone commits changes to
                several files in one cvs command, then an update by someone
                else would either get all the changes, or none of them.  The
                current cvs server can't do this, but that isn't the
                protocol's fault."
        This code is yet to be written.  Contributions welcome.

        The protocol, however, doesn't make it particularly easy, either.  The
        semantics of the Modify request change depending on whether it is
        _f_o_l_l_o_w_e_d by the commit request or the update request.

   CChhaannggeess aass MMoodduulleess
        Each Aegis change set also appears to the CVS client as a module; it's
        name is _p_r_o_j_e_c_t.C_n_u_m_b_e_r.  All _c_v_s _a_d_d commands, _c_v_s _r_e_m_o_v_e commands,
        _c_v_s _u_p_d_a_t_e commands and _c_v_s _c_o_m_m_i_t commands are performed against the
        change set, not directly to the baseline.  It is necessary for the
        change set to already exist, and once you have run the _c_v_s _c_o_m_m_i_t
        command, it will the be necessary to use the _a_e_d_e(1) command and the
        rest of the usual Aegis process.

        Once a change is no longer in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state, it cannot be
        changed via _a_e_c_v_s_s_e_r_v_e_r(1) and you will need to create a new Aegis
        change set, and then _c_v_s _c_h_e_c_k_o_u_t a new client-side work area.

        Please note: if you are experimenting with the interface via _c_v_s _-_d
        _:_f_o_r_k_:_/_a_e_g_i_s or similar, the work area you create mmuusstt be outside the
        Aegis change set's development directory.

   CCVVSSRROOOOTT
        The CVSROOT module's contents are synthesized from Aegis meta-data.
        You can't add or modify files in this module; you need to administer
        Aegis directly with _a_e_g_i_s(1) commands.

EEXXIITT SSTTAATTUUSS
        The _a_e_c_v_s_s_e_r_v_e_r command will exit with a status of 1 on any error.
        The _a_e_c_v_s_s_e_r_v_e_r command will only exit with a status of 0 if there are
        no errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aecvsserver version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aecvsserver program comes with ABSOLUTELY NO WARRANTY; for details
        use the '_a_e_c_v_s_s_e_r_v_e_r _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software
        and you are welcome to redistribute it under certain conditions; for
        details use the '_a_e_c_v_s_s_e_r_v_e_r _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -DIFFerence(1)                                      aegis -DIFFerence(1)



NNAAMMEE
        aegis -DIFFerence - find differences between a change and the baseline

SSYYNNOOPPSSIISS
        aaeeggiiss --DDIIFFFFeerreennccee [ _f_i_l_e_n_a_m_e...  ] [ _o_p_t_i_o_n...  ]
        aaeeggiiss --DDIIFFFFeerreennccee --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --DDIIFFFFeerreennccee --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_D_I_F_F_e_r_e_n_c_e command is used to generate difference listings
        between source files in the the development directory and the
        baseline.  The purpose is to enable reviewers to find each and every
        edit performed on the source files.  The difference listings will be
        placed into files named for the sources files but with an additional
        ",D" suffix.

        The command used to perform the differences is specified in the
        _d_i_f_f___c_o_m_m_a_n_d field of the project configuration file (see _a_e_p_c_o_n_f(5)
        for more information).

        Please note that the _h_i_s_t_o_r_y___c_o_n_t_e_n_t___l_i_m_i_t_a_t_i_o_n field of the project
        configuration file does nnoott apply to the _d_i_f_f___c_o_m_m_a_n_d field.

        If no files are named on the command line, all files in the change
        will be differenced.

        You may name a directory on the command line, and all files in the
        change in that directory tree will be differenced.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   NNoottiiffiiccaattiioonn
        The actions of the command are controlled by the _d_i_f_f___c_o_m_m_a_n_d and
        _m_e_r_g_e___c_o_m_m_a_n_d fields of the project _c_o_n_f_i_g file.  See _a_e_p_c_o_n_f(5) for
        more information.

TTHHEE BBAASSEELLIINNEE LLOOCCKK
        The baseline lock is used to ensure that the baseline remains in a
        consistent state for the duration of commands which need to read the
        contents of files in the baseline.

        The commands which require the baseline to be consistent (these
        include the _a_e_b(1), _a_e_c_p(1) and _a_e_d(1) commands) take a baseline _r_e_a_d
        lock.  This is a non-exclusive lock, so the concurrent development of
        changes is not hindered.

        The command which modifies the baseline, _a_e_i_p_a_s_s(1), takes a baseline
        _w_r_i_t_e lock.  This is an exclusive lock, forcing _a_e_i_p_a_s_s(1) to block
        until there are no active baseline read locks.

        It is possible that one of the above development commands will block
        until an in-progress _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___P_A_S_S completes.  This is usually
        of short duration while the project history is updated.  The delay is
        essential so that these commands receive a consistent view of the
        baseline.  No other integration command will cause the above
        development commands to block.

        When aegis' branch functionality is in use, a read (non-exclusive)
        lock is taken on the branch baseline and also each of the "parent"
        baselines.  However, a baseline write (exclusive) lock is only taken
        on the branch baseline; the "parent" baselines are only read (non-
        exclusive) locked.

CCOONNFFLLIICCTT RREESSOOLLUUTTIIOONN
        If the version of a file in the change is not the same as the version
        of the file in the baseline, it is out-of-date; some other change has
        altered the file while this change was being developed.

        When a difference is requested for an out-of-date file, a merge is
        performed between the common ancestor, the version in the baseline,
        and the version in the development directory.  The command used to
        perform the merge is specified by the _m_e_r_g_e___c_o_m_m_a_n_d field of the
        project configuration file (see _a_e_p_c_o_n_f(5) for more information).

        Please note that the _h_i_s_t_o_r_y___c_o_n_t_e_n_t___l_i_m_i_t_a_t_i_o_n field of the project
        configuration file does nnoott apply to the _m_e_r_g_e___c_o_m_m_a_n_d field.

        After the merge is performed the version of the file will be changed
        to be the current version, marking the file as up to date, and a new
        build will be required.

        The original file in your development directory is preserved with an
        ",B" suffix (B for backup).  The source file contains the result of
        the merge.  You should edit the source files, to make sure the
        automatic merge has produced sensible results.

        This merge process works most of the time.  Usually two changes to two
        logically separate areas of functionality will alter two logically
        separate parts of any files they may have in common.  There are
        pathological cases where this merge process is spectacularly useless,
        but these are surprisingly rare in practice.

        If you don't want the automatic merge results, simply use the _m_v(1)
        command to restore the contents from the ",B" file.

        If any merges are required no differences will be performed.  An error
        message and a non-zero exit status will also result.  This is to
        ensure that developers notice that merges have been done, and that
        they reconcile the sources and the merged _,_D files before the next
        difference.  See the --NNoo__MMeerrggee and --OOnnllyy__MMeerrggee options, below, for
        exact control of when merging is performed.

CClloonniinngg aanndd MMeerrggiinngg
        When you use _a_e_c_l_o_n_e(1) to clone a change set, and then integrate one
        of the two change sets, you will observe that Aegis says that the
        files of the un-integrated change are now out-of-date.

        If you run _a_e_m(1) to bring the out-of-date files back up-to-date,
        _f_m_e_r_g_e(1) and some (but not) all other merging tools, it signals just
        about everything as a conflict, even though both alternatives are
        identical.

        The problem is that two changes making identical edits to the same
        place in the same file are a logical conflict, even if not an actual
        conflict, and it takes a human to figure out the difference.  Think of
        a shopping list: the ensuite needs more soap, and so does the main
        bathroom.  The second "soap" on the merge of the two shopping lists
        isn't a duplicate, you really do need two boxes of soap.  Sometimes
        edits of source files are the same: sometimes the logical conflict is
        resolved by applying both identical edits, not just one.

        This is just the _f_m_e_r_g_e(1) command being more conservative than RCS's
        _m_e_r_g_e(1) command.

        The easiest way to deal with this common situation it to run an
                aecpu -unchanged
        command _b_e_f_o_r_e you run the _a_e_m(1) merge command, and you will have
        less grief.  It's also worth remembering that Aegis stashes the
        original file with a ,B suffix (B for backup) so you can simply
                mv _f_u_b_a_r,B _f_u_b_a_r
        if you know that all of the conflicts are logical conflicts.

IINNTTEEGGRRAATTIIOONN
        During integration, it is also necessary to difference a change.  This
        provides the difference between the branch and its parent, for when
        development on a branch is completed and it is to be reviewed.  The
        baseline of a branch is the development directory of the composite
        change it represents.

OOPPTTIIOONNSS
        The following options are understood:

        --AANNttiicciippaattee _c_h_a_n_g_e_-_n_u_m_b_e_r
                This option is used to nominate a source for the reference
                files, rather than the baseline.  This may be used to
                synchronize with a change without having to wait for it to
                arrive in the baseline.  It is an error if the anticipated
                change is not in one of the _'_b_e_i_n_g _r_e_v_i_e_w_e_d_' or _'_a_w_a_i_t_i_n_g
                _i_n_t_e_g_r_a_t_i_o_n_' or _'_b_e_i_n_g _i_n_t_e_g_r_a_t_e_d_' states.  A merge is always
                performed, because the anticipated change is "about" to make
                any common file out-of-date.  You will still have to perform a
                "real" merge later.

        --BBRRaanncchh _n_u_m_b_e_r
                This option may be used to specify a different branch for the
                origin file, rather than the baseline.  (See also --TTRRuunnkk
                option.  Please Note: the --BBRRaanncchh option does not take a
                project name, just the branch number suffix.

        --GGrraannddPPaarreenntt
                This option may be used to specify the grandparent branch (one
                up from the current branch) for the origin file, rather than
                the baseline.  (The -grandparent option is the same as the
                ``-branch ..'' option.)

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --NNoott__LLooggggiinngg
                This option may be used to disable the automatic logging of
                output and errors to a file.  This is often useful when
                several aegis commands are combined in a shell script.

        --TTRRuunnkk
                This option may be used to specify the project trunk for the
                origin file, rather than the baseline.  (See also --BBRRaanncchh
                option, the -trunk option is the same as the ``-branch -''
                option.)

        --NNoo__MMeerrggee
                This option is used to cause only file differences to be
                generated, even when file versions are out-of-date.  If not
                set, the default is to use the _d_i_f_f___p_r_e_f_e_r_e_n_c_e field of the
                _a_e_u_c_o_n_f(5) file.

        --OOnnllyy__MMeerrggee
                This option is used to cause only file merges to be performed
                on files with out-of-date versions.  Other source files are
                ignored.  If not set, the default is to use the
                _d_i_f_f___p_r_e_f_e_r_e_n_c_e field of the _a_e_u_c_o_n_f(5) file.

        --AAuuttoommaattiicc__MMeerrggee
                This option is used to perform _-_O_n_l_y___M_e_r_g_e if any source files
                have out-of-date versions, otherwise _-_N_o___M_e_r_g_e _i_s _p_e_r_f_o_r_m_e_d_.
                Only merges or differences will be performed, it will never
                use a mixture.  If not set, the default is to use the
                _d_i_f_f___p_r_e_f_e_r_e_n_c_e field of the _a_e_u_c_o_n_f(5) file.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aed 'aegis -diff \!* -v'
        sh$     aed(){aegis -diff "$@" -v}
        For user's convenience, particularly when they have selected the ``no
        merge'' preference, there is also a merge alias:
        csh%    alias aem 'aegis -diff -only_merge \!* -v'
        sh$     aem(){aegis -diff -only_merge $* -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d or _b_e_i_n_g
        _i_n_t_e_g_r_a_t_e_d states.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_b(1)  build also takes a baseline read lock (non-exclusive)

        _a_e_c_p(1) copy file also takes a baseline read lock (non-exclusive)

        _a_e_d_b(1) begin development of a change

        _a_e_i_p_a_s_s(1)
                integrate pass takes a baseline write lock (exclusive)

        _a_e_p_c_o_n_f(5)
                project configuration file format

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Develop_Begin(1)                                aegis -Develop_Begin(1)



NNAAMMEE
        aegis -Develop_Begin - begin development of a change

SSYYNNOOPPSSIISS
        aaeeggiiss --DDeevveelloopp__BBeeggiinn _c_h_a_n_g_e_-_n_u_m_b_e_r [ _o_p_t_i_o_n...  ]
        aaeeggiiss --DDeevveelloopp__BBeeggiinn --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --DDeevveelloopp__BBeeggiinn --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_D_e_v_e_l_o_p___B_e_g_i_n command is used to commence development of a
        change.

        The development directory for the change will be created
        automatically; below the directory specified in the default_-
        development_directory field of _a_e_u_c_o_n_f(5), or if not set below the
        directory specified in the default_development_directory field of
        _a_e_p_a_t_t_r(5), or if not set below the current user's home directory.  It
        is rare to need to know the exact pathname of the development
        directory, as the _a_e_c_d(1) command can take you there at any time.

        Successful execution of this command will move the specified change
        from the _a_w_a_i_t_i_n_g _d_e_v_e_l_o_p_m_e_n_t state to the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.

                                  awaiting
                                 development
                                      |
                           develop    |develop
                           begin      |begin
                           undo       |
                                    being
                                  developed



   NNoottiiffiiccaattiioonn
        The _d_e_v_e_l_o_p___b_e_g_i_n___c_o_m_m_a_n_d in the project configuration file (see
        _a_e_p_c_o_n_f(5) for more information) will be run, if specified.  This is
        run after the aegis locks are released, so additional aegis commands
        may be run from here, if used with care.  The symbolic links (see
        below) have _n_o_t yet been created.

   DDeevveellooppmmeenntt DDiirreeccttoorryy LLooccaattiioonn
        PPlleeaassee NNoottee:: Aegis also consults the underlying file system, to
        determine its notion of maximum file size.  Where the file system's
        maximum file size is less than _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h, 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 _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h 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
        filesystems 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 _c_o_n_f_i_g 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 environments.

        If your development directories are routinely on a Linux UMSDOS
        filesystem, you would probably be better off setting
        _d_o_s___f_i_l_e_n_a_m_e___r_e_q_u_i_r_e_d _= _t_r_u_e, and also changing the
        _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___t_e_m_p_l_a_t_e field.  Heterogeneous development with
        various Windows environments may also require this.

AADDMMIINNIISSTTRRAATTOORR OOVVEERRRRIIDDEE
        It is possible for project administrators to use the --UUsseerr option to
        force a developer to start developing a change.  Some sites prefer to
        work this way.  Note that developers still have the ability to use the
        _a_e_d_b_u(1) command.

        Warning: capricious use of this command will rapidly alienate
        developers.  The defaulting rules, particularly for the change number,
        depend on aegis and the developer agreeing on what the developer is
        currently working on.

        The _f_o_r_c_e_d___d_e_v_e_l_o_p___b_e_g_i_n___n_o_t_i_f_y___c_o_m_m_a_n_d project attribute (see
        _a_e_p_a_t_t_r(5) for more information) will be run when an administrator
        uses the --UUsseerr option, in an attempt to minimize the surprises for
        developers.  A suitable command is
                forced_develop_begin_notify_command =
                    "$datadir/db_forced.sh $p $c $developer";
        This command will send e-mail to the developer, informing her that the
        change has been assigned to her.

SSYYMMBBOOLLIICC LLIINNKKSS
        Many dependency maintenance tools, and indeed some compilers, have
        little or no support for include file search paths, and thus for the
        concept of the two-level directory hierarchy employed by Aegis.  (It
        becomes multi-level when Aegis' branching functionality is used.)  To
        allow these tools to be used, Aegis provides the ability to maintain a
        set of symbolic links between the development directory of a change
        and the baseline of a project, so it appears to these tools that all
        of the project's files are present in the development directory.

   PPrroojjeecctt CCoonnffiigguurraattiioonn
        The _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field of the project configuration
        file controls the appearance of the development directory.  See
        _a_e_p_c_o_n_f(5) for more information.

        By using a setting such as
                development_directory_style =
                {
                    source_file_symlink = true;
                    during_build_only = true;
                };
        the user never sees the symbolic links, because they are added purely
        for the benefit of the dependency maintenance tool during the
        execution of the _a_e_b(1) command.

        By using a setting such as
                development_directory_style =
                {
                    source_file_symlink = true;
                };
        (the other will default to false) the symbolic links will be created
        at develop begin time (see _a_e_d_b(1) for more information) and also
        maintained by each _a_e_b(1) invocation.  Note that the symbolic links
        are only maintained at these times, so project integrations during the
        course of editing change sourec files may leave the symbolic links in
        an inconsistent state until the next build.

        When files are copied from the baseline into a change, using the
        _a_e_c_p(1) command, the symbolic link pointing into the baseline, if any,
        will be removed before the file is copied.

        NNoottee:: Using this functionality in either form has implications for how
        the rules file of the dependency maintenance tool is written.  Rules
        must _r_e_m_o_v_e their targets before creating them (usually with an _r_m _-_f
        command) if you use any of the link sub-fields (both hard links and
        symbolic links).  This is to avoid attempting to write the result on
        the symbolic link, which will point at a read-only file in the project
        baseline.  This is similar to the same requirement for using the
        _l_i_n_k___i_n_t_e_g_r_a_t_i_o_n___d_i_r_e_c_t_o_r_y field of the project configuration file.

   UUsseerr CCoonnffiigguurraattiioonn
        There is a _s_y_m_b_o_l_i_c___l_i_n_k___p_r_e_f_e_r_e_n_c_e field in the user configuration
        file (see _a_e_u_c_o_n_f(5) for more information).  This controls whether
        _a_e_b(1) will verify the symbolic links before the build (default) or
        whether it will assume they are up-to-date.  (This field is only
        relevant if _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y_____s_t_y_l_e_._s_o_u_r_c_e___f_i_l_e___s_y_m_l_i_n_k is true.)

        For medium-to-large projects, verifying the symbolic links can take as
        long as the build itself.  Assuming the symbolic links are up-to-date
        can be a large time-saving for these projects.  It may be advisable to
        review your choice of DMT in such a situation.

        The _a_e_d_b(1) command ddooeess nnoott consult this preference.  Thus, in most
        situations, the symbolic links will be up-to-date when the build is
        performed.  The only Aegis function which may result in the symbolic
        links becoming out-of-date is the integration of another change, as
        this may alter the presence or absence of files in the baseline.  In
        this situation, the default _a_e_b(1) action is to ignore the user
        preference and the verify symbolic links.

        There are two command line options which modify _a_e_b(1) behavior
        further: the --VVeerriiffyy--SSyymmbboolliicc--LLiinnkkss option says to verify the symbolic
        links; and the --AAssssuummee--SSyymmbboolliicc--LLiinnkkss option says to assume the
        symbolic links are up-to-date.  In each case the option over-rides the
        default and the user preference.

        It is possible to obtain behaviour similar to Tom Lord'a Arch by using
        a setting such as:
                development_directory_style =
                {
                    source_file_link = true;
                    source_file_symlink = true;
                };

        It is possible to obtain behaviour similar to CVS by using a setting
        such as:
                development_directory_style =
                {
                    source_file_copy = true;
                };
        There are many more possible configurations of the _d_e_v_e_l_o_p_m_e_n_t___-
        _d_i_r_e_c_t_o_r_y___s_t_y_l_e, usually with helpful build side-effects.  See
        _a_e_p_c_o_n_f(1) and the _D_e_p_e_n_e_d_e_n_c_y _M_a_i_n_t_e_n_a_n_c_e _T_o_o_l chapter of the User
        Guide for more information.

        The symbolic link command line options and preferences apply equally
        to hard links and file copies (the names have historical origins).

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --DDIIRReeccttoorryy _p_a_t_h
                This option may be used to specify which directory is to be
                used.  It is an error if the current user does not have
                appropriate 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.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --UUsseerr _n_a_m_e
                This option is used to specify the user who is to develop the
                change.  This option may only be used by a project
                administrator.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aedb 'aegis -db \!* -v'
        sh$     aedb(){aegis -db "$@" -v}

EERRRROORRSS
        It is an error if the change does not exist.
        It is an error if the change is not in the _a_w_a_i_t_i_n_g _d_e_v_e_l_o_p_m_e_n_t state.
        It is an error if the current user is not a developer of the specified
        project.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_b(1)  build a change

        _a_e_c_d(1) change directory

        _a_e_c_p(1) copy files into a change

        _a_e_d(1)  find differences between a change and the baseline

        _a_e_d_b_u(1)
                undo the effects of aedb

        _a_e_d_e(1) complete development of a change

        _a_e_m_v(1) rename a file as part of a change

        _a_e_n_c(1) add a new change to a project

        _a_e_n_d(1) add a new developer to a project

        _a_e_n_f(1) add new files to a change

        _a_e_n_t(1) add a new test to a change

        _a_e_p_a(1) modify the attributes of a project

        _a_e_r_m(1) add files to be deleted to a change

        _a_e_t(1)  run tests

        _a_e_p_a_t_t_r(5)
                project attributes file format

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Develop_Begin_Undo(1)                      aegis -Develop_Begin_Undo(1)



NNAAMMEE
        aegis -Develop_Begin_Undo - undo the effects of aedb

SSYYNNOOPPSSIISS
        aaeeggiiss --DDeevveelloopp__BBeeggiinn__UUnnddoo _c_h_a_n_g_e_-_n_u_m_b_e_r [ _o_p_t_i_o_n...  ]
        aaeeggiiss --DDeevveelloopp__BBeeggiinn__UUnnddoo --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --DDeevveelloopp__BBeeggiinn__UUnnddoo --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_D_e_v_e_l_o_p___B_e_g_i_n___U_n_d_o command is used to reverse the effects
        of the 'aegis -Develop_Begin' command.  The development directory is
        discarded, even if the change has files associated with it, and even
        if the development directory is not empty; all files in the
        development directory will be lost.  The change is returned to the
        _a_w_a_i_t_i_n_g _d_e_v_e_l_o_p_m_e_n_t state.

                                  awaiting
                                 development
                                      |
                           develop    |develop
                           begin      |begin
                           undo       |
                                    being
                                  developed



   NNoottiiffiiccaattiioonn
        The _d_e_v_e_l_o_p___b_e_g_i_n___u_n_d_o___c_o_m_m_a_n_d field of the project _c_o_n_f_i_g file is
        run, if set.  See _a_e_p_c_o_n_f(5) for more information.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --IInntteerraaccttiivvee
                Specify that aegis should ask the user for confirmation before
                deleting each file.  Answer the question _y_e_s to delete the
                file, or _n_o to keep the file.  You can also answer _a_l_l to
                delete the file and all that follow, or _n_o_n_e to keep the file
                and all that follow.

                Defaults to the user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not
                specified, see _a_e_u_c_o_n_f(5) for more information.

                If aegis is running in the background, the question will not
                be asked, and the files will be deleted.

        --KKeeeepp
                This option may be used to retain files and/or directories
                usually deleted by the command.  Defaults to the user's
                _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for
                more information.

        --NNoo__KKeeeepp
                This option may be used to ensure that the files and/or
                directories are deleted by the command.  Defaults to the
                user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5)
                for more information.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --UUsseerr _n_a_m_e
                This option may be used by project administrators to undo the
                effects of using the same option with the _a_e_d_b(1) command.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aedbu 'aegis -dbu \!* -v'
        sh$     aedbu(){aegis -dbu "$@" -v}

EERRRROORRSS
        It is an error if the change is no assigned to the current user.
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_d_b(1) begin development of a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Develop_End(1)                                    aegis -Develop_End(1)



NNAAMMEE
        aegis -Develop_End - complete development of a change

SSYYNNOOPPSSIISS
        aaeeggiiss --DDeevveelloopp__EEnndd [ _o_p_t_i_o_n...  ]
        aaeeggiiss --DDeevveelloopp__EEnndd --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --DDeevveelloopp__EEnndd --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_D_e_v_e_l_o_p___E_n_d command is used to notify aegis of the
        completion of the development of a change.

        This command checks that you have successfully completed an 'aegis
        -Build' command since any change source file was edited.  See _a_e_b(1)
        for more information.

        This command checks that you have successfully completed an 'aegis
        -DIFFerence' command since any change source file was edited.  See
        _a_e_d(1) for more information.

        This command checks that you have successfully completed an 'aegis
        -Test' command since the last successful build, unless the change has
        a _t_e_s_t___e_x_e_m_p_t attribute.  This command checks that you have
        successfully completed an 'aegis -Test -BaseLine' command, unless the
        change has a _t_e_s_t___b_a_s_e_l_i_n_e___e_x_e_m_p_t attribute.  This command checks that
        you have successfully completed an 'aegis -Test -REGression' command,
        unless the change has a _t_e_s_t___r_e_g_r_e_s_s_i_o_n___e_x_e_m_p_t attribute.  See _a_e_t(1)
        and _a_e_c_a_t_t_r(5) for more information.

        If the change includes the project configuration file, this command
        checks project file names, to make sure they conform to the
        _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h and _p_o_s_i_x___f_i_l_e_n_a_m_e___c_h_a_r_s_e_t field settings.
        See _a_e_p_c_o_n_f(5) for more information.

        Successful execution of the command advances the change from the _b_e_i_n_g
        _d_e_v_e_l_o_p_e_d state to the _b_e_i_n_g _r_e_v_i_e_w_e_d state, by default.  The
        _d_e_v_e_l_o_p___e_n_d___a_c_t_i_o_n project attribute controls which of the following 3
        paths are taken.

           _d_e_v_e_l_o_p___e_n_d___a_c_t_d_i_e_o_v_n_e_:_l_o_p___e_n_d___a_c_t_i_d_o_e_n_v_:_e_l_o_p___e_n_d___a_c_t_i_o_n_:
          _g_o_t_o___a_w_a_i_t_i_n_g___r_e_g_v_o_i_t_e_o_w___b_e_i_n_g___r_e_g_v_o_i_t_e_o_w___e_a_d_w_a_i_t_i_n_g___i_n_t_e_g_r_a_t_i_o_n

                 being          being          being
               developed      developed      developed
                    |              |              |
                    |develop       |              |
                    |end           |              |
                    |              |              |
                awaiting           |develop       |
                 review            |end           |
                    |              |              |
                    |review        |              |develop
                    |begin         |              |end
                    |              |              |
                 being          being             |
                reviewed       reviewed           |
                    |              |              |
                    |review        |review        |
                    |pass          |pass          |
                    |              |              |
                awaiting       awaiting       awaiting
               integration   integration    integration


                        _(_T_h_i_s _i_s _t_h_e _d_e_f_a_u_l_t_._)


        PPlleeaassee NNoottee:: the third alternative, skipping reviews altogether,
        should only be used for single person projects.  All self-respecting
        commercial enterprise will avoid this alternative.

        Because branches may extend for many months or even years, it is
        common for the user who initiated the branch to be no longer with the
        project, or even the company.  For this reason, project administrators
        may end the development of branches.  For normal changes in this
        situation, use the _a_e_c_h_o_w_n(1) command.

        If the project configuration file has specified the presence of
        Signed-off-by: lines, a suitable line containing the current user's
        email address will be appended to the change description.

        The change is no longer considered assigned to the developer.

   BBrraanncchheess
        If you get an error message telling you that you can't end a branch
        because a file needs to be merged, see the Branching chapter of the
        Aegis User Guide for more information.

        While changes and branches are almost identical in the ways you
        manipulate them within Aegis, actual file changes must always be done
        in a change.  Thus, it is necessary to create a new change on the
        branch and do a cross-branch grandparent merge before you will be able
        to develop-end a branch which is giving you this error.

   NNoottiiffiiccaattiioonn
        On successful completion of the command, the _d_e_v_e_l_o_p___e_n_d___n_o_t_i_f_y___-
        _c_o_m_m_a_n_d field of the project attributes file is run, if set.  See
        _a_e_p_a(1) and _a_e_p_a_t_t_r(5) for more information.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --SSiiggnneedd__OOffff__BByy
                This option may be used to have a Signed-off-by: line appended
                to the change set description.

        --NNoo__SSiiggnneedd__OOffff__BByy
                This option may be used to prevent a Signed-off-by: line from
                being appended to the change set description.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aede 'aegis -de \!* -v'
        sh$     aede(){aegis -de "$@" -v}

EERRRROORRSS
        It is an error if the change is not assigned to the current user.
        It is an error if The change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if there has been no successful _'_a_e_g_i_s _-_B_u_i_l_d_' command
        since a change file was last edited.
        It is an error if there has been no successful _'_a_e_g_i_s _-_D_I_F_F_e_r_e_n_c_e_'
        command since a change file was last edited.
        It is an error if there has been no successful _'_a_e_g_i_s _-_T_e_s_t_' command
        since a change file was last edited.
        It is an error if there has been no successful _'_a_e_g_i_s _-_T_e_s_t _-_B_a_s_e_L_i_n_e_'
        command since a change file was last edited.

        It is an error if an read-only file is still copied into the change.
        Read-only files are to insulate a change from the baseline during
        development; they must be removed before development may end.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_b(1)  build a change

        _a_e_c_a(1) list or modify attributes of a change

        _a_e_d(1)  difference a change

        _a_e_d_b(1) begin development of a change

        _a_e_d_e_u(1)
                recall a change for further development

        _a_e_r_f_a_i_l(1)
                fail a change review

        _a_e_r_p_a_s_s(1)
                pass a change review

        _a_e_t(1)  test a change

        _a_e_p_c_o_n_f(5)
                project configuration file format

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Develop_End_Undo(1)                          aegis -Develop_End_Undo(1)



NNAAMMEE
        aegis -Develop_End_Undo - recall a change for further development

SSYYNNOOPPSSIISS
        aaeeggiiss --DDeevveelloopp__EEnndd__UUnnddoo _c_h_a_n_g_e_-_n_u_m_b_e_r [ _o_p_t_i_o_n...  ]
        aaeeggiiss --DDeevveelloopp__EEnndd__UUnnddoo --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --DDeevveelloopp__EEnndd__UUnnddoo --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_D_e_v_e_l_o_p___E_n_d___U_n_d_o command is used to recall a change for
        further development.

        Successful execution of this command returns the change to the _b_e_i_n_g
        _d_e_v_e_l_o_p_e_d state.

                       develop end   being
                              undo developed
                                        |
                                        |develop
                                        |end
                                        |
                                    awaiting
                                     review
                                        |
                                        |review
                                        |begin
                                        |
                                     being
                                    reviewed
                                        |
                                        |review
                                        |pass
                                        |
                                    awaiting
                                  integration



        The files are changed back to being owned by the current user, and
        cease to be read-only.

   NNoottiiffiiccaattiioonn
        On successful completion of the command, the _d_e_v_e_l_o_p___e_n_d___u_n_d_o___n_o_t_i_f_y___-
        _c_o_m_m_a_n_d field of the project attributes file is run, if set.  See
        _a_e_p_a(1) and _a_e_p_a_t_t_r(5) for more information.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aedeu 'aegis -deu \!* -v'
        sh$     aedeu(){aegis -deu "$@" -v}

EERRRROORRSS
        It is an error if the change is not in one of the _a_w_a_i_t_i_n_g _r_e_v_i_e_w or
        _b_e_i_n_g _r_e_v_i_e_w_e_d or _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n states.

        If is an error if the project has been configured to use the _a_w_a_i_t_i_n_g
        _r_e_v_i_e_w state, and the change is currently in the _b_e_i_n_g _r_e_v_i_e_w_e_d state.
        This is because the change currently belongs to the reviewer.

        It is an error if the change was not developed by the current user.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_d_e1   complete development of a change

        _a_e_r_p_a_s_s1
                pass review of a change

        _a_e_r_f_a_i_l1
                fail review of a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aediff(1)                                                            aediff(1)



NNAAMMEE
        aediff - file differences between deltas

SSYYNNOOPPSSIISS
        aaeeddiiffff [ _o_p_t_i_o_n...  ] _f_i_l_e_n_a_m_e
        aaeeddiiffff --HHeellpp
        aaeeddiiffff --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_d_i_f_f command is used to obtain the difference between versions
        of the given _f_i_l_e_n_a_m_e across different file versions, a specified by
        the command lien options.

        If two changes or deltas are specified, the difference between the
        versions of the file in each will be output.

        If only one change or delta is specified, the second version defaults
        to the current change.

        If no changes or deltas are specified, the first version defaults to
        the baseline and the second version defaults to the current change.

   EExxaammpplleess
        To see the difference in the project configuration file, _a_e_g_i_s_._c_o_n_f,
        between deltas 1.2.D003 and 4.5.D067 the following command may be
        used:
                aediff aegis.conf -c 1.2.D003 -c 4.5.D067
        To see the differences in the project configuration file, between the
        head of the 7.6 branch and the current change, the following command
        may be used:
                aediff -branch 7.6 -bl  aegis.conf
        Many, many other combinatiosn are possible.

   UUssiinngg GGrraapphhiiccaall TToooollss
        It is possible to use a graphical diff tool with the _a_e_d_i_f_f(1)
        command.  This is done by using the -command _o_p_t_i_o_n_, _o_r _s_e_t_t_i_n_g _t_h_e
        AE2DIFF _e_n_v_i_r_o_n_m_e_n_t _v_a_r_i_a_b_l_e_.  _F_o_r _e_x_a_m_p_l_e_, _t_o _u_s_e _t_h_e _t_k_d_i_f_f_(_1_)
        _c_o_m_m_a_n_d _t_o _d_i_s_p_l_a_y _t_h_e _d_i_f_f_e_r_e_n_c_e_s _y_o_u _w_o_u_l_d _u_s_e _a _c_o_m_m_a_n_d _s_u_c_h _a_s_:
                _a_e_d_i_f_f _-_-_c_o_m_m_a_n_d_=_t_k_d_i_f_f _f_i_l_e_n_a_m_e
        _I_f _y_o_u _u_s_e _t_h_i_s _o_p_t_i_o_n_, _m_a_n_y _o_f _t_h_e _d_i_f_f_(_1_)_-_s_p_e_c_i_f_i_c _o_p_t_i_o_n_s _w_i_l_l _b_e
        _i_g_n_o_r_e_d_.

OOPPTTIIOONNSS
        The following options are understood:

        --BBaasseeLLiinnee
                This option may be used to specify that the project baseline
                is the subject of the command.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --CCOOMMmmaanndd _s_t_r_i_n_g
                This option may be used to set the command used to display
                differences.  Using this option will cause _d_i_f_f(1)-specific
                options to be ignored.  If not set, defaults to the value of
                the AE2DIFF environment variable, or "diff" otherwise.

        --CCOONNtteexxtt [ _l_i_n_e_s ]
                Use the context output format, showing _l_i_n_e_s (an integer)
                lines of context, or three if _l_i_n_e_s is not given.  For proper
                operation, _p_a_t_c_h(1) typically needs at least two lines of
                context.

        --DDEELLttaa _n_u_m_b_e_r
                This option may be used to specify a particular delta in the
                project's history to copy the file from, rather than the most
                current version.  If the delta has been given a name (see
                _a_e_d_n(1) for how) you may use a delta name instead of a delta
                number.  It is an error if the delta specified does not exist.
                Delta numbers start from 1 and increase; delta 0 is a special
                case meaning ``when the branch started''.

        --DDEELLttaa__DDaattee _s_t_r_i_n_g
                This option may be used to specify a particular date and time
                in the project's history to copy the file from, rather than
                the most current version.  It is an error if the string
                specified cannot be interpreted as a valid date and time.
                Quote the string if you need to use spaces.

        --IIggnnoorree__BBllaannkk__LLiinneess
                Ignore changes that just insert or delete blank lines.

        --IIggnnoorree__AAllll__SSppaaccee
                Ignore white space when comparing lines.

        --IIggnnoorree__CCaassee
                Ignore changes in case; consider upper- and lower-case to be
                the same.

        --IIggnnoorree__SSppaaccee__CChhaannggee
                Ignore changes in amount of white space.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --SShhooww__CC__FFuunnccttiioonn
                Show which C function each change is in.

        --TTRRuunnkk
                This option may be used to specify the project trunk for the
                origin file, rather than the baseline.  (See also --BBRRaanncchh
                option, the -trunk option is the same as the ``-branch -''
                option.)

        --uunniiffiieedd [ _l_i_n_e_s ]
                Use the unified output format, showing _l_i_n_e_s (an integer)
                lines of context, or three if lines is not given.  For proper
                operation, _p_a_t_c_h(1) typically needs at least two lines of
                context.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_d_i_f_f program.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_d_i_f_f are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_d_i_f_f command will exit with a status of 1 on any error.  The
        _a_e_d_i_f_f command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aediff version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aediff program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_d_i_f_f _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_d_i_f_f _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aedist(1)                                                            aedist(1)



NNAAMMEE
        aedist - remotely distribute a change

SSYYNNOOPPSSIISS
        aaeeddiisstt --SSeenndd [ _o_p_t_i_o_n...  ]
        aaeeddiisstt --RReecceeiivvee [ _o_p_t_i_o_n...  ]
        aaeeddiisstt --RREEPPllaayy [ _o_p_t_i_o_n...  ] -f _U_R_L
        aaeeddiisstt --MMIIssssiinngg [ _o_p_t_i_o_n...  ] -f _U_R_L
        aaeeddiisstt --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeddiisstt --HHeellpp
        aaeeddiisstt --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_d_i_s_t command is used to send and receive change sets to
        facilitate geographically distributed development.  The expected
        transport mechanism is e-mail, however other mechanisms are equally
        possible.

        The basic function is to reproduce a change, so a command like
                aedist -send | aedist -receive
        may be used to clone a change, though less efficiently than
        _a_e_c_l_o_n_e(1).  The file format used is designed to withstand mail
        servers, so activities such as
                aedist -send | _e_-_m_a_i_l | aedist -receive
        (where _e_-_m_a_i_l represents sending, transporting and receiving your e-
        mail) will reproduce the change on a remote system.  With suitable
        tools (such as PGP) is it possible to
                aedist -send | encrypt | _e_-_m_a_i_l | decrypt | aedist -receive
        The mechanism is also designed to allow web-based distribution such as
                aedist -send | _w_e_b_-_s_e_r_v_e_r _-_> _w_e_b_-_b_r_o_w_s_e_r | aedist -receive
        by the use of appropriate CGI scripts and mailcap entries.

        It is possible to support both a ``push'' model and a ``pull'' model
        using this command.  For suggestions and ideas for various ways to do
        this, see the Aegis Users Guide.

SSEENNDD
        The send variant takes a specified change, or baseline, and constructs
        a distribution package containing all of the change attributes and
        source file attributes and source file contents.  The result is
        compressed, and encoded into a text format which can be sent as e-mail
        without being corrupted by the mail transfer agents along the way.

   OOppttiioonnss
        The following options are understood by the send variant:

        --BBaasseeLLiinnee
                This option may be used to specify the source of a project,
                rather than a change.  Implies the _-_E_n_t_i_r_e___S_o_u_r_c_e option,
                unless over-ridden.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --CCOOmmpprreessss
                This option may be used to specify that the output is to be
                compressed.  This is the default.

        --NNoo__CCOOmmpprreessss
                This option may be used to specify that the output is not to
                be compressed.

        --CCOOMMPPAATTiibbiilliittyy _v_e_r_s_i_o_n_-_n_u_m_b_e_r
                This option may be used to specify the version of _a_e_d_i_s_t(1)
                which will be _r_e_c_e_i_v_i_n_g this change set.  This information is
                used to select which features to include in the data, and
                which to omit.  By default, the latest feature set will be
                used.

        --CCoonntteenntt__TTrraannssffeerr__EEnnccooddiinngg _n_a_m_e
                This option may be used to specify the content transfer
                encoding to be used.  It may take one of the following values:

                None    No content transfer encoding is to be performed.

                Base64  The MIME base 64 encoding is to be used.  This is the
                        default.

                Quoted_Printable
                        The MIME quoted printable encoding is to be used.

                Unix_to_Unix_encode
                        The ancient unix-to-unix encoding is to be used.

                These encodings may be abbreviated in the same way as comment
                line options.

        --AAsscciiii__AArrmmoorr
                This means the same as the ``-cte=base64'' option above.

        --NNoo__AAsscciiii__AArrmmoorr
                This means the same as the ``-cte=none'' option above.

        --DDEELLttaa _n_u_m_b_e_r
                This option may be used to specify a particular delta in the
                project's history to copy the file from, rather than the most
                current version.  If the delta has been given a name (see
                _a_e_d_n(1) for how) you may use a delta name instead of a delta
                number.  It is an error if the delta specified does not exist.
                Delta numbers start from 1 and increase; delta 0 is a special
                case meaning ``when the branch started''.

        --DDEELLttaa__DDaattee _s_t_r_i_n_g
                This option may be used to specify a particular date and time
                in the project's history to copy the file from, rather than
                the most current version.  It is an error if the string
                specified cannot be interpreted as a valid date and time.
                Quote the string if you need to use spaces.

        --DDeessccrriippttiioonn__HHeeaaddeerr
                This option may be used to add an RFC 822 style header to the
                change description being sent, with a From and Date line.
                This is the default.

        --NNoo__DDeessccrriippttiioonn__HHeeaaddeerr
                This option suppresses the description header.

        --EEnnttiirree__SSoouurrccee
                This option may be used to send the entire source of the
                project, as well as the change source files.

        --PPaarrttiiaall__SSoouurrccee
                This option may be used to send only source files of a change.
                This is the default, except for the _-_B_a_s_e_L_i_n_e option.

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify the output file.  The
                output is sent to the standard output by default.

        --PPAATTcchh  This option is deprecated.  Please use the --CCOOMMPPAATTiibbiilliittyy
                option instead.

        --NNoo__PPAATTcchh
                This option is deprecated.  Please use the --CCOOMMPPAATTiibbiilliittyy==44..66
                option instead.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --SSiiggnneedd__OOffff__BByy
                This option may be used to have a Signed-off-by: line appended
                to the change set description.

        --NNoo__SSiiggnneedd__OOffff__BByy
                This option may be used to prevent a Signed-off-by: line from
                being appended to the change set description.

RREECCEEIIVVEE
        The receive variant takes a change package created by the send variant
        and creates an Aegis change (see _a_e_n_c(1)) to implement the change
        within.  Files are added to the change (see _a_e_r_m(1), _a_e_c_p(1), _a_e_n_f(1)
        and _a_e_n_t(1)) and then the file contents are unpackaged into the
        development directory.

        The change is then built (see _a_e_b(1)), differenced (see _a_e_d(1)), and
        tested (see _a_e_t(1)).  If all of this is successful, development of the
        change is ended (see _a_e_d(1)).  The automatic process stops at this
        point, so that a local reviewer can confirm that the change is
        desired.

   NNoottiiffiiccaattiioonn
        The _a_e_d_i_s_t command invokes various other Aegis commands.  The usual
        notifications that these commands would issue are issued.

   OOppttiioonnss
        The following options are understood by the receive variant:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to choose the change number to be
                used, otherwise one will be chosen automatically.

        --DDEELLttaa _n_u_m_b_e_r
                This option may be used to specify a particular delta in the
                project's history to copy the file from, just as for the
                _a_e_c_p(1) command.  You may also use a delta name instead of a
                delta number.

        --DDIIRReeccttoorryy _p_a_t_h
                This option may be used to specify which directory is to be
                used.  It is an error if the current user does not have
                appropriate 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.

        --FFiillee _f_i_l_e_n_a_m_e
                Read the change set from the specified file.  The default is
                to read it from the standard input.  The filename `-' is
                understood to mean the standard input.

                If your system has _l_i_b_c_u_r_l(3), and Aegis was configured to use
                it at compile time (this is the default if it is available)
                you will also be able to specify a Uniform Resource Locator
                (URL) in place of the file name.  The relevant data will be
                downloaded.  (The --VVeerrbboossee option will provide a progress
                bar.)

        --PPAATTcchh  This option may be used to apply patches from the input, if
                available.  This generally results in fewer merge problems,
                but it requires the two repositories to be well synchronized.
                This is the default.

        --NNoo__PPAATTcchh
                This option may be used to ignore patches in the input, if any
                are present.

        --IIggnnoorree__UUUUIIDD
                This option may be used to ignore the UUID, if present, of the
                incoming change set.

        --NNoo__IIggnnoorree__UUUUIIDD
                This option force the _a_e_d_i_s_t command to use the change set's
                UUID.  This is the default.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to set the project name.  If not
                specified, the project name in the input package will be used,
                rather than the usual project name defaulting mechanism.

        --TTrroojjaann This option may be used to treat the change set as if it had a
                Trojan horse attack in it.

        --NNoo__TTrroojjaann
                This option may be used to treat the change set as if it
                definitely does not have a Trojan horse attack in it.  _U_s_e
                _w_i_t_h _e_x_t_r_e_m_e _c_a_r_e_.  You need to have authenticated the message
                with something like PGP first aanndd know the the author well.

   SSeeccuurriittyy
        Receiving changes by e-mail, and automatically committing them to the
        baseline without checking them, would be a recipe for disaster.  A
        number of safeguards are provided:

        +o The format of the package is confirmed to be correct, and the
          package verified for internal consistency, before it is unpacked and
          acted upon.

        +o The automatic portion of the process stops when development ends.
          This ensures that a local reviewer validates the change before it is
          committed, preventing accidental or malicious damage.

        +o If the change seeks to update the project _c_o_n_f_i_g file, the automatic
          process terminates before the build or difference occurs.  This is
          because this file could contain trojans for these operations, so a
          human must examine the file before the change proceeds any further.

        +o There is a _p_o_t_e_n_t_i_a_l___t_r_o_j_a_n___h_o_r_s_e _= _[ _s_t_r_i_n_g _]_; field in the
          project_c_o_n_f_i_g file.  Nominate build configuration files, shell
          scripts, code generators, _e_t_c here to specify files in addition to
          the project configuration file which should cause the automatic
          processing to halt.

        +o The use of e-mail authentication and encryption systems, such as PGP
          and GPG, are encouraged.  However, it is expected that this
          processing will occur after _a_e_d_i_s_t _-_-_s_e_n_d has constructed the
          package and before _a_e_d_i_s_t _-_-_r_e_c_e_i_v_e examines and acts on the
          package.  Verification of the sender is the surest defense against
          trojan horses.

        +o Automatic sending and receiving of packages is supported, but not
          implemented within the aedist command.  It is expected that the
          aedist command will be used within shell scripts customized for your
          site and its unique security requirements.  See the Aegis User Guide
          for several different ways to do this.

        +o The more you use Aegis' test management facilities (see _a_e_n_t(1) and
          _a_e_t(1)) the harder it is for an inadequate change to get into the
          baseline.

   DDuupplliiccaattee SSttoorrmmss
        In a distributed development environment, it is common for change sets
        to eventually be propagated back to the originator.  There are
        situations (particularly in some star topologies) where several copies
        of the package will return to the originator.

        If these change sets are not detected at the review stage, and are
        propagated out yet again, there is the possibility of an exponential
        explosion of redundant packages being distributed again and again.

        To combat this, changes are checked after the files are unpacked, but
        before and build or difference or test is performed.  The ``_a_e_c_p_u
        _-_-_u_n_c_h_a_n_g_e_d'' command is used to exclude all files that the local
        repository already has in the desired form.  If no change files remain
        after this, the change is dropped entirely (see _a_e_d_b_u(1) and
        _a_e_n_c_u(1)).

RREEPPLLAAYY
        If you are tracking a remote site which makes a project available via
        the _a_e_g_e_t(1) web interface, you can automatically synchronize with the
        remote site using the _a_e_d_i_s_t _-_r_e_p_l_a_y command.

        For example, Aegis developers can track the master project with a
        command of the form:
                aedist -p aegis.4.20 --replay -f aegis.sourceforge.net
        This command is internally rewritten as
                aedist --replay -p aegis.4.20 -f \
                  http://aegis.sf.net/cgi-bin/aeget/aegis.4.20/?inventory
        If your cgi-bin directory is somewhere else, you will need to use the
        long form.

        The change set inventory page is human readable if you want to see
        what it contains.  The links on this page provide all the information
        necessary to download any of the change sets listed.

        This command reads the list of change set UUIDs from the remote
        repository, and compares it with the list of change set UUIDs in the
        local repository, and fetches any that are not present locally.

        Each of the change sets required are downloaded and unpacked by
        issuing a command such as
                aedist -rec -f \
                  http://aegis.sf.net/cgi-bin/aeget/aegis.4.19.C010/?aedist
        If this completes successfully (and it is possible it won't, either
        because of trojan warnings, or some conflict between local changes and
        the imcoming remote changes), and your project has its _d_e_v_e_l_o_p___e_n_d___-
        _a_c_t_i_o_n set to _g_o_t_o___a_w_a_i_t_i_n_g___i_n_t_e_g_r_a_t_i_o_n, the change will be integrated
        using a command such as:
                aeintegratq -p aegis.4.20 -c 10
        and then starts over again for the next missing change set.

   OOppttiioonnss
        The following options are understood by this variant:

        --EEXXcclluuddee__UUUUIIDD _U_U_I_D
                This option may be used to exclude some change sets from being
                downloaded and unpacked.  This option may be used more than
                once.

        --NNoo__EEXXcclluuddee__UUUUIIDD _U_U_I_D
                This option may be used to explicitly list change sets to be
                downloaded and unpacked, to the exclusion of all others.  This
                option may be used more than once.

        --EEXXcclluuddee__vveerrssiioonn _p_a_t_t_e_r_n
                This option may be used to explicitly exclude some change set
                from being downloaded and unpacked.  The _p_a_t_t_e_r_n is matched
                against the version as displayed in the inventory.  This
                option may be used more than once.

        --IINNcclluuddee__VVeerrssiioonn _p_a_t_t_e_r_n
                This option may be used to explicitly list change sets to be
                downloaded and unpacked, to the exclusion of all others.  The
                _p_a_t_t_e_r_n is matched against the version as displayed in the
                inventory.  This option may be used more than once.

        --FFiillee _f_i_l_e_n_a_m_e
                Read the change set from the specified file.  The default is
                to read it from the standard input.  The filename `-' is
                understood to mean the standard input.

                If your system has _l_i_b_c_u_r_l(3), and Aegis was configured to use
                it at compile time (this is the default if it is available)
                you will also be able to specify a Uniform Resource Locator
                (URL) in place of the file name.  The relevant data will be
                downloaded.  (The --VVeerrbboossee option will provide a progress
                bar.)

        --PPEErrsseevveerree
                This option may be used to specify that all relevant change
                sets should be downloaded, even if some fail.  Defaults to the
                user's _p_e_r_s_e_v_e_r_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5)
                for more information.

        --NNoo__PPEErrsseevveerree
                This option may be used to specify that the downloading of
                change sets should stop after the first failure.  Defaults to
                the user's _p_e_r_s_e_v_e_r_e___p_r_e_f_e_r_e_n_c_e if not specified, see
                _a_e_u_c_o_n_f(5) for more information.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        -Trojan This option is passed to any _a_e_d_i_s_t(1) commands spawned by
                this command.

        -No_Trojan
                This option is passed to any _a_e_d_i_s_t(1) commands spawned by
                this command.

MMIISSSSIINNGG
        If you want to see the change sets that _a_e_d_i_s_t _-_m_i_s_s_i_n_g may download
        before it goes ahead and does it, you can use a command such as:
                aedist --missing -f aegis.sf.net
        In particular, this allows you to select apropriate UUIDs for the
        _a_e_d_i_s_t _-_r_e_p_l_a_y _-_e_x_c_l_u_d_e or _-_n_o_-_e_x_c_l_u_d_e options.

   OOppttiioonnss
        The following options are understood by this variant:

        --EEXXcclluuddee__UUUUIIDD _U_U_I_D
                This option may be used to exclude some change sets from being
                listed.  This option may be used more than once.

        --NNoo__EEXXcclluuddee__UUUUIIDD _U_U_I_D
                This option may be used to explicitly list change sets to be
                listed, to the exclusion of all others.  This option may be
                used more than once.

        --EEXXcclluuddee__vveerrssiioonn _p_a_t_t_e_r_n
                This option may be used to explicitly exclude some change set
                from being listed.  The _p_a_t_t_e_r_n is matched against the version
                as displayed in the inventory.  This option may be used more
                than once.

        --IINNcclluuddee__VVeerrssiioonn _p_a_t_t_e_r_n
                This option may be used to explicitly list change sets to be
                listed, to the exclusion of all others.  The _p_a_t_t_e_r_n is
                matched against the version as displayed in the inventory.
                This option may be used more than once.

LLIISSTT
        The list variant can be used to list the contents of a package without
        actually unpacking it first.  The output is reminiscent of the _a_e_g_i_s
        _-_l_i_s_t _c_h_a_n_g_e_-_d_e_t_a_i_l_s output.

   OOppttiioonnss
        The following options are understood by the list variant:

        --FFiillee _f_i_l_e_n_a_m_e
                Read the change set from the specified file.  The default is
                to read it from the standard input.  The filename `-' is
                understood to mean the standard input.

                If your system has _l_i_b_c_u_r_l(3), and Aegis was configured to use
                it at compile time (this is the default if it is available)
                you will also be able to specify a Uniform Resource Locator
                (URL) in place of the file name.  The relevant data will be
                downloaded.  (The --VVeerrbboossee option will provide a progress
                bar.)

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify the output file.  The
                output is sent to the standard output by default.  Only useful
                with the -List option.

OOPPTTIIOONNSS
        The following options to this command haven't been mentioned yet:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_d_i_s_t program.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_d_i_s_t are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

FFIILLEE FFOORRMMAATT
        The file format re-uses existing formats, rather than introduce
        anything new.  This means it is possible to extract the contents of a
        package even when aedist is unavailable.

        +o The source files and other information is stored as a _c_p_i_o(1)
          archive.

        +o The archive is compressed using the GNU gzip format.  Typically
          primary source files are ASCII text, resulting in significant
          compression.

        +o The compressed result is encoded using the MIME base64 encoding.
          This makes the result approximately 33% larger than the compressed
          binary would be, but still smaller than the primary sources.

        The _c_p_i_o archive is used to store

        etc/project-name
                This contains the project name to apply the package to, unless
                over-ridden by the --project command line option.

        etc/change-set
                This contains the change attributes and the list of source
                files and usages, in _a_e_c_s_t_a_t_e(5) format.

        src/_f_i_l_e_n_a_m_e
                Each source file in the package (named in _e_t_c_/_c_h_a_n_g_e_-_s_e_t)
                appears under the _s_r_c_/ directory.

        Extra files, or files out of order, are a fatal error.

EEXXIITT SSTTAATTUUSS
        The _a_e_d_i_s_t command will exit with a status of 1 on any error.  The
        _a_e_d_i_s_t command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aedist version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aedist program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_d_i_s_t _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_d_i_s_t _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/

CCRREEDDIITTSS
        This program evolved through discussion with a number of people.  If I
        have forgotten anyone, it wasn't intentional.

        Ralf Fassel       <ralf@akutech.de>              Catching trojan horses.
        Walter Franzini   <walter.franzini@sys-net.it>   coding -replay download
        Florian Xhumari   <Florian.Xhumari@inria.fr>     On the need for pull interfaces.
        Graham Wheeler    <gram@cdsec.com>               HTTP pull interfacing.



aegis -DELta_NAme(1)                                      aegis -DELta_NAme(1)



NNAAMMEE
        aegis -DELta_NAme - assign a symbolic name to a project delta

SSYYNNOOPPSSIISS
        aaeeggiiss --DDEELLttaa__NNAAmmee [ _o_p_t_i_o_n...  ] _n_a_m_e
        aaeeggiiss --HHeellpp
        aaeeggiiss --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_D_E_L_t_a___N_A_m_e command is used to add a symbolic name to a
        project delta.  This is so that this name may be used, rather than the
        number, when extracting previous versions of the file using the
        _a_e_c_p(1) command.

        The --DDEELLttaa _n_u_m_b_e_r option on the command line specifies a delta number
        of the project.  That is, it is the delta number assigned to an
        integration.  Delta names may only be applied to project baselines.
        If no delta number is given on the command line, the current baseline
        is the default.

        A name must be given on the command line.  This is the name which will
        be assigned to the delta.  If the name has already been used, you will
        be given a fatal error message.  If you also specify the --OOvveerrWWrriittiinngg
        option the name will be removed from its previous delta and assigned
        to the requested delta.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --DDEELLttaa _n_u_m_b_e_r
                This option may be used to specify a particular delta in the
                project's history to name.

        --DDEELLttaa__DDAAttee _s_t_r_i_n_g
                This option may be used to specify a particular date and time
                in the project's history.

        --DDeellttaa__FFrroomm__CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular delta in the
                project's history, based on when the given change was
                successfully integrated.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --OOvveerrWWrriittiinngg
                This option may be used to force overwriting of files.  The
                default action is to give an error if an existing file would
                be overwritten.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_p(1) copy a file into a change, particularly the --DDEELLttaa option

        _a_e_i_b(1) start the integration of a change

        _a_e_l(1)  list interesting this, particularly the _p_r_o_j_e_c_t___h_i_s_t_o_r_y
                listing

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aeedit(1)                                                            aeedit(1)



NNAAMMEE
        aeedit - edit a change's files

SSYYNNOOPPSSIISS
        aaeeeeddiitt [ --pp _p_r_o_j_e_c_t_-_n_a_m_e ] [ --cc _c_h_a_n_g_e_-_n_u_m_b_e_r ]

DDEESSCCRRIIPPTTIIOONN
        The _a_e_e_d_i_t command is used to edit all of the files in a change.  For
        editors with one buffer per file, this can be very useful except for
        changes with huge numbers of files.

        The editor's current directory is changed to the top of the change's
        development directory tree.

        If you have PlasticFS installed, the editor's environment will be
        configured to present the development directory as the complete search
        path.

OOPPTTIIOONNSS
        The following options are understood:

        --pp _p_r_o_j_e_c_t_-_n_a_m_e
                This option may be used to set the project name.

        --cc _c_h_a_n_g_e_-_n_u_m_b_e_r
                This option may be used to set the change number.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/

CCOOPPYYRRIIGGHHTT
        aeedit version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Scott Finneran

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.



aegis -File_ATtributes(1)                            aegis -File_ATtributes(1)



NNAAMMEE
        aegis -File_ATtributes - modify the attributes of a file

SSYYNNOOPPSSIISS
        aaeeggiiss --FFiillee__AATTttrriibbuutteess --FFiillee _a_t_t_r_-_f_i_l_e [ _o_p_t_i_o_n...  ] _f_i_l_e_n_a_m_e
        aaeeggiiss --FFiillee__AATTttrriibbuutteess --EEddiitt [ _o_p_t_i_o_n...  ] _f_i_l_e_n_a_m_e
        aaeeggiiss --FFiillee__AATTttrriibbuutteess --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_F_i_l_e___A_T_t_r_i_b_u_t_e_s command is used to set, edit or list the
        attributes of a file.

        The output of the --LLiisstt variant is suitable for use as input at a
        later time.

        See _a_e_f_a_t_t_r(5) for a description of the file format.

OOPPTTIIOONNSS
        The following options are understood:

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aefa 'aegis -fat \!* -v'
        sh$     aefa(){aegis -fat "$@" -v}

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        specified project.
        It is an error if the current user is not the developer of the
        specified change.
        It is an error if the file is not included in the specified change.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_a(5) modify the attributes of a change

        _a_e_f_a_t_t_r(5)
                file attributes file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aefind(1)                                                            aefind(1)



NNAAMMEE
        aefind - search for files in directory hierarchy

SSYYNNOOPPSSIISS
        aaeeffiinndd [ _o_p_t_i_o_n...  ] _p_a_t_h...  _e_x_p_r_e_s_s_i_o_n
        aaeeffiinndd --HHeellpp
        aaeeffiinndd --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_f_i_n_d command is used to search the combined directory tree of a
        change and its project.  It is intentionally similar to _f_i_n_d _(_1_)_,
        however it unifies the directory stack of a change and its branch
        baseline, and the branch's ancestors' baselines if any.

        For each file found in the directory tree, the given expression is
        evaluated from left to right, according to the rules of precedence
        (see the section on OPERATORS, below), only until the outcome is
        known, at which point aefind moves on to the next file name.

        If no directory is named on the command line, the current directory is
        assumed.

        Files which have been removed from the project, even if they somehow
        remain in the directory tree, will not be reported.

OOPPTTIIOONNSS
        The following options are understood:

        --BBaasseeLLiinnee
                This option may be used to specify that the project baseline
                is the subject of the command.

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_f_i_n_d program.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --RReessoollvvee
                This option may be used to request that filenames be absolute
                paths, referring to the fully resolved file name.  This is the
                default.

        --NNoo__RReessoollvvee
                This option may be used to request that filenames be base
                relative names, relative to the root of the ``stacked''
                directory tree.

        --VVeerrbboossee
                This option may be used to request that the expression be
                printed again on the standard output.  This is the expression
                as understood by _a_e_f_i_n_d, to assist you in ensuring that you
                and the command agree.  The expression is fully parenthesized,
                and all implicit operators made explicit.  Where possible,
                constant expressions will have been folded.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_f_i_n_d are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXPPRREESSSSIIOONNSS
        The expression is made up of basic elements, tests (which return a
        true or false value), and actions (which have side effects and return
        a true or false value), all separated by operators.

   BBAASSIICC EELLEEMMEENNTTSS
        {{}}      The value of this expression is the full file name of the file
                currently being considered.  The value is affected the the
                --RReessoollvvee option.

        _n_u_m_b_e_r  Numbers may be specified directly, for use with other tests
                and operators.  In the style of C, they may be hexadecimal
                with a ``0x'' prefix, octal with a ``0'' prefix, or decimal
                otherwise.

        _s_t_r_i_n_g  Strings may be specified directly, for use with other tests
                and operators.  If the string contains shell meta-characters,
                you may need to quote it.

        --FFAAllssee  The value of this expression is always false.

        --NNOOWW    The value of this expression is the current time, at the start
                of execution.

        --TTRRuuee   The value of this expression is always true.

   OOPPEERRAATTOORRSS
        The --aanndd operator is assumed where the operator is omitted.  You will
        need to quote many of the operators, to protect them from
        interpretation by the shell.  Each operator must be a separate command
        line argument.

        (( _e_x_p_r ))
                Force precedence.

        ++ _e_x_p_r  Unary plus.  Is is an error if the argument cannot be coerced
                to a number.

        -- _e_x_p_r  Unary minus.  Result is the numeric negative of the argument.
                Is is an error if the argument cannot be coerced to a number.

        !! _e_x_p_r  Logical negation of the sense of the expression.  Is is an
                error if the argument cannot be coerced to a boolean.
                Synonym: --NNoott

        ~~ _e_x_p_r  Bitwise not of the argument.  Is is an error if the argument
                cannot be coerced to an integer.

        _e_x_p_r_1 ** _e_x_p_r_2
                This operation multiplies the two values.  Is is an error if
                the arguments cannot be coerced to numbers.

        _e_x_p_r_1 // _e_x_p_r_2
                This operation divides the argument value by the second.  Is
                is an error if the arguments cannot be coerced to numbers.  Is
                is an error if the second argument is zero.

        _e_x_p_r_1 %% _e_x_p_r_2
                This operation produces the remainder of the division of the
                first argument by the argument.  Is is an error if the
                arguments cannot be coerced to numbers.  Is is an error if the
                second argument is zero.

        _e_x_p_r_1 ~~ _e_x_p_r_2
                Is is an error if the arguments cannot be coerced to strings.
                Is is an error if the first argument is not a valid pattern.
                The first argument is the pattern, and the second is the
                string The result is true if the pattern matches, and false if
                it does not.  This operation performs a shell file pattern
                comparison.  to be compared.

        _e_x_p_r_1 ++ _e_x_p_r_2
                This operation adds the two values.  Is is an error if the
                values cannot be coerced to numbers.

        _e_x_p_r_1 -- _e_x_p_r_2
                This operation subtracts the second values from the first.  Is
                is an error if the values cannot be coerced to numbers.

        _e_x_p_r_1 #### _e_x_p_r_2
                This operation concatenates the arguments.  Is is an error if
                the arguments cannot be coerced to strings.  (Note: this is
                _n_o_t the same as the :: operator of the _e_x_p_r(1) command.)

        _e_x_p_r_1 <<<< _e_x_p_r_2
                Shift the first argument left by the number of bits specified
                by the second argument.  The left argument is treated as an
                _u_n_s_i_g_n_e_d number.  Is is an error if the values cannot be
                coerced to numbers.

        _e_x_p_r_1 >>>> _e_x_p_r_2
                Shift the first argument right by the number of bits specified
                by the second argument.  The left argument is treated as an
                _u_n_s_i_g_n_e_d number.  Is is an error if the values cannot be
                coerced to numbers.

        _e_x_p_r_1 << _e_x_p_r_2
                Compare the values and produce true if the first value is less
                than the second value, false otherwise.  If both values can be
                coerced to numbers, the comparison is numeric; if both values
                can be coerced to strings, the comparison is lexicographic;
                otherwise is it an error.

        _e_x_p_r_1 <<== _e_x_p_r_2
                Compare the values and produce true if the first value is less
                than or equal to the second value, false otherwise.  If both
                values can be coerced to numbers, the comparison is numeric;
                if both values can be coerced to strings, the comparison is
                lexicographic; otherwise is it an error.

        _e_x_p_r_1 >> _e_x_p_r_2
                Compare the values and produce true if the first value is
                greater than the second value, false otherwise.  If both
                values can be coerced to numbers, the comparison is numeric;
                if both values can be coerced to strings, the comparison is
                lexicographic; otherwise is it an error.

        _e_x_p_r_1 >>== _e_x_p_r_2
                Compare the values and produce true if the first value is
                greater than or equal to the second value, false otherwise.
                If both values can be coerced to numbers, the comparison is
                numeric; if both values can be coerced to strings, the
                comparison is lexicographic; otherwise is it an error.

        _e_x_p_r_1 ==== _e_x_p_r_2
                Compare the values and produce true if the first value is
                equal to the second value, false otherwise.  If both values
                can be coerced to numbers, the comparison is numeric; if both
                values can be coerced to strings, the comparison is
                lexicographic; otherwise is it an error.

        _e_x_p_r_1 !!== _e_x_p_r_2
                Compare the values and produce true if the first value is not
                equal to the second value, false otherwise.  If both values
                can be coerced to numbers, the comparison is numeric; if both
                values can be coerced to strings, the comparison is
                lexicographic; otherwise is it an error.

        _e_x_p_r_1 && _e_x_p_r_2
                This operation produces the bitwise-and of the two values.  Is
                is an error if the values cannot be coerced to numbers.

        _e_x_p_r_1 || _e_x_p_r_2
                This operation produces the bitwise-or of the two values.  Is
                is an error if the values cannot be coerced to numbers.

        _e_x_p_r_1 &&&& _e_x_p_r_2
                Result is true if both expressions are true.  Short circuit
                evaluation is used, and so _e_x_p_r_2 is not evaluated if _e_x_p_r_1 is
                false.  Is is an error if the arguments cannot be coerced to
                booleans.
                Synonym: --AAnndd

        _e_x_p_r_1 _e_x_p_r_2
                Logical and (implied).  Result is true if both expressions are
                true.  Short circuit evaluation is used, and so _e_x_p_r_2 is not
                evaluated if _e_x_p_r_1 is false.  Please note that implicit
                operator plays merry hell with operator precedence, because
                there is no operator.  If you are getting odd results, use
                explicit operators.

        _e_x_p_r_1 |||| _e_x_p_r_2
                Result is true if either expression is true.  Short circuit
                evaluation is used, and so _e_x_p_r_2 is not evaluated if _e_x_p_r_1 is
                true.  Is is an error if the arguments cannot be coerced to
                booleans.
                Synonym: --OOrr

        _e_x_p_r_1 ?? _e_x_p_r_2 :: _e_x_p_r_3
                The value of this expression is _e_x_p_r_2 if _e_x_p_r_1 is true, and
                _e_x_p_r_3 otherwise.  The _e_x_p_r_1 is always evaluated, but only one
                of _e_x_p_r_2 or _e_x_p_r_3 will be evaluated.  It is an error if the
                value of _e_x_p_r_1 cannot be coerced to boolean.

        _e_x_p_r_1 ,, _e_x_p_r_2
                Both _e_x_p_r_1 and _e_x_p_r_2 are always evaluated.  The value of _e_x_p_r_1
                is discarded; the value of the expression is the value of
                _e_x_p_r_2.

        Operators have precedence as described by the following table, highest
        to lowest:

                            +----------------------------+
                            |   Operator       Direction |
                            +----------------------------+
                            |_(_u_n_a_r_y_) + - ~ !      <-     |
                            |* / % ~              ->     |
                            |+ - :                ->     |
                            |<< >>                ->     |
                            |< <= > >=            ->     |
                            |== !=                ->     |
                            |&                    ->     |
                            |^                    ->     |
                            ||                    ->     |
                            |&&                   ->     |
                            |||                   ->     |
                            |? :                  ->     |
                            |,                    ->     |
                            +----------------------------+
   FFUUNNCCTTIIOONNSS
        There are a number of built-in functions which may be used in the
        expression.  Functions may be invoked using a syntax similar to C
        functions.

                                  _n_a_m_e (( _a_r_g_u_m_e_n_t_s ))
        You need to leave spaces around the parentheses so that they are
        separate command line arguments.

        atime   This function may be used to determine the last-accessed-time
                of a file.  It takes one argument.

        basename
                This function returns the basename of the string argument
                passed to it.  It takes one argument.

        ctime   This function may be used to determine the last-change-time of
                an inode.  It takes one argument.

        execute This function may be used to execute a command.  The arguments
                are assembled into the command to be executed.  Use the
                special ``{}'' argument to insert the name of the current
                file.  The function returns true of the command's exist status
                is zero.  All following arguments to find are taken to  be
                arguments  to  the command until an argument consisting of `;'
                is encountered.  The command  is  executed in the starting
                directory.

        gid     This function may be used to determine the gid of a file.  It
                takes one argument.

        inode   This function may be used to determine the inode number of a
                file.  It takes one argument.

        mode    This function may be used to determine the access mode
                (permissions) of a file.  It takes one argument.

        mtime   This function may be used to determine the last-modified-time
                of a file.  It takes one argument.

        print   This function may be used to print a value.  It takes one
                argument.  Always returns true.

        size    This function may be used to determine the size in bytes of a
                file.  It takes one argument.

        type    This function may be used to determine the type of a file.  It
                takes one argument.  It returns a string: "block_special",
                "character_special", "directory", "file", "named_pipe",
                "socket" or "symbolic_link".

        uid     This function may be used to determine the uid of a file.  It
                takes one argument.

   TTEESSTTSS
        Most tests exist to provide compatibility with _f_i_n_d(1).

        --AAcccceessss__MMiinnuutteess [ _r_e_l_a_t_i_v_e_-_o_p_e_r_a_t_o_r ] _n_u_m_b_e_r
                True if the current file was accessed exactly _n_u_m_b_e_r minutes
                ago, false otherwise.  If a relative operator is given (<, <=,
                ==, !=, > or >=) a relative comparison will be made, rather
                than the implicit equality test.  This is _n_o_t identical to the
                similar _f_i_n_d(1) test.  This is shorthand for the ``( now -
                atime ( {} )) / 60 _r_e_l_a_t_i_v_e_-_o_p_e_r_a_t_o_r _n_u_m_b_e_r'' expression.

        --AAcccceessss__TTiimmee [ _r_e_l_a_t_i_v_e_-_o_p_e_r_a_t_o_r ] _n_u_m_b_e_r
                True if the current file was accessed exactly _n_u_m_b_e_r days ago,
                false otherwise.  If a relative operator is given (<, <=, ==,
                !=, > or >=) a relative comparison will be made, rather than
                the implicit equality test.  This is _n_o_t identical to the
                similar _f_i_n_d(1) test.  This is shorthand for the ``( now -
                atime ( {} )) / 86400 _r_e_l_a_t_i_v_e_-_o_p_e_r_a_t_o_r _n_u_m_b_e_r'' expression.

        --CChhaannggee__MMiinnuutteess _n_u_m_b_e_r
                True if the current file's inode was changed exactly _n_u_m_b_e_r
                minutes ago, false otherwise.  If a relative operator is given
                (<, <=, ==, !=, > or >=) a relative comparison will be made,
                rather than the implicit equality test.  This is _n_o_t identical
                to the similar _f_i_n_d(1) test.  This is shorthand for the ``(
                now - ctime ( {} )) / 60 _r_e_l_a_t_i_v_e_-_o_p_e_r_a_t_o_r _n_u_m_b_e_r''
                expression.

        --CChhaannggee__TTiimmee _n_u_m_b_e_r
                True if the current file's inode was changed exactly _n_u_m_b_e_r
                days ago, false otherwise.  If a relative operator is given
                (<, <=, ==, !=, > or >=) a relative comparison will be made,
                rather than the implicit equality test.  This is _n_o_t identical
                to the similar _f_i_n_d(1) test.  This is shorthand for the ``(
                now - ctime ( {} )) / 86400 _r_e_l_a_t_i_v_e_-_o_p_e_r_a_t_o_r _n_u_m_b_e_r''
                expression.

        --MMooddiiffyy__MMiinnuutteess _n_u_m_b_e_r
                True if the current file was modified exactly _n_u_m_b_e_r minutes
                ago, false otherwise.  If a relative operator is given (<, <=,
                ==, !=, > or >=) a relative comparison will be made, rather
                than the implicit equality test.  This is _n_o_t identical to the
                similar _f_i_n_d(1) test.  This is shorthand for the ``( now -
                mtime ( {} )) / 60 _r_e_l_a_t_i_v_e_-_o_p_e_r_a_t_o_r _n_u_m_b_e_r'' expression.

        --MMooddiiffyy__TTiimmee _n_u_m_b_e_r
                True if the current file was modified exactly _n_u_m_b_e_r days ago,
                false otherwise.  If a relative operator is given (<, <=, ==,
                !=, > or >=) a relative comparison will be made, rather than
                the implicit equality test.  This is _n_o_t identical to the
                similar _f_i_n_d(1) test.  This is shorthand for the ``( now -
                mtime ( {} )) / 86400 _r_e_l_a_t_i_v_e_-_o_p_e_r_a_t_o_r _n_u_m_b_e_r'' expression.

        --NNeewweerr _f_i_l_e_n_a_m_e
                True if the current file was modified after the given file.
                This is shorthand for the ``mtime ( {} ) > mtime ( _f_i_l_e_n_a_m_e
                )'' expression.

        --NNaammee _p_a_t_t_e_r_n
                Base of file name (the path with the leading directories
                removed) matches shell pattern _p_a_t_t_e_r_n.  This is short-hand
                for the ``_p_a_t_t_e_r_n ~ basename ( {} )'' expression.

        --PPAAtthh _p_a_t_t_e_r_n
                File name matches shell pattern _p_a_t_t_e_r_n.  Note that the file
                name if affected by the --rreessoollvvee option.  This is short-hand
                for the ``_p_a_t_t_e_r_n ~ {}'' expression.

        --TTyyppee _s_t_r_i_n_g
                The file type matches the type given.  This is shorthand for
                the ``type ( {} ) == _s_t_r_i_n_g'' expression.  Type names are
                matched similar to options:

                      Block       The file is a block special file.
                      Character   The file is a character special file.
                      Directory   The file is a directory.
                      File        The file is a normal file.
                      Link        The file is a symbolic link.
                      Pipe        The file is FIFO (a named pipe).
                      Socket      The file is a UNIX domain socket.

   AACCTTIIOONNSS
        --pprriinntt  This will print the full file name on the standard output,
                followed by a newline.  The --RReessoollvvee option will affect what
                is printed.  This is short-hand for the ``print ( {} )''
                expression.

        --eexxeeccuuttee _s_t_r_i_n_g... ;;
                The may be used to execute a command.  This is short-hand for
                the ``execute ( _s_t_r_i_n_g :: ... )'' expression.

EEXXIITT SSTTAATTUUSS
        The _a_e_f_i_n_d command will exit with a status of 1 on any error.  The
        _a_e_f_i_n_d command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aefind version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aefind program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_f_i_n_d _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_f_i_n_d _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aefp(1)                                                                aefp(1)



NNAAMMEE
        aefp - calculate file fingerprint

SSYYNNOOPPSSIISS
        aaeeffpp [ _o_p_t_i_o_n...  ][ _f_i_l_e_n_a_m_e...  ]
        aaeeffpp --HHeellpp
        aaeeffpp --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_f_p program is used to calculate the fingerprints of files.  A
        fingerprint is a hash of the contents of a file.  The default
        fingerprint is cryptographically strong, so the probability of two
        different files having the same fingerprint is less than 1 in 2**200.

        The fingerprint is based on Dan Berstien <djb@silverton.berkeley.edu>
        public domain fingerprint 0.50 beta package 930809, posted to the
        alt.sources newsgroup.  This program produces identical results; the
        expected test results were generated using Dan's package.

        The fingerprint is a base-64-sanely-encoded fingerprint of the input.
        Imagine this fingerprint as something universal and permanent.  A
        fingerprint is 76 characters long, containing the following:

        1.  A Snefru-8 (version 2.5, 8 passes, 512->256) hash.  (Derived from
            the Xerox Secure Hash Function.)

        2.  An MD5 hash, as per RFC 1321.  (Derived from the RSADSI MD5
            Message-Digest Algorithm.)

        3.  A CRC checksum, as in the new cksum utility.

        4.  Length modulo 2^40.

        The output format is not expected to be compatible with anything.
        However, options are available to produce the purported output of
        Merkle's snefru program, the purported output of RSADSI's mddriver -x,
        or the purported output of the POSIX cksum program.

        If no files are named as input, the standard input will be used.  The
        special file name ``-'' is understood to mean the standard input.

OOPPTTIIOONNSS
        The following options are understood:

        --CChheecckkssuumm
                Print the CRC32 checksum and length of the named file(s).

        --IIddeennttiiffiieerr
                Print a condensed form of the fingerprint (obtained by
                performing a CRC32 checksum on the full fingerprint described
                above - a definite overkill).  This is an 8-digit hexadecimal
                number, useful for generating unique short identifiers out of
                long names.  The first character is forced to be a letter (g-
                p), so there is no problem in using the output as a variable
                name.

        --HHeellpp
                Provide some help with using the _a_e_f_p program.

        --MMeessssaaggee__DDiiggeesstt
                Print the RSA Data Security, Inc. MD5 Message-Digest Algorithm
                hash of the named file(s).

        --SSnneeffrruu Print the Snefru hash of the named file(s), derived from the
                Xerox Secure Hash Function.

        --VVEERRSSiioonn
                Print the version of the _a_e_f_p program being executed.

        All other options will produce a diagnostic error.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_f_p are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_f_p command will exit with a status of 1 on any error.  The _a_e_f_p
        command will only exit with a status of 0 if there are no errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aefp version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aefp program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_f_p _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_f_p _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/

        Portions of this program are derived from sources from other people,
        sometimes with liberal copyrights, and sometimes in the public domain.
        These include:

        Dan Bernstien
                See _c_o_m_m_o_n_/_f_p_/_R_E_A_D_M_E for details.

        Gary S Brown.
                See _c_o_m_m_o_n_/_f_p_/_c_r_c_3_2_._c for details.

        RSA Data Security, Inc.
                See _c_o_m_m_o_n_/_f_p_/_m_d_5_._c for details.

        Xerox Corporation
                See _c_o_m_m_o_n_/_f_p_/_s_n_e_f_r_u_._c for details.

        In addition to the above copyright holders, there have been numerous
        authors and contributors, see the named files for details.  Files
        names are relative to the root of the _a_e_g_i_s distribution.



aeget(1)                                                              aeget(1)



NNAAMMEE
        aeget - Aegis CGI file access

SSYYNNOOPPSSIISS
        aaeeggeett

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_e_t command is used with Apache (or CGI conforming any other web
        server) to access the files of an Aegis project.  The files are
        searched for along the appropriate search path, including all ancestor
        baslines, not just the baseline of the branch.

        This is useful when developing web sites using Aegis.

   IInnssttaallll
        In order to use _a_e_g_e_t(1), you need to copy it into your _c_g_i_-_b_i_n
        directory.

        You may prefer to use a symbolic link, as this will be more stable
        across Aegis upgrades.  However, this requires a corresponding _f_o_l_l_o_w_-
        _s_y_m_l_i_n_k_s setting in your web server's configuration file.

   UUssaaggee
        Once _a_e_g_e_t(1) is installed, files may be accessed via
                http://localhost/cgi-bin/aeget/_p_r_o_j_e_c_t_-_n_a_m_e/
        If no project name is given, a list of projects will be generated.
        This will lead you through a series of menus, giving access to manu
        useful pages of information about your projects.

   CCaassccaaddiinngg SSttyyllee SShheeeettss
        The web interface uses Cascading Style Sheets.  You can give the web
        interface a personalised look and feel, by creating stylesheets in the
        web server's Document Root directory.  The interface will use it's
        default styles, then styles from a global style sheet called
        aedefault.css, and then styles from a project stylesheet called
        _p_r_o_j_e_c_t_n_a_m_e.css (replace _p_r_o_j_e_c_t_n_a_m_e with the name of the project).

        There is an example style sheet in /aedefault.css which demonstrates
        the style elements used.  This particular stylesheet is not designed
        to be aesthetically pleasing, but to exercise all of the elements.
        Using this stylesheet unmodified will give psychedelic results.  Use
        it as a template.

HHEEAADDEERRSS aanndd FFOOOOTTEERRSS
        You can set your own project specific page headers and footers by
        using the "html:meta", "html:body-begin" and "html:body-end" project
        specific attributes.
                project_specific =
                [
                  {
                    name = "html:body-begin";
                    value = "<i>This text goes immediately after the
                    &lt;BODY&gt; and before any text generated by
                    <i>aeget</i>(1).</i>";
                  },
                  {
                    name = "html:body-end";
                    value = "<i>This text goes immediately before the
                    &lt;/BODY&gt; and after all text generated by
                    <i>aeget</i>(1).</i>";
                  },
                ];
        These fields may be used to customize your web pages for your project-
        specific or company-specific needs.  Each project is configured
        independently.

CCOOPPYYRRIIGGHHTT
        aeget version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aeget program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_e_t _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_e_t _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis.cgi(1)                                                      aegis.cgi(1)



NNAAMMEE
        aegis.cgi - Aegis web interface script

SSYYNNOOPPSSIISS
        aaeeggiiss..ccggii

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s_._c_g_i command is used to interface between a web server and
        Aegis.

   IInnssttaallllaattiioonn
        If you have a Web server, you may like to install the Aegis web
        interface.  You do this by copying the _a_e_g_i_s_._c_g_i script from
        _/_u_s_r_/_b_i_n_/_a_e_g_i_s_._c_g_i into your web server's _c_g_i_-_b_i_n directory.  There is
        an _a_e_g_i_s_._c_g_i_._i helper script, if you don't know where your web
        server's _c_g_i_-_b_i_n directory is.

        You may prefer to use a symbolic link, as this will be more stable
        across Aegis upgrades.  However, this requires a corresponding _f_o_l_l_o_w_-
        _s_y_m_l_i_n_k_s setting in your web server's configuration file.  (Use the
        _a_e_g_i_s_._c_g_i_._i _-_s option.)

        Within the aegis.cgi script, you may set the _A_E_G_I_S___P_A_T_H environment
        variable, if you want it to be able to see more projects than just the
        global projects.  You do this by creating a _/_u_s_r_/_l_o_c_a_l_/_l_i_b_/_-
        _a_e_g_i_s_._c_g_i_._c_o_n_f file (there isn't one, by default) and setting the
        _A_E_G_I_S___P_A_T_H environment variable in it.  This is a fragment of Bourne
        shell script, not just the name.

   UUssaaggee
        Once installed, it should be possible to see the project list by
        following this URL:
                http://localhost/cgi-bin/aegis.cgi?
        You may need to replace _l_o_c_a_l_h_o_s_t with the machine's exact name.

   CCaassccaaddiinngg SSttyyllee SShheeeettss
        The web interface uses Cascading Style Sheets.  You can give the web
        interface a personalised look and feel, by creating stylesheets in the
        web server's Document Root directory.  The interface will use it's
        default styles, then styles from a global style sheet called
        aedefault.css, and then styles from a project stylesheet called
        _p_r_o_j_e_c_t_n_a_m_e.css (replace _p_r_o_j_e_c_t_n_a_m_e with the name of the project).

        There is an example style sheet in /usr/bin/aedefault.css which
        demonstrates the style elements used.  This particular stylesheet is
        not designed to be aesthetically pleasing, but to exercise all of the
        elements.  Using this stylesheet unmodified will give psychedelic
        results.  Use it as a template.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Integrate_Begin(1)                            aegis -Integrate_Begin(1)



NNAAMMEE
        aegis -Integrate_Begin - begin integrating a change

SSYYNNOOPPSSIISS
        aaeeggiiss --IInntteeggrraattee__BBeeggiinn _c_h_a_n_g_e_-_n_u_m_b_e_r [ _o_p_t_i_o_n...  ]
        aaeeggiiss --IInntteeggrraattee__BBeeggiinn --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --IInntteeggrraattee__BBeeggiinn --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___B_e_g_i_n command is used to begin the integration of
        a change into the baseline of a project.

        The change will advance from the _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n state to the
        _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state.

                                 awaiting
                               integration
                                     |
                            integrate|integrate
                            begin    |begin
                            undo     |
                                  being
                                integrated



        A (logical) copy of the baseline is created in an _i_n_t_e_g_r_a_t_i_o_n
        _d_i_r_e_c_t_o_r_y and the the files of the change are added to the integration
        directory.  The time stamps of files copied from the baseline are
        preserved, time stamps on the files copied from the development
        directory are all set to the time of the beginning of the integration.
        The _'_a_e_g_i_s _-_C_h_a_n_g_e___D_i_r_e_c_t_o_r_y_' 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:

        +o Special files (devices, named pipes, _e_t_c) will not be reproduced in
          the integration directory; you will need to create these as part of
          the build.

        +o If the case of the --mmiinniimmuumm 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.

        +o If the case of the --mmiinniimmuumm 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
          create them as part of the build.

        The _l_i_n_k___i_n_t_e_g_r_a_t_i_o_n___d_i_r_e_c_t_o_r_y field of the project configuration file
        (see _a_e_p_c_o_n_f(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 _a_w_a_i_t_i_n_g
        _i_n_t_e_g_r_a_t_i_o_n state, and the integration directory will be removed.

        The change will be assigned a delta number.  Delta numbers are
        incremented once for each _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___B_e_g_i_n command for the
        project.  If an integration is subsequently aborted with either the
        _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___B_e_g_i_n___U_n_d_o or _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___F_A_I_L 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
        implementations don't allow renaming directories up and down the
        trees.  The integration directory will be in the project directory,
        and named for the delta number.

   NNoottiiffiiccaattiioonn
        On successful completion of this command, the _i_n_t_e_g_r_a_t_i_o_n___b_e_g_i_n___-
        _c_o_m_m_a_n_d field of the project _c_o_n_f_i_g file is run, if set.  See
        _a_e_p_c_o_n_f(5) for more information.

MMiinniimmuumm IInntteeggrraattiioonnss
        Aegis provides a mmiinniimmuumm integration capability which may be used for
        various reasons.  The term mmiinniimmuumm may be a bit counter intuitive.
        One might think it means to the mmiinniimmuumm amount of work, however it
        actually means use a mmiinniimmuumm of files from the baseline in populating
        the _d_e_l_t_a directory.  This normally leads to actually building
        everything 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 _a_e_r_m, _a_e_m_v or
        _a_e_m_t, results in an implicit mmiinniimmuumm 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
        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 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
        integration to ensure everything is rebuilt using the new resources.

        The cost of a mmiinniimmuumm 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.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --MMAAXXiimmuumm
                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.

        --MMIINNIImmuumm
                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.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aeib 'aegis -ib \!* -v'
        sh$     aeib(){aegis -ib "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n 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).

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_b(1)  build a change

        _a_e_c_d(1) change directory

        _a_e_i_b_u(1)
                reverse the aeib command

        _a_e_i_f_a_i_l(1)
                fail integration of a change

        _a_e_i_n_t_e_g_r_a_t_q(1)
                Automate the integration queue.

        _a_e_i_p_a_s_s(1)
                pass integration of a change

        _a_e_n_i(1) add new integrators to a project

        _a_e_r_p_a_s_s(1)
                pass review of a change

        _a_e_t(1)  run tests

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Integrate_Begin_Undo(1)                  aegis -Integrate_Begin_Undo(1)



NNAAMMEE
        aegis -Integrate_Begin_Undo - reverse the aeib command

SSYYNNOOPPSSIISS
        aaeeggiiss --IInntteeggrraattee__BBeeggiinn__UUnnddoo [ _o_p_t_i_o_n...  ]
        aaeeggiiss --IInntteeggrraattee__BBeeggiinn__UUnnddoo --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --IInntteeggrraattee__BBeeggiinn__UUnnddoo --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___B_e_g_i_n___U_n_d_o command is used to reverse the actions
        of the _'_a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___B_e_g_i_n_' command.

        Successful execution of this command will move the change from the
        _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state to the _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n state.  The
        integration directory will be deleted.  The change will cease to be
        assigned to the current user.

                                 awaiting
                               integration
                                     |
                            integrate|integrate
                            begin    |begin
                            undo     |
                                  being
                                integrated



        In the unlikely event that an integrator has wandered away and left an
        integration incomplete (say, went on holidays and won't be back for
        two weeks), project administrators are also able to use this command.

   NNoottiiffiiccaattiioonn
        On successful completion of this command, the _i_n_t_e_g_r_a_t_i_o_n___b_e_g_i_n___u_n_d_o___-
        _c_o_m_m_a_n_d field of the project _c_o_n_f_i_g file is run, if set.  See
        _a_e_p_c_o_n_f(5) for more information.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --KKeeeepp
                This option may be used to retain files and/or directories
                usually deleted by the command.  Defaults to the user's
                _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for
                more information.

        --NNoo__KKeeeepp
                This option may be used to ensure that the files and/or
                directories are deleted by the command.  Defaults to the
                user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5)
                for more information.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aeibu 'aegis -ibu \!* -v'
        sh$     aeibu(){aegis -ibu "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d state.
        It is an error if the change is not assigned to the current user and
        the current user is not a project administrator.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_i_b(1) begin integration of a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Integrate_Fail(1)                              aegis -Integrate_Fail(1)

NNAAMMEE
        aegis -Integrate_Fail - fail a change integration

SSYYNNOOPPSSIISS
        aaeeggiiss --IInntteeggrraattee__FFaaiill --FFiillee _r_e_a_s_o_n_-_f_i_l_e [ _o_p_t_i_o_n...  ]
        aaeeggiiss --IInntteeggrraattee__FFaaiill --RREEAASSoonn _'_r_e_a_s_o_n_-_t_e_x_t_' [ _o_p_t_i_o_n...  ]
        aaeeggiiss --IInntteeggrraattee__FFaaiill --EEddiitt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --IInntteeggrraattee__FFaaiill --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --IInntteeggrraattee__FFaaiill --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___F_a_i_l command is used to inform aegis that a
        change has failed integration.

        The change will be returned from the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state to the
        _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.  The change will cease to be assigned to the
        current user, and will be reassigned to the originating developer.
        The integration directory will be deleted.

                             being
                           developed
                                |
                                |develop
                                |end
                                |
                            awaiting
                             review
                                |
                                |review
                                |begin
                                |
                             beinigntegrate
                            reviewed fail
                                |
                                |review
                                |pass
                                |
                            awaiting
                           integration
                                |
                                |integrate
                                |begin
                                |
                             being
                           integrated



        The reviewer and the developer will be notified by mail.  See the
        integrate_fail_notify_command in _a_e_p_c_o_n_f(5) for more information.

        The _r_e_a_s_o_n_-_f_i_l_e will contain a description of why the change was
        failed.  The file is in plain text.  It is recommended that you only
        use newline to terminate paragraphs, (rather than to terminate lines)
        as with will result in better formatting in the various listings.

   NNoottiiffiiccaattiioonn
        On successful completion of this command, the _i_n_t_e_g_r_a_t_e___f_a_i_l___n_o_t_i_f_y___-
        _c_o_m_m_a_n_d field of the project attributes is run, if set.  See
        _a_e_p_a_t_t_r(5) and _a_e_p_a(1) for more information.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --EEddiitt
                Edit the attributes with a text editor, this is usually more
                convenient than supplying a text file.  The _V_I_S_U_A_L and then
                _E_D_I_T_O_R environment variables are consulted for the name of the
                editor to use; defaults to _v_i(1) if neither is set.  See the
                _v_i_s_u_a_l___c_o_m_m_a_n_d and _e_d_i_t_o_r___c_o_m_m_a_n_d fields in _a_e_u_c_o_n_f(1) for how
                to override this specifically for Aegis.

                Warning: Aegis tries to be well behaved when faced with
                errors, so the temporary file is left in your home directory
                where you can edit it further and re-use it with a --ffiillee
                option.

                The --eeddiitt option may not be used in the background, or when
                the standard input is not a terminal.

        --EEddiitt__BBaacckkGGrroouunndd
                Edit the attributes with a dumb text editor, this is most
                often desired when edit commands are being piped into the
                editor via the standard input.  Only the EEDDIITTOORR environment
                variable is consulted for the name of the editor to use; it is
                a fatal error if it is not set.  See the _e_d_i_t_o_r___c_o_m_m_a_n_d field
                in _a_e_u_c_o_n_f(1) for how to override this specifically for Aegis.

        --FFiillee _f_i_l_e_n_a_m_e
                Take the attributes from the specified file.  The filename `-'
                is understood to mean the standard input.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --KKeeeepp
                This option may be used to retain files and/or directories
                usually deleted by the command.  Defaults to the user's
                _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for
                more information.

        --NNoo__KKeeeepp
                This option may be used to ensure that the files and/or
                directories are deleted by the command.  Defaults to the
                user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5)
                for more information.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --RREEAAssoonn _t_e_x_t
                This option may be used to provide the failure reason on the
                command line, rather than in a file.  You will need to use
                quotes to insulate the spaces from the shell.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aeifail 'aegis -ifail \!* -v'
        sh$     aeifail(){aegis -ifail "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state.
        It is an error if the change is not assigned to the current user.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_i_b(1) begin integration of a change

        _a_e_i_p_a_s_s(1)
                pass integration of a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aeimport(1)                                                        aeimport(1)



NNAAMMEE
        aeimport - import foreign repository into Aegis

SSYYNNOOPPSSIISS
        aaeeiimmppoorrtt [ _o_p_t_i_o_n...  ] _d_i_r_n_a_m_e
        aaeeiimmppoorrtt --HHeellpp
        aaeeiimmppoorrtt --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_i_m_p_o_r_t 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 --vveerrssiioonn option,
        below) this command will default to creating branches to support
        version 1.0.  If you discovered this too late, all is not lost: you
        can use the _a_e_n_b_r_u(1) command to get rid of the branches you didn't
        want.

   DDiirreeccttoorryy
        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 --DDIIRReeccttoorryy option is not given, the project directory will be
        created in the directory specified by the default_project_directory
        field of _a_e_u_c_o_n_f(5), or if not set in current user's home directory;
        in either case with the same name as the project.

   SSttaaffff
        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 _a_e_n_a(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
        _a_e_r_d(1), _a_e_r_r_v(1) and _a_e_r_i(1) as appropriate to winnow this list.

        If only one name is found, the project will be set to
        ``developers_may_review = true;'' otherwise it will be false (see
        _a_e_p_a_t_t_r(5) for more information).  Use _a_e_p_a(1) to change this if you
        want a different setting.

        The project's umask is derived from the current user's umask, but
        modified 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 _n_o_t owned by an account with any other role, as this
        prevents a whole class of ``oops, I thought I was somewhere else''
        errors.

        The project's history commands (see _a_e_p_c_o_n_f(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.

   PPooiinntteerr
        The project pointer will be added to the first element of the search
        path, or _/_v_a_r_/_l_i_b_/_a_e_g_i_s if no path is set.  If this is inappropriate,
        use the --LLIIBBrraarryy option to explicitly set the desired location.  See
        the --LLIIBBrraarryy option for more information.

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

   VVeerrssiioonn
        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,
           ``aeimport -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
           example -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 --vveerrssiioonn with a single dash as
        the argument, as in ``-version -''

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

   PPrroojjeecctt DDiirreeccttoorryy LLooccaattiioonn
        PPlleeaassee NNoottee:: Aegis also consults the underlying file system, to
        determine its notion of maximum file size.  Where the file system's
        maximum file size is less than _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h, 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 _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h 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
        filesystems 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 _c_o_n_f_i_g 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 environments.

        If your development directories are routinely on a Linux UMSDOS
        filesystem, you would probably be better off setting
        _d_o_s___f_i_l_e_n_a_m_e___r_e_q_u_i_r_e_d _= _t_r_u_e, and also changing the
        _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___t_e_m_p_l_a_t_e field.  Heterogeneous development with
        various Windows environments may also require this.

TTHHEE PPRROOCCEESSSS
        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 (_d_i_r_p_a_t_h) given on the command line, and all
          directories below it, are scanned for appropriate files (for
          example, RCS and CVS use files with a ``,v'' suffix).  These files
          are read to obtain 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
          aeimport at your whole CVSROOT may produce an unexpectedly large
          result.

        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
          repository.
          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 _a_e_r_m_p_r(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 _n_o_t
          considered a group.  This does not usually present a problem as
          developers 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 _a_e_i_p_a_s_s(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
          comments result in longer-than-expected change descriptions.  This
          can be corrected with _a_e_c_a(1) or _t_k_a_e_c_a(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 attached
          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.  However,
          because each file will be at a different version, and each will have
          had its latest version included in various random change sets.
          Tags are used for other things too.  The method given here is simply
          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 _a_e_l _p_r_o_j_e_c_t___h_i_s_t_o_r_y and _a_e_l
        _c_h_a_n_g_e___d_e_t_a_i_l_s commands.  (See _a_e_l(1) for more information.)

   LLiimmiittaattiioonnss
        The aeimport program is far from perfect.  There are a number of known
        limitations.

        +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
          coupled files, I'll implement it.  Ideas and/or code contributions
          welcome.)

        +o Only RCS and SCCS formats are understood at present.  It should be
          straight forward to add support for additional formats in the
          future.  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.

OOPPTTIIOONNSS
        The following options are understood:

        --DDIIRReeccttoorryy _p_a_t_h
                This option may be used to specify which directory is to be
                used.  It is an error if the current user does not have
                appropriate 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.

        --FFOORRmmaatt _n_a_m_e
                This option may be use to specify which history format is
                being imported.  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 specified.
                        NNoottee:: you _m_u_s_t have RCS installed before you run
                        _a_e_i_m_p_o_r_t 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 ftp.gnu.org, or a local
                        mirror.

                SCCS    Source Code Control System is one of the earliest Unix
                        version systems.  (I'm told this is the format
                        underlying BitKeeper.)
                        NNoottee:: you _m_u_s_t have SCCS installed before you run
                        _a_e_i_m_p_o_r_t 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
                        ftp://alpha.gnu.org/gnu/CSSC/

        --LLIIBBrraarryy _a_b_s_p_a_t_h
                This option may be used to specify a directory to be searched
                for global state files and user state files.  (See _a_e_g_s_t_a_t_e(5)
                and _a_e_u_s_t_a_t_e(5) for more information.)  Several library
                options 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 _A_E_G_I_S___P_A_T_H environment
                variable (colon separated), and finally, _/_u_s_r_/_l_o_c_a_l_/_l_i_b_/_a_e_g_i_s
                is always searched.  All paths specified, either on the
                command line or in the _A_E_G_I_S___P_A_T_H environment variable, must
                be absolute.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_i_m_p_o_r_t program.

        --VVEERRSSiioonn _n_u_m_b_e_r
                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.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_i_m_p_o_r_t are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_i_m_p_o_r_t command will exit with a status of 1 on any error.  The
        _a_e_i_m_p_o_r_t command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aeimport version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aeimport program comes with ABSOLUTELY NO WARRANTY; for details
        use the '_a_e_i_m_p_o_r_t _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software
        and you are welcome to redistribute it under certain conditions; for
        details use the '_a_e_i_m_p_o_r_t _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aeintegratq(1)                                                  aeintegratq(1)



NNAAMMEE
        aeintegratq - integrate changes into projects

SSYYNNOOPPSSIISS
        aaeeiinntteeggrraattqq [ _o_p_t_i_o_n...  ] _p_r_o_j_e_c_t_-_n_a_m_e...

DDEESSCCRRIIPPTTIIOONN
        The _a_e_i_n_t_e_g_r_a_t_q command is used to manage the integrations of one or
        more changes in one or more projects.  Normally run via _c_r_o_n(1) or
        _a_t(1) with the name of a single project, aeintegratq will manage all
        operations for integration even when --BBuuiilldd and --TTeesstt are required on
        multiple architectures. If a change review is revoked after the queue
        is running aeintegratq will notice the bad state and silently move on.
        If one or more changes are ended or passed after the queue is running,
        and -loop has been given, aeintegratq will notice the new change[s]
        and integrate them. Additional options allow the integrator full
        control over most aspects of queue management such as the order of
        integration of multiple changes.

OOPPTTIIOONNSS
        The following options are understood:

   OOppttiioonn SSuummmmaarryy
        --hh      Help, show usage information.

        --HH      Help, show usage plus all helpful comment information.

        --aa      run on Any machine (normally only IntegrationHost)

        --ss      run remote operations via ssh (default rsh)

        --nn      No action, just tell what would be done.

        --kk      Keep the scripts and report files.

        --KK      Keep the temp file even if integration passes.

        --lloooopp   Loop to process more changes if they become available before
                aeintegratq completes.  It will stop when there is nothing
                more to be done.

        --MM _l_i_s_t Minimum, run given changes _-_m_i_n_i_m_u_m

        --PP _l_i_s_t Precious, do not IIFFaaiill changes in _l_i_s_t, just stop.

        --RR _l_i_s_t Ready , specify order and subset, _e_._g_. -R 29,45

        --SS _s_t_a_g_e
                Pick up at given stage (diff|build|test|integrate)

        --cc _c_h_a_n_g_e_-_n_u_m_b_e_r
                specify Change to integrate at Stage

        --pp _p_r_o_j_e_c_t_-_n_a_m_e
                specify single Project name

        NOTE: if custom options such as -P -R -S -c -p are given only a single
        project may be integrated since the options would be meaningless to
        the next project given.

        Some options are present only for testing and investigation.  Note
        that options are rarely required for normal operations.

   CCoonnttrrooll OOppttiioonnss
        The following options are available for special needs.  They control
        the order and disposition of each change aawwaaiittiinngg__iinntteeggrraattiioonn in a
        given project.

        --RR[eady] _n_u_m_b_e_r_1_,_n_u_m_b_e_r_2_._._.
                This option is used to specify order or subset to integrate.
                Only those changes listed will be attempted, and in exactly
                the order given. This applies to queue looping if --lloooopp is
                given. In particular note unless the list includes future
                changes, future loops will not integrate them.

                Useful if a particular change must go in before another for
                some reason.  Or if only integrating one or two changes when
                several are aawwaaiittiinngg__iinntteeggrraattiioonn in the given project.  A
                single change may also be specified with the --cc[[hhaannggee]] _n_u_m_b_e_r
                option, which is common for other aegis commands.  However the
                --RR option allows a list and if given will override any --cc
                given.

        --PP[recious] _n_u_m_b_e_r_1_,_n_u_m_b_e_r_2_._._.

        --PP[recious] aallll
                This option is used to specify that a particular change or
                subset of changes should be considered pprreecciioouuss.  It neither
                implies order nor limits the queue run to that subset; it only
                means that the changes should be considered pprreecciioouuss.  Note
                that at least one number (or the keyword _a_l_l) must be given.

                The concept of pprreecciioouuss means that if the given change were to
                fail anywhere in the integration process, then the process
                simply stops and leaves the problem change in the delta
                directory.  The --IIFFaaiill would not actually be executed.  This
                is sometimes useful to diagnose a problem which only occurs
                during integrations.  It is also useful if the failure is due
                to a transient problem such as unreliable machines on the
                network.  In such a case the integration can be resumed after
                fixing the problem.  See the _s_t_a_g_e options below.

                If, on the other hand, a pprreecciioouuss change makes it through the
                integration process successfully, the option has no effect.

        --MM[inimum] _n_u_m_b_e_r_1_,_n_u_m_b_e_r_2_._._. or _a_l_l
                Integrate the given change[s] with the --mmiinniimmuumm option.  Such
                changes will be put on the end of the queue so that the last
                integrations of a run will be a minimum.  This feature allows
                practical use of minimum integrations without requiring
                --mmiinniimmuumm on each and every integration.  See the section below
                on _M_i_n_i_m_u_m _i_n_t_e_g_r_a_t_i_o_n_s for more information.  If --lloooopp is
                given any change[s] specified as minimum will run at the end
                of the loop in which they are ready, they will not be pushed
                to the final loop.

   SSttaaggee OOppttiioonnss
        The following options allow [re]starting an integration which has
        already progressed through some stages.  This is useful to deal with
        failed (_p_r_e_c_i_o_u_s) integrations, or to finish automatically an
        integration begun by hand.

        --SS[tage] ddiiffff

        --SS[tage] bbuuiilldd

        --SS[tage] tteesstt

        --SS[tage] iinntteeggrraattee
                Pick up the integration at the given ssttaaggee.  Requires
                --cc[hange] _n_u_m_b_e_r option to specify the change number.

AAddvvaanncceedd CCoonnttrroollss
        The integrator may provide for special situations such as operations
        required after --BBuuiilldd and before --TTeesstt, or at the end of a queue run.
        Such capabilities are provided by hhooookkss and ssttrraatteeggiieess described
        below.

   HHooookkss
        There are a set of _h_o_o_k_s available which are run, if present, before
        and after each stage of the integration.  They can be used to help
        ensure that the integrator actually gets some sleep while managing
        large projects.

        These hooks are searched for in the directory $$HHOOMMEE//iinntteeggrraattiioonn__hhooookkss.
        None need exist; aeintegratq will only pay attention to any that do
        exist.  Hooks may be any form of executable (script, etc) and are
        called with 2 arguments: pprroojjeecctt--nnaammee cchhaannggee--nnuummbbeerr.  They run as the
        integrator on the machine from which aeintegratq was started.  They
        are named using the project name along with a suffix according to what
        place in the integration process you want them to run.

        Note that if a hook for project ffoooo exists it is also used for any
        branches under that project.  For example, if you have provided
        ffoooo..pprree__iipp, it will be run for foo.1 and foo.1.0 as well.  If for some
        reason you want different (or no) action for project ffoooo..11..00, then you
        would provide ffoooo..11..00..pprree__iipp which does what you wish, including
        nothing, effectively overriding ffoooo..pprree__iipp.

        Here is how to map particular places in the integration process to
        hook suffixes.

                 +--------------------------------------------------+
                 |run at time                          extension    |
                 +--------------------------------------------------+
                 |before attempting -Integrate_Begin   .pre_ib      |
                 |after -Integrate_Begin completes     .ib          |
                 |before attempting -Diff              .pre_d       |
                 |after -Diff completes                .d           |
                 |before attempting -Build             .pre_b       |
                 |after -Build completes               .b           |
                 |before attempting -Build on <arch>   .pre_<arch>b |
                 |after -Build on <arch> completes     .<arch>b     |
                 |before attempting -Test              .pre_t       |
                 |after -Test completes                .t           |
                 |before attempting -IPass             .pre_ip      |
                 |after -IPass completes               .ip          |
                 |before attempting -IFail             .pre_if      |
                 |after -IFail completes               .if          |
                 +--------------------------------------------------+
        The hook program should exit with 0 if successful or 1 if not.  A non-
        zero exit causes the change being integrated to fail immediately
        unless it was marked precious.

        Note that in most cases anything done via an ..iipp hook should probably
        be done instead by the _i_p_a_s_s___n_o_t_i_f_y command in the project attributes
        file (see _a_e_p_a_t_t_r(5) for more information), or the _b_u_i_l_d___t_i_m_e___a_d_j_u_s_t___-
        _n_o_t_i_f_y___c_o_m_m_a_n_d in the project configuration file (see _a_e_p_c_o_n_f(5) for
        more information), but the hook can provide a temporary way to keep
        going until the permanent solution can be implemented.

        In addition two special hooks, aaeeiinntteeggrraattqq..eenndd and aaeeiinntteeggrraattqq..ffaaiill,
        are recognized.  They are called when aaeeiinntteeggrraattqq finishes a queue
        run.  They are called with 2 arguments like any other hook (pprroojjeecctt--
        nnaammee cchhaannggee--nnuummbbeerr) although both the project-name and change-number
        given are of the last change integrated and may be less than useful.

        The ..eenndd hook is called if/when the queue run is finished and was
        successful.  Note that this does not mean that no changes failed, only
        that no queue errors occurred.  This hook might be used to invoke
        another queue run on a different project/branch, or possibly even on
        the same project, if other changes may have been ended and/or reviewed
        while the first run was in progress.  These conditions arise quite
        often with flex time engineers.  Another use of the ..eenndd hook is to
        automatically build a new package using the newly integrated project
        as source.

        If queue errors were encountered, or a change failed that was marked
        _p_r_e_c_i_o_u_s, then the ..ffaaiill hook is called.  An obvious use of that hook
        would be an e-mailed page to the integrator.

   SSttrraatteeggyy oorr OOooppss--rreettrryy
        Sometimes a persistent build problem will plague integrations.  This
        can be very annoying if it ruins an overnight run, especially if the
        cure is simple when it happens.  Examples of this can be timeouts due
        to a busy data server or other transient errors.  Note that this
        applies only to --BBuuiilldd related problems.

        To deal with such problems the integrator may provide a _s_t_r_a_t_e_g_y
        script specific to a project.  An executable program should be found
        in $$HHOOMMEE//ssttrraatteeggyy..<<pprroojjeecctt__nnaammee>>..  TThhee pprrooggrraamm wwiillll bbee rruunn aass tthhee
        iinntteeggrraattoorr wwiitthh tthhee _d_e_l_t_a ddiirreeccttoorryy aass ccuurrrreenntt ddiirreeccttoorryy..  TThhee pprrooggrraamm
        mmaayy ddoo aannyy ccoommmmaannddss nneecceessssaarryy ttoo cclleeaann uupp aanndd//oorr ddiiaaggnnoossee tthhee eerrrroorr..
        IIff tthhee ssccrriipptt ffiinnddss tthhee pprroobblleemm ttoo bbee ttrraannssiieenntt aanndd ffiixx--aabbllee,, iitt eexxiittss
        ssuucccceessssffuullllyy ((wwiitthh 00 ssttaattuuss)) aanndd aaeeiinntteeggrraattqq wwiillll rree--llaauunncchh tthhee --BBuuiilldd
        aanndd lloogg tthhee rree--ttrryy..  OOtthheerrwwiissee tthhee ssccrriipptt sshhoouulldd eexxiitt wwiitthh aa 11 aanndd tthhee
        cchhaannggee wwiillll ffaaiill..

MMuullttii--AArrcchhiitteeccttuurree iinntteeggrraattiioonnss
        For projects which build and test on multiple architectures,
        aeintegratq requires _a_r_c_h___h_o_s_t_s be installed and have available at
        least one machine of each architecture required.  This is also true if
        the host from which aeintegratq is run is of a different architecture
        from the target architecture of the project being integrated.

        If you wish to take advantage of multiple architecture automatic
        integrations, you can install _a_r_c_h___h_o_s_t_s or provide a more simple
        script which will return a machine name according to architecture and
        job type.

MMiinniimmuumm iinntteeggrraattiioonnss
         provides a mmiinniimmuumm integration capability which may be used for
        various reasons.  The term mmiinniimmuumm may be a bit counter intuitive.
        One might think it means to do the mmiinniimmuumm amount of work, however it
        actually means use a mmiinniimmuumm of files from the baseline in populating
        the _d_e_l_t_a directory.  Since no constructed files are put in the _d_e_l_t_a
        directory, this normally leads to actually building everything 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 _a_e_r_m or _a_e_m_v,
        results in an implicit mmiinniimmuumm 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
        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 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
        integration to ensure everything is rebuilt using the new resources.
        This can be done with minimum overhead using the --MM option as
        described above.

        The cost of a mmiinniimmuumm 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.

MMaannuuaall TTeessttss
         allows tests to be defined as _m_a_n_u_a_l which may be necessary if the
        test requires human interaction or some transient resource. Such tests
        can be problematic for automatic integrations and generally must have
        some means to pass without running during integrations. For this, and
        other, reasons most sites seek to avoid _m_a_n_u_a_l tests. There are a
        number of ways to code a test such that it will pass automatically
        during integrations. Just one example for shell script tests might be:


        CSTATE=`aesub -p $AEGIS_PROJECT -c $AEGIS_CHANGE '${state}'`
        if [ "$CSTATE" = "being_integrated" ]
        then
            echo "`basename $0` passes during integration"
            exit 0
        fi


OOppttiioonnaall SSuuppppoorrtt PPrrooggrraammss
        There are some programs which aeintegratq will use if they are
        installed.

        +o _a_r_c_h___h_o_s_t_s was mentioned previously.  It is optional only if your
        projects and your  file server are of a single architecture.

        +o _a_e_l_o_g_r_e_s may enhance the information provided in _-_I_F_a_i_l entries.
        Normally all you get is the last 10 lines of the log file, which is
        not bad if tests fail, but can be terrible for failed builds.  If you
        provide a program named _a_e_l_o_g_r_e_s which knows how to extract a better
        succinct report of problems, the output of that program will be used
        instead of the simple tail.  It is called with a _-_i option.

        +o ssoouunndd__aallll__mmaacchhiinneess, if available, will be called when integrations
        either pass or fail.  It can be helpful to announce the fact that an
        integration has finished.  If it passed, developers will probably want
        to do an aaeedd to bring their changes up to date.  The audio
        announcement provides another timely hint.

        The sound files are searched for in the /var/lib/aegis/sounds
        directory.  They will have endings of ___p_a_s_s and ___f_a_i_l according to the
        results of a given attempt.  Two sound files are required:
        _i_n_t_e_g_r_a_t_i_o_n___p_a_s_s and _i_n_t_e_g_r_a_t_i_o_n___f_a_i_l.  Others will be used if
        provided to customize the sounds so that each developer may have one
        or more personal sounds.  If a file named _<_d_e_v_e_l_o_p_e_r_>___p_a_s_s is located,
        it will be used.  If a set of files exist named _<_d_e_v_e_l_o_p_e_r___p_a_s_s_._[_0_-_9_]
        they will be used in random sequence.  The same search rule applies to
        ___f_a_i_l sets.  The _s_o_u_n_d___a_l_l___m_a_c_h_i_n_e_s program may use a host list and
        play the sound file on each machine or, assuming that other audio
        capabilities exist, might do any form of announcement desired.

EEXXIITT SSTTAATTUUSS
        The _a_e_i_n_t_e_g_r_a_t_q command will exit with a status of 1 on any error.
        The _a_e_i_n_t_e_g_r_a_t_q command will only exit with a status of 0 if there are
        no errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

FFIILLEESS
        Control files are searched for in the _$_H_O_M_E directory.  They are named
        strategy.<project>, They need not exist if no special action is
        necessary.

        The hook scripts are searched for in the _$_H_O_M_E_/_i_n_t_e_g_r_a_t_i_o_n___h_o_o_k_s
        directory.  They are named <project>.<stage>.  Also _a_e_i_n_t_e_g_r_a_t_q_._e_n_d
        and _a_e_i_n_t_e_g_r_a_t_q_._f_a_i_l.  These hooks also need not exist if no special
        action is desired.

CCOOPPYYRRIIGGHHTT
        aeintegratq version 4.20
        Copyright (C) 1998-2005 Endocardial Solutions, Inc.
        All rights reserved.

        The aeintegratq program comes with ABSOLUTELY NO WARRANTY; This is
        free software and you are welcome to redistribute it under certain
        conditions;

AAUUTTHHOORR
        '



        aegis -Integrate_Pass(1)                              aegis -Integrate_Pass(1)



        NNAAMMEE
                aegis -Integrate_Pass - pass a change integration
        SSYYNNOOPPSSIISS
        _o_p_t_i_o_n..aa.eeggiiss --IInntteeggrraattee__PPaassss [
        ]
        aaeeggiiss
        --IInntteeggrraattee__PPaassss
        --LLiisstt
        [
        _o_p_t_i_o_n...
        ]
        aaeeggiiss
        --IInntteeggrraattee__PPaassss
        --HHeellpp

        DDEESSCCRRIIPPTTIIOONN
        _a_e_g_i_s   The
        _-_I_n_t_e_g_r_a_t_e___P_a_s_s
        command is used to
        notify aegis that a change has passed integration.
        The change is advanced
        from the
        _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d
        state to the
        _c_o_m_p_l_e_t_e_d
        state.



          being

        integrated

             |
             |
             |
             |

              integrate

              pass




        completed




                This command updates the file histories, so that future
        _a_e_c_p(1)
        commands may extract previous file versions from history,
        and so that future
        _a_e_d(1)
        commands may merge out-of-date files.
        The history is updated using the
        _h_i_s_t_o_r_y___c_r_e_a_t_e___c_o_m_m_a_n_d
        and
        _h_i_s_t_o_r_y___p_u_t___c_o_m_m_a_n_d
        fields of the project
        configuration
        file (see
        _a_e_p_c_o_n_f(5)
        for more information).  The integrate pass will abort with an error if

        one of these history commands should fail, _e_._g_. by running out of disk
        space.  If this should happen, the change will remain in the
        _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d
        state, and the integration directory is unaltered.

                Once the history has been updated, the integration directory is renamed
        as the baseline directory, and the old baseline directory is deleted.

                Once integrate pass is complete
        the change is no longer assigned to the current user.

           HHiissttoorryy TToooollss MMooddiiffyy FFiilleess
        the fileMawnhyenhiisttoirsyctoomomlistt(e_ed_.._g_.TRhCiSs aunsduaSlClCyS)recqaunirmeosditfhye tuhsee coofntsepnetcsifoifc
        ``keyword'' strings, and there are usually options to turn this behavior
        off, but users familiar with version control tools (as opposed to
        configuration management systems) will often use these features.
        The problem is that if the commit changes the file, the source file in
        the repository now no longer matches the object file in the repository.
        _I_._e_.
        the history tool has compromised the referential integrity of the
        repository.  By default, a fatal error is emitted if the file is changed
        by the check-in, however this can be modified to a be warning or even
        ignored completely                                                                                                                 see the
        _h_i_s_t_o_r_y___p_u_t___t_r_a_s_h_e_s___f_i_l_e
        field of
        _a_e_p_c_o_n_f(5)
        for more information.

           FFiillee MMooddiiffiiccaattiioonn TTiimmeess
        integratTihoen m(osdeiefication times of all files modified since the beginning of
        _a_e_i_b(1)
        for more information) are updated to be since the beginning of integrate
        pass.  The order of modification times will be preserved, however the
        time range will be compressed to the greatest extent possible.  This
        ensures that subsequent development builds will notice that baseline
        files have changed.

                Note that if there are many new files with all different timestamps in
        the integration directory, and if the number of files with different
        timestamps exceeds the number of seconds since the start of the
        integrate-pass command, Aegis may have to set file modification times
        into the future.

                The _b_u_i_l_d___t_i_m_e___a_d_j_u_s_t field of the project _c_o_n_f_i_g file
        controls Aegis' behavior in this case.
        (See _a_e_p_c_o_n_f(5) for more information.)
        There are three settings:

                adjust_and_sleep
        This setting, which is the default, causes Aegis to sleep until the file
        modification times would no longer be in the future.
        This avoids both development build problems and integration build problems,
        both of which which can arise as a result "interesting" file modification times.

                adjust_only
        Aegis will issue a warning that the file modification times extend
        into the future, but will not sleep.  This may cause integration
        build problems, particularly if you are using _a_e_i_n_t_e_g_r_a_t_q(1).
        Development builds may perform redundant builds, however _a_e_t _-_r_e_g
        should not produce false negatives.

                dont_adjust
        This is highly inadvisable.
        It is provided solely for some very rare circumstances.
        This setting causes Aegis not to adjust the file modification times at all.
        This can have very unhappy side-effects, especially of the integration
        build was _b_e_f_o_r_e one or more development builds                                                                              the commonest
        symptom being that development builds do not always cause a relink of
        the necessary executables, and _a_e_t _-_r_e_g may give false negatives.
        It is ssttrroonnggllyy recommended that you do not use this setting.

                If you use _c_o_o_k(1), see the _t_i_m_e_-_a_d_j_u_s_t_-_b_a_c_k flag for how
        to compress the time range even further.  This usually makes the sleep (or the
        warning period) significantly shorter.

           NNoottiiffiiccaattiioonn
        has ocurOrnedsuacncdesasfftuelr ctohmepldeattiaobnasoefhtahsisbeceonmmuapndda,teadf,tetrhethe directory rename
        _i_n_t_e_g_r_a_t_i_o_n___p_a_s_s___n_o_t_i_f_y___c_o_m_m_a_n_d field of the project
        attributes is run, if set.  See _a_e_p_a_t_t_r(5) and _a_e_p_a(1)
        for more information.
        This command is run as the project owner.

                Some compilers bury absolute path names into object files and executables.
        The renaming of the integration directory to become the new baseline
        breaks these paths.  The above command is passed an environment variable
        called AEGIS_INTEGRATION_DIRECTORY so that the appropriate symlink
        may be placed, if desired.

                Other commands run by this command include the
        _h_i_s_t_o_r_y___c_r_e_a_t_e___c_o_m_m_a_n_d, _h_i_s_t_o_r_y___p_u_t___c_o_m_m_a_n_d and
        _h_i_s_t_o_r_y___q_u_e_r_y___c_o_m_m_a_n_d fields of the project _c_o_n_f_i_g file.
        See _a_e_p_c_o_n_f(5) for more information.

        TTHHEE BBAASSEELLIINNEE LLOOCCKK
        consisteTnhtesbtaasteelifnoer ltohcekdiusrautsieodn toof ecnosmumraendtshawthitchhenbeaesdeltionereraedmatihnes in a
        contents of files in the baseline.

                The commands which require the baseline to be consistent
        (these include the
        _a_e_b(1),
        _a_e_c_p(1)
        and
        _a_e_d(1)
        commands)
        take a baseline
        _r_e_a_d
        lock.
        This is a non-exclusive lock,
        so the concurrent development of changes is not hindered.

                The command which modifies the baseline,
        _a_e_i_p_a_s_s(1),
        takes a baseline
        _w_r_i_t_e
        lock.
        This is an exclusive lock,
        forcing
        _a_e_i_p_a_s_s(1)
        to block until there are no active baseline read locks.

                It is possible that
        one of the above development commands
        will block until an in-progress
        _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___P_A_S_S
        completes.
        This is usually of short duration while the project history is updated.
        The delay is essential so that these commands receive a consistent view
        of the baseline.
        No other integration command will cause the above development commands
        to block.

                When aegis' branch functionality is in use,
        a read (non-exclusive) lock is taken on the branch baseline and also
        each of the "parent" baselines.
        However,
        a baseline write (exclusive) lock is only taken on the branch baseline
        the "parent" baselines are only read (non-exclusive) locked.

           TThhee HHiissttoorryy LLoocckk
        possibleWhfeorreiandperpoejnedcetnthaisntaegnruamtbeerpaosfs bcroamnmcahnedss afcotrivdeifsfiemruelnttanberoaunsclhye,s it is
        to be issued very close together.
        The is an exclusive
        _h_i_s_t_o_r_y _l_o_c_k
        taken by integrate pass to ensure that only one branch is
        updating the file history at a time,
        thus preventing history file corruption.

        TTEESSTT CCOORRRREELLAATTIIOONNSS
        suggest Tshueit`a`baleegirseg-rTeessstio-nSUtGegsetsst'f'orcoymomuarndchmaanygeb,ebuasseedd toon htahveesaoeugricse
        files in your change.  This automatically focuses testing effort
        to relevant tests, reducing the number of regression tests
        necessary to be confident that you have not introduced a bug.

                The test correlations are generated by the ``aegis
        -Integrate_Pass'' command, which associates each test in the
        change with each source file in the change.  Thus, each source
        file accumulates a list of tests which have been associated with
        it in the past.  This is not as exact as code coverage analysis,
        but is a reasonable approximation in practice.

                The
        _a_e_c_p(1)
        and


        _a_e_n_f(1)
        commands are used to associate files with a change.  While they
        do not actively perform the association, these are the files
        used by
        _a_e_i_p_a_s_s(1)
        and
        _a_e_t(1)
        to determine which source files are associated with which tests.

           TTeesstt CCoorrrreellaattiioonn AAccccuurraaccyy
        tests arAesseuvmeinnlgy tdhiasttrtihbeutteedstaicnrgoscsortrheelaftuinocntsioanrespaaccceu,rattheeraend that the
        will be a less than _1_/_n_u_m_b_e_r chance that a relevant test
        has not been run by the ``aegis -Test -SUGgest _n_u_m_b_e_r''
        command.  A small amount of noise is added to the test
        weighting, so that unexpected things are sometimes tested, and
        the same tests are not run every time.

                Test correlation accuracy can be improved by ensuring that:

        Each cha+onge should be strongly focused, with no gratuitous file
        inclusions.  This avoids spurious correlations.

        Each ite+om of new functionality should be added in an individual change,
        rather than several together.  This strongly correlates tests with
        functionality.

        Each bug+oshould be fixed in an individual change, rather than several
        together.  This strongly correlates tests with functionality.

        Test cor+orelations will be lost if files are moved.  This is because
        correlations are by name.

                The best way for tests to correlate accurately with source files is when
        a change contains a test and exactly those files relating to the
        functionality under test.  Too many spurious files will weaken the
        usefulness of the testing correlations.

        MMEETTRRIICCSS
                Aegis is capable of recording metrics as part of the file attributes
        a changeo.f This allows various properties of files to be recorded for
        later trend analysis, or other uses.

                The specific metrics are not dictated by Aegis.  It is expected that
        the integration build will create a metrics file for each of the source
        files the change.  These metrics files must be in the format specified
        by _a_e_m_e_t_r_i_c_s(5).

                The name of the metrics file defaults to ``_f_i_l_e_n_a_m_e,,SS'',
        however it may be varied, by setting the _m_e_t_r_i_c_s___f_i_l_e_n_a_m_e___p_a_t_t_e_r_n
        field of the project _c_o_n_f_i_g file.  See _a_e_p_c_o_n_f(5) for more
        information.

                If such a metrics file exists, for each source file in a change, it will
        be read and remembered at integrate pass time.  If it does not exist,
        Aegis assumes there are no relevant metrics for that file, and proceeds
        silently                                                                                                               it is not an error.

        OOPPTTIIOONNSS
                The following options are understood:
                --CChhaannggee _n_u_m_b_e_r
        This option may be used to specify a particular change within a project.
        See _a_e_g_i_s(1) for a complete description of this option.

                --HHeellpp
                        This option may be used to obtain more information about how to use the
        _a_e_g_i_s
        program.

                --LLiisstt
                        This option may be used to obtain a list of suitable subjects for this
        command.
        The list may be more general than expected.

                --NNoott__LLooggggiinngg
                        This option may be used to disable the automatic logging of
        output and errors to a file.
        This is often useful when several aegis commands are combined
        in a shell script.

                --PPrroojjeecctt _n_a_m_e
        This option may be used to select the project of interest.
        When no
        --PPrroojjeecctt
        option is specified,
        the
        _A_E_G_I_S___P_R_O_J_E_C_T
        environment variable is consulted.
        If that does not exist,
        the user's
        _$_H_O_M_E_/_._a_e_g_i_s_r_c
        file is examined for a default project field (see
        _a_e_u_c_o_n_f(5)
        for more information).
        If that does not exist,
        when the user is only working on changes within a single project,
        the project name defaults to that project.
        Otherwise,
        it is an error.

                --TTEERRssee
                        This option may be used to cause listings to
        produce the bare minimum of information.
        It is usually useful for shell scripts.

                --VVeerrbboossee
                        This option may be used to cause aegis to produce more output.
        By default aegis only produces output on errors.
        When used with the
        --LLiisstt
        option
        this option causes column headings to be added.

                --WWaaiitt   This option may be used to require Aegis commands to wait for access
        locks, if they cannot be obtained immediately.
        Defaults to the user's
        _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e
        if not specified, see
        _a_e_u_c_o_n_f(5)
        for more information.

                --NNoo__WWaaiitt
                        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
        _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e
        if not specified, see
        _a_e_u_c_o_n_f(5)
        for more information.

                All options may be abbreviated
        the abbreviation is documented as the upper case letters,
        all lower case letters and underscores (_) are optional.
        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 interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s
        are long,
        this means ignoring the extra leading '-'.
        The "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

        RREECCOOMMMMEENNDDEEDD AALLIIAASS
        csh%    The recommended alias for this command is                                                                  alias aeipass 'aegis -ipass \!* -v'
        sh$                                                                                                                aeipass(){aegis -ipass "$@" -v}

        EERRRROORRSS
        the chanIgte iiss annoterarsosriginfed to the current user.
        It is an error if
        The change is not in the


        _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d
        state.
        It is an error if
        there has been no successful
        _'_a_e_g_i_s _-_B_u_i_l_d_'
        command for the integration.
        It is an error if
        there has been no successful
        _'_a_e_g_i_s _-_T_e_s_t_'
        command for the integration.
        It is an error if
        there has been no successful
        _'_a_e_g_i_s _-_T_e_s_t _-_B_a_s_e_L_i_n_e_'
        command for the integration.

        EEXXIITT SSTTAATTUUSS
        _a_e_g_i_s   The
        command will exit with a status of 1 on any error.
        The
        _a_e_g_i_s
        command will only exit with a status of 0 if there are no errors.

        EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        this comSmeaend_a._e_g_i_s(1) for a list of environment variables which may affect
        See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for
        all commands executed by Aegis.

        SSEEEE AALLSSOO
                _a_e_i_b(1) begin integration of a change
                _a_e_i_f_a_i_l(1)
                        fail integration of a change

                _a_e_m_e_a_s_u_r_e(1)
                        simple file metrics

                _a_e_m_e_t_r_i_c_s(5)
                        metrics values file format

                _a_e_u_c_o_n_f(5)
                        user configuration file format

        CCOOPPYYRRIIGGHHTT
        Copyrighateg(iCs) v1e9r9s1i,on1949.22,01993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Peter Miller
        All rights reserved.

                The aegis program comes with ABSOLUTELY NO WARRANTY
        for details use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.
        This is free software
        and you are welcome to redistribute it under certain conditions
        for details use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

        AAUUTTHHOORR
                tab(
        l r l.  )
        Peter Miller                                                                                                                       E-Mail:   millerp@canb.auug.org.au
        /\/\*                                                                                                                                 WWW:   http://www.canb.auug.org.au/~millerp/



aegis -List(1)                                                  aegis -List(1)



NNAAMMEE
        aegis -List - list (possibly) interesting things

SSYYNNOOPPSSIISS
        aaeeggiiss --LLiisstt [ _o_p_t_i_o_n...  ] _l_i_s_t_-_n_a_m_e
        aaeeggiiss --LLiisstt --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --LLiisstt --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_L_i_s_t command is used to list information.  There are a
        number of possible _l_i_s_t_-_n_a_m_es, as follows (abbreviations as for
        command line options):

        Administrators
                List the administrators of a project.

        Branch_Details
                List full information about all the changes in the branch in
                large format.  This listing will recurse down the full branch
                tree.

        Change_Details
                List full information about a change in large format.

        Change_Files
                List all files in a change.  The verbose version includes
                details such as the action being taken, the edit number of the
                file, and whether it's being moved.  The terse version only
                lists the files names (and omits removed files), this is
                useful for shell scripts and interfacing with build tools.

        Change_File_History
                This listing shows the history of each file in the change.  It
                includes each delta number (so that you may reproduce it) and
                brief description, of each change which affected each file.

        Change_File_INventory
                This listing shows the filenames and their corresponding
                UUIDs.  When a file is renamed, its UUID remains constant.
                (If the UUID column has the filename in it, this is a
                backwards compatibility value, for accessing the file
                history.)

        Change_History
                List the history of a change.

        Change_INventory
                List the changes of a project with their UUIDs.

        Changes
                List the changes of a project.  The verbose version includes
                details such as the state of the change and it's brief
                description.  The terse version lists only the change numbers,
                which is good for shell scripts.

        Default_Change
                List the default change for the specified user (defaults to
                the current user if no user specified).

        Default_Project
                List the default project for the specified user (defaults to
                the current user if no user specified).

        Developers
                List the developers of a project.

        INComplete
                List the changes between the _a_w_a_i_t_i_n_g _r_e_v_i_e_w and _b_e_i_n_g
                _i_n_t_e_g_r_a_t_e_d states, inclusive.  Defaults to all users if no
                user name specified.

        Integrators
                List the integrators of a project.

        List_List
                List all lists available.

        Locks
                List all currently active locks.

        Outstanding_Changes
                List all changes owned by the specified user that are not yet
                completed (default to all users if no user specified).

        All_Outstanding_Changes
                List all changes not yet completed, for all projects.

        Project_Details
                List full information about all the changes in the project in
                large format.  This listing will recurse down the full branch
                tree below the project.

        Project_Files
                List all files in the baseline of a project.  The verbose
                version includes details such as the action being taken, the
                edit number of the file.  The terse version only lists the
                files names (and omits removed files), this is useful for
                shell scripts and interfacing with build tools.  If a change
                number is given, files included in the change are omitted from
                the list (giving the change's perspective on what the project
                files are).

        Project_File_INventory
                This listing shows the filenames and their corresponding
                UUIDs.  When a file is renamed, its UUID remains constant.
                (If the UUID column has the filename in it, this is a
                backwards compatibility value, for accessing the file
                history.)

        Project_History
                List the integration history of a project.

        Projects
                List all projects.

        Project_Aliases
                List all project aliases.  If you use the --PPrroojjeecctt command
                line option, the list will only include aliases of the
                specified project, or the project of the specified alias.

        Reviewers
                List the reviewers of a project.

        State_File_Name
                Prints the absolute path of the project's or change's state
                file.  Useful for cookbooks and makefiles.

        Users_Changes
                List of changes owned by the specified user (defaults to
                current user if no user specified).

        Version
                List version of a project or change.  This includes the major
                and minor version number, and the previous version number if
                available.  The list of copyright years is also printed.

        Most of these lists are available from other aegis functions.  Many
        aegis functions provide more specific lists.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPAAGGeerr  The output of listings and help is piped through the pager
                command given in the PAGER environment variable (or _m_o_r_e if
                not set).  This is the default if the command is in the
                foreground, and the output is a TTY.  This option may be used
                to override any preference specified in the _a_e_u_c_o_n_f(5) file.

        --NNoo__PPAAGGeerr
                This option may be used to ensure that the output of listings
                and help is not piped through a pager command.  This is the
                default if the command is in the background, or if the output
                is not a TTY.  This option may be used to override any
                preference specified in the _a_e_u_c_o_n_f(5) file.

        --PPaaggee__LLeennggtthh _n_u_m_b_e_r
                This option may be used to set the page length of listings.
                The default, in order of preference, is obtained from the
                system, from the _L_I_N_E_S environment variable, or set to 24
                lines.

        --PPaaggee__WWiiddtthh _n_u_m_b_e_r
                This option may be used to set the page width of listings and
                error messages.  The default, in order of preference, is
                obtained from the system, from the _C_O_L_S environment variable,
                or set to 79 characters.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --UUNNFFoorrmmaatttteedd
                This option may be used with most listings to specify that the
                column formatting is not to be performed.  This is useful for
                shell scripts.

        --PPaaggee--HHeeaaddiinnggss
                This option requests that page headings be present in listings
                and reports.  This is the default.

        --NNoo--PPaaggee--HHeeaaddiinnggss
                This option requests that page headings be omitted from
                listings and reports.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias ael 'aegis -l \!* -v'
        sh$     ael(){aegis -l "$@" -v}

EERRRROORRSS
        It is an error if the list name given is unknown.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_d_b(1) begin development of a change (listing option)

        _a_e_i_b(1) begin integration of a change (listing option)

        _a_e_r(1)  report generator

        _a_e_r_p_a_s_s(1)
                pass review of a change (listing option)

        _a_e_u_c_o_n_f(5)
                user configuration file format

        _a_e_l_s(1) annotated directory listing

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



GPL(GNU)                   Free Software Foundation                   GPL(GNU)



                              GNU GENERAL PUBLIC LICENSE
                                 Version 2, June 1991

        Copyright (C) 1989, 1991 Free Software Foundation, Inc.
        59 Temple Place, Suite 330, Boston, MA 02111, USA
        Everyone is permitted to copy and distribute verbatim copies of this
        license document, but changing it is not allowed.

                                       Preamble

        The licenses for most software are designed to take away your freedom
        to share and change it.  By contrast, the GNU General Public License
        is intended to guarantee your freedom to share and change free
        software--to make sure the software is free for all its users.  This
        General Public License applies to most of the Free Software
        Foundation's software and to any other program whose authors commit to
        using it.  (Some other Free Software Foundation software is covered by
        the GNU Library General Public License instead.)  You can apply it to
        your programs, too.

        When we speak of free software, we are referring to freedom, not
        price.  Our General Public Licenses are designed to make sure that you
        have the freedom to distribute copies of free software (and charge for
        this service if you wish), that you receive source code or can get it
        if you want it, that you can change the software or use pieces of it
        in new free programs; and that you know you can do these things.

        To protect your rights, we need to make restrictions that forbid
        anyone to deny you these rights or to ask you to surrender the rights.
        These restrictions translate to certain responsibilities for you if
        you distribute copies of the software, or if you modify it.

        For example, if you distribute copies of such a program, whether
        gratis or for a fee, you must give the recipients all the rights that
        you have.  You must make sure that they, too, receive or can get the
        source code.  And you must show them these terms so they know their
        rights.

        We protect your rights with two steps: (1) copyright the software, and
        (2) offer you this license which gives you legal permission to copy,
        distribute and/or modify the software.

        Also, for each author's protection and ours, we want to make certain
        that everyone understands that there is no warranty for this free
        software.  If the software is modified by someone else and passed on,
        we want its recipients to know that what they have is not the
        original, so that any problems introduced by others will not reflect
        on the original authors' reputations.

        Finally, any free program is threatened constantly by software
        patents.  We wish to avoid the danger that redistributors of a free
        program will individually obtain patent licenses, in effect making the
        program proprietary.  To prevent this, we have made it clear that any
        patent must be licensed for everyone's free use or not licensed at
        all.

        The precise terms and conditions for copying, distribution and
        modification follow.
                              GNU GENERAL PUBLIC LICENSE
           TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

        0. This License applies to any program or other work which contains a
        notice placed by the copyright holder saying it may be distributed
        under the terms of this General Public License.  The "Program", below,
        refers to any such program or work, and a "work based on the Program"
        means either the Program or any derivative work under copyright law:
        that is to say, a work containing the Program or a portion of it,
        either verbatim or with modifications and/or translated into another
        language.  (Hereinafter, translation is included without limitation in
        the term "modification".)  Each licensee is addressed as "you".

        Activities other than copying, distribution and modification are not
        covered by this License; they are outside its scope.  The act of
        running the Program is not restricted, and the output from the Program
        is covered only if its contents constitute a work based on the Program
        (independent of having been made by running the Program).  Whether
        that is true depends on what the Program does.

        1. You may copy and distribute verbatim copies of the Program's source
        code as you receive it, in any medium, provided that you conspicuously
        and appropriately publish on each copy an appropriate copyright notice
        and disclaimer of warranty; keep intact all the notices that refer to
        this License and to the absence of any warranty; and give any other
        recipients of the Program a copy of this License along with the
        Program.

        You may charge a fee for the physical act of transferring a copy, and
        you may at your option offer warranty protection in exchange for a
        fee.

        2. You may modify your copy or copies of the Program or any portion of
        it, thus forming a work based on the Program, and copy and distribute
        such modifications or work under the terms of Section 1 above,
        provided that you also meet all of these conditions:

        a)  You must cause the modified files to carry prominent notices
            stating that you changed the files and the date of any change.

        b)  You must cause any work that you distribute or publish, that in
            whole or in part contains or is derived from the Program or any
            part thereof, to be licensed as a whole at no charge to all third
            parties under the terms of this License.

        c)  If the modified program normally reads commands interactively when
            run, you must cause it, when started running for such interactive
            use in the most ordinary way, to print or display an announcement
            including an appropriate copyright notice and a notice that there
            is no warranty (or else, saying that you provide a warranty) and
            that users may redistribute the program under these conditions,
            and telling the user how to view a copy of this License.
            (Exception: if the Program itself is interactive but does not
            normally print such an announcement, your work based on the
            Program is not required to print an announcement.)

        These requirements apply to the modified work as a whole.  If
        identifiable sections of that work are not derived from the Program,
        and can be reasonably considered independent and separate works in
        themselves, then this License, and its terms, do not apply to those
        sections when you distribute them as separate works.  But when you
        distribute the same sections as part of a whole which is a work based
        on the Program, the distribution of the whole must be on the terms of
        this License, whose permissions for other licensees extend to the
        entire whole, and thus to each and every part regardless of who wrote
        it.

        Thus, it is not the intent of this section to claim rights or contest
        your rights to work written entirely by you; rather, the intent is to
        exercise the right to control the distribution of derivative or
        collective works based on the Program.

        In addition, mere aggregation of another work not based on the Program
        with the Program (or with a work based on the Program) on a volume of
        a storage or distribution medium does not bring the other work under
        the scope of this License.

        3. You may copy and distribute the Program (or a work based on it,
        under Section 2) in object code or executable form under the terms of
        Sections 1 and 2 above provided that you also do one of the following:

        a)  Accompany it with the complete corresponding machine-readable
            source code, which must be distributed under the terms of Sections
            1 and 2 above on a medium customarily used for software
            interchange; or,

        b)  Accompany it with a written offer, valid for at least three years,
            to give any third party, for a charge no more than your cost of
            physically performing source distribution, a complete machine-
            readable copy of the corresponding source code, to be distributed
            under the terms of Sections 1 and 2 above on a medium customarily
            used for software interchange; or,

        c)  Accompany it with the information you received as to the offer to
            distribute corresponding source code.  (This alternative is
            allowed only for noncommercial distribution and only if you
            received the program in object code or executable form with such
            an offer, in accord with Subsection b above.)

        The source code for a work means the preferred form of the work for
        making modifications to it.  For an executable work, complete source
        code means all the source code for all modules it contains, plus any
        associated interface definition files, plus the scripts used to
        control compilation and installation of the executable.  However, as a
        special exception, the source code distributed need not include
        anything that is normally distributed (in either source or binary
        form) with the major components (compiler, kernel, and so on) of the
        operating system on which the executable runs, unless that component
        itself accompanies the executable.

        If distribution of executable or object code is made by offering
        access to copy from a designated place, then offering equivalent
        access to copy the source code from the same place counts as
        distribution of the source code, even though third parties are not
        compelled to copy the source along with the object code.

        4. You may not copy, modify, sublicense, or distribute the Program
        except as expressly provided under this License.  Any attempt
        otherwise to copy, modify, sublicense or distribute the Program is
        void, and will automatically terminate your rights under this License.
        However, parties who have received copies, or rights, from you under
        this License will not have their licenses terminated so long as such
        parties remain in full compliance.

        5. You are not required to accept this License, since you have not
        signed it.  However, nothing else grants you permission to modify or
        distribute the Program or its derivative works.  These actions are
        prohibited by law if you do not accept this License.  Therefore, by
        modifying or distributing the Program (or any work based on the
        Program), you indicate your acceptance of this License to do so, and
        all its terms and conditions for copying, distributing or modifying
        the Program or works based on it.

        6. Each time you redistribute the Program (or any work based on the
        Program), the recipient automatically receives a license from the
        original licensor to copy, distribute or modify the Program subject to
        these terms and conditions.  You may not impose any further
        restrictions on the recipients' exercise of the rights granted herein.
        You are not responsible for enforcing compliance by third parties to
        this License.

        7. If, as a consequence of a court judgment or allegation of patent
        infringement or for any other reason (not limited to patent issues),
        conditions are imposed on you (whether by court order, agreement or
        otherwise) that contradict the conditions of this License, they do not
        excuse you from the conditions of this License.  If you cannot
        distribute so as to satisfy simultaneously your obligations under this
        License and any other pertinent obligations, then as a consequence you
        may not distribute the Program at all.  For example, if a patent
        license would not permit royalty-free redistribution of the Program by
        all those who receive copies directly or indirectly through you, then
        the only way you could satisfy both it and this License would be to
        refrain entirely from distribution of the Program.

        If any portion of this section is held invalid or unenforceable under
        any particular circumstance, the balance of the section is intended to
        apply and the section as a whole is intended to apply in other
        circumstances.

        It is not the purpose of this section to induce you to infringe any
        patents or other property right claims or to contest validity of any
        such claims; this section has the sole purpose of protecting the
        integrity of the free software distribution system, which is
        implemented by public license practices.  Many people have made
        generous contributions to the wide range of software distributed
        through that system in reliance on consistent application of that
        system; it is up to the author/donor to decide if he or she is willing
        to distribute software through any other system and a licensee cannot
        impose that choice.

        This section is intended to make thoroughly clear what is believed to
        be a consequence of the rest of this License.

        8. If the distribution and/or use of the Program is restricted in
        certain countries either by patents or by copyrighted interfaces, the
        original copyright holder who places the Program under this License
        may add an explicit geographical distribution limitation excluding
        those countries, so that distribution is permitted only in or among
        countries not thus excluded.  In such case, this License incorporates
        the limitation as if written in the body of this License.

        9. The Free Software Foundation may publish revised and/or new
        versions of the General Public License from time to time.  Such new
        versions will be similar in spirit to the present version, but may
        differ in detail to address new problems or concerns.

        Each version is given a distinguishing version number.  If the Program
        specifies a version number of this License which applies to it and
        "any later version", you have the option of following the terms and
        conditions either of that version or of any later version published by
        the Free Software Foundation.  If the Program does not specify a
        version number of this License, you may choose any version ever
        published by the Free Software Foundation.

        10. If you wish to incorporate parts of the Program into other free
        programs whose distribution conditions are different, write to the
        author to ask for permission.  For software which is copyrighted by
        the Free Software Foundation, write to the Free Software Foundation;
        we sometimes make exceptions for this.  Our decision will be guided by
        the two goals of preserving the free status of all derivatives of our
        free software and of promoting the sharing and reuse of software
        generally.

                                     NO WARRANTY

        11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
        WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
        EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
        OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY
        KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
        IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
        PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
        PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME
        THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

        12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
        WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
        AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
        FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
        CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
        PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
        RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
        FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF
        SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
        DAMAGES.

                             END OF TERMS AND CONDITIONS
               Appendix: How to Apply These Terms to Your New Programs

        If you develop a new program, and you want it to be of the greatest
        possible use to the public, the best way to achieve this is to make it
        free software which everyone can redistribute and change under these
        terms.

        To do so, attach the following notices to the program.  It is safest
        to attach them to the start of each source file to most effectively
        convey the exclusion of warranty; and each file should have at least
        the "copyright" line and a pointer to where the full notice is found.

            < one line to give the program's name and a brief idea of what it
            does.  >
            Copyright (C) 19yy < name of author >

            This program is free software; you can redistribute it and/or
            modify it under the terms of the GNU General Public License as
            published by the Free Software Foundation; either version 2 of the
            License, or (at your option) any later version.

            This program is distributed in the hope that it will be useful,
            but WITHOUT ANY WARRANTY; without even the implied warranty of
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
            General Public License for more details.

            You should have received a copy of the GNU General Public License
            along with this program; if not, write to the Free Software
            Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
            USA.

        Also add information on how to contact you by electronic and paper
        mail.

        If the program is interactive, make it output a short notice like this
        when it starts in an interactive mode:

            Gnomovision version 69, Copyright (C) 19yy name of author
            Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type
            `show w'.  This is free software, and you are welcome to
            redistribute it under certain conditions; type `show c' for
            details.

        The hypothetical commands `show w' and `show c' should show the
        appropriate parts of the General Public License.  Of course, the
        commands you use may be called something other than `show w' and `show
        c'; they could even be mouse-clicks or menu items--whatever suits your
        program.

        You should also get your employer (if you work as a programmer) or
        your school, if any, to sign a "copyright disclaimer" for the program,
        if necessary.  Here is a sample; alter the names:

            Yoyodyne, Inc., hereby disclaims all copyright interest in the
            program `Gnomovision' (which makes passes at compilers) written by
            James Hacker.

            < signature of Ty Coon, > 1 April 1989
            Ty Coon, President of Vice

        This General Public License does not permit incorporating your program
        into proprietary programs.  If your program is a subroutine library,
        you may consider it more useful to permit linking proprietary
        applications with the library.  If this is what you want to do, use
        the GNU Library General Public License instead of this License.



aels(1)                                                                aels(1)



NNAAMMEE
        aels - annotated directory listing

SSYYNNOOPPSSIISS
        aaeellss [ _o_p_t_i_o_n...  ][ _f_i_l_e_n_a_m_e...  ]
        aaeellss --HHeellpp
        aaeellss --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_l_s command is used to list information about the files and
        directories named on the command line.  If no files are named, the
        current directory is listed.

        The view presented is from Aegis' perspective.  It unifies the
        development directory with the baseline.

OOPPTTIIOONNSS
        The following options are understood:

        --RReeccuurrssiivvee

        --LLOOnngg   This option implies the --SShhooww--MMooddee, --SShhooww--AAttttrriibbuutteess, --SShhooww--
                UUsseerr, --SShhooww--GGrroouupp, --SShhooww--SSiizzee and --SShhooww--WWhheenn options, unless
                explicitly overridden.

        --SShhooww--DDoott--FFiilleess
                This option may be used to show files starting with a dot (.).

        --HHiiddee--DDoott--FFiilleess
                This option may be used to hide files starting with a dot (.).
                This is the default.

        --SShhooww--RReemmoovveedd--FFiilleess
                This option may be used to include removed files in the
                listing.

        --HHiiddee--RReemmoovveedd--FFiilleess
                This option may be used to exclude removed files from the
                listing.  This is the default.

        --SShhooww--MMooddee
                This option may be used to include the mode column in the
                listing.  The mode column indicates the file type and
                permissions.

        --HHiiddee--MMooddee
                This option may be used to exclude the mode column from the
                listing.  This is the default.

        --SShhooww--AAttttrriibbuutteess
                This option may be used to include the attributes column in
                the listing.  The attributes column indicates whether the file
                is part of the change, the project or neither; whether the
                file is being created, modified or removed; whether the file
                is a source file, a test file, or neither.  This is the
                default.

        --HHiiddee--AAttttrriibbuutteess
                This option may be used to exclude the attributes column from
                the listing.

        --SShhooww--UUsseerr
                This option may be used to include file owner information in
                the listing.

        --HHiiddee--UUsseerr
                This option may be used to exclude file owner information from
                the listing.  This is the default.

        --SShhooww--GGrroouupp
                This option may be used to include file group information in
                the listing.

        --HHiiddee--GGrroouupp
                This option may be used to exclude file group information from
                the listing.  This is the default.

        --SShhooww--SSiizzee
                This option may be used to include file size information in
                the listing.

        --HHiiddee--SSiizzee
                This option may be used to exclude file size information from
                the listing.  This is the default.

        --SShhooww--WWhheenn
                This option may be used to include the file modification time
                in the listing.

        --HHiiddee--WWhheenn
                This option may be used to exclude the file modification time
                from the listing.  This is the default.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_l_s program.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_l_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_l_s command will exit with a status of 1 on any error.  The _a_e_l_s
        command will only exit with a status of 0 if there are no errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _l_s(1)   list directory contents

        _a_e_f_i_n_d(1)
                search for files in directory hierarchy

        _a_e_l _c_f  List change files.

        _a_e_l _p_f  List project files.

CCOOPPYYRRIIGGHHTT
        aels version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aels program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_l_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_l_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aemeasure(1)                                                      aemeasure(1)



NNAAMMEE
        aemeasure - simple file metrics

SSYYNNOOPPSSIISS
        aaeemmeeaassuurree [ _i_n_f_i_l_e [ _o_u_t_f_i_l_e ]]

DDEESSCCRRIIPPTTIIOONN
        The _a_e_m_e_a_s_u_r_e command is used to measure a few very simple file
        statistics: lines of code, lines of comments, blank lines.  It is an
        example of a probgram which produces its output in the _a_e_m_e_t_r_i_c_s(5)
        format, suitable for Aegis to read and understand as file metrics.

        The language of the file is determined by examining the file suffix.

                     .c, .h, .y   C language
                     .cc, .CC,    C++ language
                     .c++,
                     .man, .mm,   GNU Groff input
                     .ms, .so

MMEETTRRIICCSS
        Aegis is capable of recording metrics as part of the file attributes
        of a change.  This allows various properties of files to be recorded
        for later trend analysis, or other uses.

        The specific metrics are not dictated by Aegis.  It is expected that
        the integration build will create a metrics file for each of the
        source files the change.  These metrics files must be in the format
        specified by _a_e_m_e_t_r_i_c_s(5).

        The name of the metrics file defaults to ``_f_i_l_e_n_a_m_e,,SS'', however it
        may be varied, by setting the _m_e_t_r_i_c_s___f_i_l_e_n_a_m_e___p_a_t_t_e_r_n field of the
        project _c_o_n_f_i_g file.  See _a_e_p_c_o_n_f(5) for more information.

        If such a metrics file exists, for each source file in a change, it
        will be read and remembered at integrate pass time.  If it does not
        exist, Aegis assumes there are no relevant metrics for that file, and
        proceeds silently; it is not an error.

OOPPTTIIOONNSS
        The following option is understood

        --LLAANNGGuuaaggee _n_a_m_e
                This option may be used to specify the input language of the
                file, rather than have the input language be guessed fromn the
                file suffix.  The name must be one of the following: C, C++,
                roff or generic.  Any other name will result in an error.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_m_e_a_s_u_r_e are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_m_e_a_s_u_r_e command will exit with a status of 1 on any error.  The
        _a_e_m_e_a_s_u_r_e command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_i_p_a_s_s(1)
                pass a change integration

        _a_e_m_e_t_r_i_c_s(5)
                metrics values file format

CCOOPPYYRRIIGGHHTT
        aemeasure version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aemeasure program comes with ABSOLUTELY NO WARRANTY; for details
        use the '_a_e_m_e_a_s_u_r_e _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software
        and you are welcome to redistribute it under certain conditions; for
        details use the '_a_e_m_e_a_s_u_r_e _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Make_Transparent(1)                          aegis -Make_Transparent(1)



NNAAMMEE
        aegis -Make_Transparent - make branch file transparent

SSYYNNOOPPSSIISS
        aaeeggiiss --MMaakkee__TTrraannssppaarreenntt [ _o_p_t_i_o_n...  ] _f_i_l_e_n_a_m_e...
        aaeeggiiss --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --HHeellpp
        aaeeggiiss --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_M_a_k_e___T_r_a_n_s_p_a_r_e_n_t command is used to add a file to the
        change which will result in the named file being made transparent in
        the branch when the change is integrated.  The version of the project
        file from the deeper branch will then show through.

        You may name a directory to make all files in that directory tree
        transparent.  It is an error if there are no relevant files.

   BBrraanncchh _v_s CChhaannggee
        The _a_e_c_p_u(1) command may only be applied to a change.  If you wish to
        perform the same operation on a branch, use the _a_e_m_t(1) command,
        through the agency of a change.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   PPrroocceessss SSiiddee EEffffeeccttss
        This command will cancel any build or test registrations, because
        changing the change file list logically invalidates them.

   NNoottiiffiiccaattiioonn
        The _m_a_k_e___t_r_a_n_s_p_a_r_e_n_t___c_o_m_m_a_n_d in the project configuration file is run,
        if set.  The _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set, and if there
        has been an integration recently.  See _a_e_p_c_o_n_f(5) for more
        information.

OOPPTTIIOONNSS
        The following options are understood:

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --UUNNCChhaannggeedd
                Examine the named files to see if they are unchanged.  Only
                remove the unchanged files from the branch, and leave the
                files which have changed.  If no files are named on the
                command line all branch files are checked.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aemt 'aegis -mt \!* -v'
        sh$     aemt(){aegis -mt "$@" -v}

        This command is dedicated to my wife, Mary-Therese.  When I was trying
        to explain what this command did, she said "I had one of those on my
        bicycle when I was young, but it fell off".

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the change is not assigned to the current user.
        It is an error if the file is not present in the immediate branch.
        It is an error if the file is present in the immediate branch, but is
        not also present in a deeper branch.
        It is an error if the file is only present in the trunk branch.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_p_u(1)
                uncopy copy files from a change

        _a_e_m_t_u(1)
                cease making branch files transparent

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Make_Transparent_Undo(1)                aegis -Make_Transparent_Undo(1)



NNAAMMEE
        aegis -Make_Transparent_Undo - no longer make branch file transparent

SSYYNNOOPPSSIISS
        aaeeggiiss --MMaakkee__TTrraannssppaarreenntt__UUnnddoo [ _o_p_t_i_o_n...  ] _f_i_l_e_n_a_m_e...
        aaeeggiiss --MMaakkee__TTrraannssppaarreenntt__UUnnddoo --LLiisstt
        aaeeggiiss --MMaakkee__TTrraannssppaarreenntt__UUnnddoo --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_M_a_k_e___T_r_a_n_s_p_a_r_e_n_t___U_n_d_o command is used to reverse the
        effects of the _a_e_g_i_s _-_M_a_k_e___T_r_a_n_s_p_a_r_e_n_t command.  The named files will
        be removed from the list of files in the change.

        The file is deleted from the development directory unless the --KKeeeepp
        option is specified.  The --KKeeeepp option should be used with great care,
        as you can confuse tools such as _m_a_k_e(1) by leaving these files in
        place.

        You may name a directory to delete from the change all files in that
        directory tree previously copied into the change, other files in the
        tree will be ignored.  It is an error if there are no relevant files.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   PPrroocceessss SSiiddee EEffffeeccttss
        This command will cancel any build or test registrations, because
        deleting a file logically invalidates them.  If the project _c_o_n_f_i_g
        file was deleted, any diff registration will also be canceled.

        The difference file (,D) will also be removed, however any DMT derived
        files (e.g a .o file from a .c file) will not be removed.  This is
        because aegis is decoupled from the DMT, and cannot know what these
        derived file may be called.  You may need to delete derived files
        manually.

   NNoottiiffiiccaattiioonn
        The _m_a_k_e___t_r_a_n_s_p_a_r_e_n_t___u_n_d_o___c_o_m_m_a_n_d in the project _c_o_n_f_i_g file is run,
        if set.  The _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set, and if there
        has been an integration recently.  See _a_e_p_c_o_n_f(5) for more
        information.

OOPPTTIIOONNSS
        The following options are understood:

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --IInntteerraaccttiivvee
                Specify that aegis should ask the user for confirmation before
                deleting each file.  Answer the question _y_e_s to delete the
                file, or _n_o to keep the file.  You can also answer _a_l_l to
                delete the file and all that follow, or _n_o_n_e to keep the file
                and all that follow.

                Defaults to the user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not
                specified, see _a_e_u_c_o_n_f(5) for more information.

                If aegis is running in the background, the question will not
                be asked, and the files will be deleted.

        --KKeeeepp
                This option may be used to retain files and/or directories
                usually deleted by the command.  Defaults to the user's
                _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for
                more information.

        --NNoo__KKeeeepp
                This option may be used to ensure that the files and/or
                directories are deleted by the command.  Defaults to the
                user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5)
                for more information.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --VVeerriiffyy__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that the symbolic links, or
                hard links, or file copies, in the work area be updated to
                reflect the current state of the baseline.  This is controlled
                by the _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field of the project
                configuration file.  Only files which are not involved in the
                change are updated.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if meaningful for your configuration.
                The name is an historical accident, hard links and file copies
                are included.

        --AAssssuummee__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that no update of baseline
                mirror files take place.  This options is useful when you
                _d_e_f_i_n_i_t_e_l_y _k_n_o_w the files' up-to-date-ness isn't important
                right now; incorrect use of this option may have unanticipated
                build side-effects.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if not meaningful for your
                configuration.  The name is an historical accident, hard links
                and file copies are included.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aemtu 'aegis -mtu \!* -v'
        sh$     aemtu(){aegis -mtu "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the change is not assigned to the current user.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_p_u(1)
                no longer modify a file

        _a_e_m_t(1) make branch files transparent

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -MoVe_file(1)                                        aegis -MoVe_file(1)



NNAAMMEE
        aegis -MoVe_file - rename one or more files as part of a change

SSYYNNOOPPSSIISS
        aaeeggiiss --MMooVVee__ffiillee [ _o_p_t_i_o_n...  ] _o_l_d_-_n_a_m_e _n_e_w_-_n_a_m_e _[ _o_l_d_1 _n_e_w_1 _[ _o_l_d_2
        _n_e_w_2 _] _]
        aaeeggiiss --MMooVVee__ffiillee --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --MMooVVee__ffiillee --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_M_o_V_e___f_i_l_e command is used to copy a file into a change and
        change its name at the same time.

        The named files will be copied from the baseline (_o_l_d_-_f_i_l_e) into the
        development directory (_n_e_w_-_f_i_l_e), and added to the list of files in
        the change.

        Warning: If there is already files in the development directory of
        either the _o_l_d_-_n_a_m_e or the _n_e_w_-_n_a_m_e they will be overwritten.

        The _o_l_d_-_f_i_l_e in the development directory will contain 1KB of random
        text.  The random text is sufficiently revolting that most compilers
        will give error messages, should the file be referenced accidentally.
        This is often very helpful when moving include files.

        You may rename directories.  All the files in the _o_l_d_-_n_a_m_e directory
        tree will be renamed to be below the _n_e_w_-_n_a_m_e directory tree.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   PPrroocceessss SSiiddee EEffffeeccttss
        This command will cancel any build or test registrations, because
        adding another file logically invalidates them.

        When the change files are listed (_a_e_g_i_s _-_L_i_s_t _C_h_a_n_g_e___F_i_l_e_s _-_T_E_R_s_e) the
        new files (_n_e_w_-_n_a_m_e) will appear in the listing, and the removed files
        (_o_l_d_-_n_a_m_e) will nnoott appear in the terse listing.  Similarly, when the
        project files are listed with an explicit change number (_a_e_g_i_s _-_L_i_s_t
        _P_r_o_j_e_c_t___F_i_l_e_s _-_T_E_R_s_e _-_C_h_a_n_g_e N) none of the change's files, including
        both the new and removed files, will appear in the terse listing.
        These two features are very helpful when calling aegis from within a
        DMT to generate the list of source files.

   NNoottiiffiiccaattiioonn
        The _n_e_w___f_i_l_e___c_o_m_m_a_n_d and _r_e_m_o_v_e___f_i_l_e___c_o_m_m_a_n_d in the project _c_o_n_f_i_g
        file are run, if set.  The _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set,
        and if there has been an integration recently.  See _a_e_p_c_o_n_f(5) for
        more information.

WWHHIITTEEOOUUTT
        Aegis provides you with what is often called a ``view path'' which
        indicates to development tools (compilers, build systems, _e_t_c) look
        first in the development directory, then in the branch baseline, and
        so on up to the trunk baseline.

        The problem with view paths is that in order to remove files, you need
        some kind of "whiteout" to say ``stop looking, it's been removed.''

        When you user the _a_e_r_m(1) or _a_e_m_v(1) commands, this means "add
        information to this change which will remove the file from the
        baseline when this change is integrated".  _I_._e_. while the change is in
        the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state, the file is only "removed" in the
        development directory - it's still present in the baseline, and will
        be until the change is successfully integrated.

        When you use the _a_e_r_m(1) or _a_e_m_v(1) commands, Aegis will create a 1K
        file to act as the whiteout.  It's contents are rather ugly so that if
        you compile or include the "removed" file accidentally, you get a
        fatal error.  This will remind you to remove obsolete references.

        When the change in integrated, the removed file is _n_o_t copied/linked
        from the baseline to the integration directory, and is _n_o_t copied from
        the development directory.  At this time it is physically gone (no
        whiteout).  It is assumed that because of the error inducing whiteout
        all old references were found and fixed while the change was in the
        _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.

   FFiillee MMaanniiffeessttss
        When generating list of files to be compiled or linked, it is
        important that the file manifest be generated from information known
        by Aegis, rather than from the file system.  This is for several
        reasons:

        (a) Aegis knows exactly what (source) files are where, whereas
            everything else is inferring Aegis' knowledge; and

        (b) looking in the file system is hard when the view path is longer
            that 2 directories (and Aegis' branching method can make it
            arbitrarily long); and

        (c) The whiteout files, and anything else left ``lying around'', will
            confuse any method which interrogates the file system.

        The easiest way to use Aegis' file knowledge is with something like an
        _a_w_k(1) script processing the Aegis file lists.  For example, you can
        do this with _m_a_k_e(1) as follows:
                # generate the file manifest
                manifest.make.inc: manifest.make.awk
                     ( aegis -l cf -ter ; aegis -l pf -ter ) | \
                     awk -f manifest.make.awk > manifest.make.inc
                # now include the file manifest
                include manifest.make.inc
        Note: this would be inefficient of you did it once per directory, but
        there is nothing stopping you writing numerous assignments into the
        _m_a_n_i_f_e_s_t_._m_a_k_e_._i_n_c file, all in one pass.

        It is possible to do the same thing with Aegis' report generator (see
        _a_e_r(1) for more information), but this is more involved than the
        _a_w_k(1) script.  However, with the information "straight from the
        horse's mouth" as it were, it can also be much smarter.

        This file manifest would become out-of-date without an interlock to
        Aegis' file operations commands.  By using the _p_r_o_j_e_c_t_-_f_i_l_e___c_o_m_m_a_n_d
        and _c_h_a_n_g_e___f_i_l_e___c_o_m_m_a_n_d fields of the project _c_o_n_f_i_g file (see
        _a_e_p_c_o_n_f(5) for more information), you can delete this file at
        strategic times.
                /* run when the change file manifest is altered */
                change_file_command = "rm -f manifest.make.inc";
                /* run when the project file manifest is altered */
                project_file_command = "rm -f manifest.make.inc";
        The new file manifest will thus be re-built during the next _a_e_b(1)
        command.

   OOppttiioonnss aanndd PPrreeffeerreenncceess
        There is a --NNoo--WWhhiitteeOOuutt option, which may be used to suppress whiteout
        files when you use the _a_e_r_m(1) and _a_e_m_v(1) commands.  There is a
        corresponding --WWhhiitteeOOuutt option, which is usually the default.

        There is a _w_h_i_t_e_o_u_t___p_r_e_f_e_r_e_n_c_e field in the user preferences file (see
        _a_e_u_c_o_n_f(5) for more information) if you want to set this option more
        permanently.

   WWhhiitteeoouutt FFiillee TTeemmppllaatteess
        The _w_h_i_t_e_o_u_t___t_e_m_p_l_a_t_e field of the project _c_o_n_f_i_g file may be used to
        produce language-specific error files.  If no whiteout template entry
        matches, a very ugly 1KB file will be produced - it should induce
        compiler errors for just about any language.

        If you want a more human-readable error message, entries such as
                whiteout_template =
                [
                     {
                     pattern = [ "*.[ch]" ];
                     body = "#error This file has been removed.";
                     }
                ];
        can be very effective (this example assumes _g_c_c(1) is being used).

        If it is essential that _n_o whiteout file be produced, say for C source
        files, you could use a whiteout template such as
                whiteout_template =
                [
                     { pattern = [ "*.c" ]; }
                ];
        because an absent _b_o_d_y sub-field means generate no whiteout file at
        all.

        You may have more than one whiteout template entry, but note that the
        order of the entries is important.  The first entry which matches will
        be used.

   NNoottiiffiiccaattiioonn
        On successful completion of this command, the notifications usually
        performed by the _a_e_r_m(1), _a_e_n_f(1) and _a_e_n_t(1) commands are run, as
        appropriate.  These include the _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d, _n_e_w___f_i_l_e___-
        _c_o_m_m_a_n_d, _n_e_w___t_e_s_t___c_o_m_m_a_n_d and _r_e_m_o_v_e___f_i_l_e___c_o_m_m_a_n_d fields of the
        project _c_o_n_f_i_g file.  See _a_e_p_c_o_n_f(5) for more information.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --NNoott__LLooggggiinngg
                This option may be used to disable the automatic logging of
                output and errors to a file.  This is often useful when
                several aegis commands are combined in a shell script.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --WWhhiitteeOOuutt
                This option may be used to request that deleted files be
                replaced by a ``whiteout'' file in the development directory.
                The idea is that compiling such a file will result in a fatal
                error, in order that all references may be found.  This is
                usually the default.

        --NNoo__WWhhiitteeOOuutt
                This option may be used to request that no ``whiteout'' file
                be placed in the development directory.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aemv 'aegis -mv \!* -v'
        sh$     aemv(){aegis -mv "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the change is not assigned to the current user.
        It is an error if either file is already in the change.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_p(1) copy files into a change

        _a_e_d_b(1) begin development of a change

        _a_e_m_v_u(1)
                undo the rename files as part of a change

        _a_e_n_f(1) add files to be created by a change

        _a_e_n_f_u(1)
                remove files to be created by a change

        _a_e_r_m(1) add files to be deleted by a change

        _a_e_r_m_u(1)
                remove files to be deleted by a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -MoVe_file_Undo(1)                              aegis -MoVe_file_Undo(1)



NNAAMMEE
        aegis -MoVe_file_Undo - undo the rename a file as part of a change

SSYYNNOOPPSSIISS
        aaeeggiiss --MMooVVee__ffiillee__UUnnddoo [ _o_p_t_i_o_n...  ] _f_i_l_e_n_a_m_e...
        aaeeggiiss --MMooVVee__ffiillee__UUnnddoo --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --MMooVVee__ffiillee__UUnnddoo --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_M_o_V_e___f_i_l_e___U_n_d_o command is used to reverse the effects of
        the _a_e_g_i_s _-_M_o_V_e___f_i_l_e command.  You only need to name one half of the
        rename, the other half will be determined automatically.  You may
        apply this command to whole directories.

        The named files will be removed from the development directory, and
        removed from the list of files in the change.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   PPrroocceessss SSiiddee EEffffeeccttss
        This command will cancel any build or test registrations, because
        adding another file logically invalidates them.

   NNoottiiffiiccaattiioonn
        The _n_e_w___f_i_l_e___u_n_d_o___c_o_m_m_a_n_d and _r_e_m_o_v_e___f_i_l_e___u_n_d_o___c_o_m_m_a_n_d in the project
        _c_o_n_f_i_g file are run, if set.  The _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if
        set, and if there has been an integration recently.  See _a_e_p_c_o_n_f(5)
        for more information.

WWHHIITTEEOOUUTT
        Aegis provides you with what is often called a ``view path'' which
        indicates to development tools (compilers, build systems, _e_t_c) look
        first in the development directory, then in the branch baseline, and
        so on up to the trunk baseline.

        The problem with view paths is that in order to remove files, you need
        some kind of "whiteout" to say ``stop looking, it's been removed.''

        When you user the _a_e_r_m(1) or _a_e_m_v(1) commands, this means "add
        information to this change which will remove the file from the
        baseline when this change is integrated".  _I_._e_. while the change is in
        the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state, the file is only "removed" in the
        development directory - it's still present in the baseline, and will
        be until the change is successfully integrated.

        When you use the _a_e_r_m(1) or _a_e_m_v(1) commands, Aegis will create a 1K
        file to act as the whiteout.  It's contents are rather ugly so that if
        you compile or include the "removed" file accidentally, you get a
        fatal error.  This will remind you to remove obsolete references.

        When the change in integrated, the removed file is _n_o_t copied/linked
        from the baseline to the integration directory, and is _n_o_t copied from
        the development directory.  At this time it is physically gone (no
        whiteout).  It is assumed that because of the error inducing whiteout
        all old references were found and fixed while the change was in the
        _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.

   FFiillee MMaanniiffeessttss
        When generating list of files to be compiled or linked, it is
        important that the file manifest be generated from information known
        by Aegis, rather than from the file system.  This is for several
        reasons:

        (a) Aegis knows exactly what (source) files are where, whereas
            everything else is inferring Aegis' knowledge; and

        (b) looking in the file system is hard when the view path is longer
            that 2 directories (and Aegis' branching method can make it
            arbitrarily long); and

        (c) The whiteout files, and anything else left ``lying around'', will
            confuse any method which interrogates the file system.

        The easiest way to use Aegis' file knowledge is with something like an
        _a_w_k(1) script processing the Aegis file lists.  For example, you can
        do this with _m_a_k_e(1) as follows:
                # generate the file manifest
                manifest.make.inc: manifest.make.awk
                     ( aegis -l cf -ter ; aegis -l pf -ter ) | \
                     awk -f manifest.make.awk > manifest.make.inc
                # now include the file manifest
                include manifest.make.inc
        Note: this would be inefficient of you did it once per directory, but
        there is nothing stopping you writing numerous assignments into the
        _m_a_n_i_f_e_s_t_._m_a_k_e_._i_n_c file, all in one pass.

        It is possible to do the same thing with Aegis' report generator (see
        _a_e_r(1) for more information), but this is more involved than the
        _a_w_k(1) script.  However, with the information "straight from the
        horse's mouth" as it were, it can also be much smarter.

        This file manifest would become out-of-date without an interlock to
        Aegis' file operations commands.  By using the _p_r_o_j_e_c_t_-_f_i_l_e___c_o_m_m_a_n_d
        and _c_h_a_n_g_e___f_i_l_e___c_o_m_m_a_n_d fields of the project _c_o_n_f_i_g file (see
        _a_e_p_c_o_n_f(5) for more information), you can delete this file at
        strategic times.
                /* run when the change file manifest is altered */
                change_file_command = "rm -f manifest.make.inc";
                /* run when the project file manifest is altered */
                project_file_command = "rm -f manifest.make.inc";
        The new file manifest will thus be re-built during the next _a_e_b(1)
        command.

   OOppttiioonnss aanndd PPrreeffeerreenncceess
        There is a --NNoo--WWhhiitteeOOuutt option, which may be used to suppress whiteout
        files when you use the _a_e_r_m(1) and _a_e_m_v(1) commands.  There is a
        corresponding --WWhhiitteeOOuutt option, which is usually the default.

        There is a _w_h_i_t_e_o_u_t___p_r_e_f_e_r_e_n_c_e field in the user preferences file (see
        _a_e_u_c_o_n_f(5) for more information) if you want to set this option more
        permanently.

   WWhhiitteeoouutt FFiillee TTeemmppllaatteess
        The _w_h_i_t_e_o_u_t___t_e_m_p_l_a_t_e field of the project _c_o_n_f_i_g file may be used to
        produce language-specific error files.  If no whiteout template entry
        matches, a very ugly 1KB file will be produced - it should induce
        compiler errors for just about any language.

        If you want a more human-readable error message, entries such as
                whiteout_template =
                [
                     {
                     pattern = [ "*.[ch]" ];
                     body = "#error This file has been removed.";
                     }
                ];
        can be very effective (this example assumes _g_c_c(1) is being used).

        If it is essential that _n_o whiteout file be produced, say for C source
        files, you could use a whiteout template such as
                whiteout_template =
                [
                     { pattern = [ "*.c" ]; }
                ];
        because an absent _b_o_d_y sub-field means generate no whiteout file at
        all.

        You may have more than one whiteout template entry, but note that the
        order of the entries is important.  The first entry which matches will
        be used.

   NNoottiiffiiccaattiioonn
        On successful completion of this command, the notifications usually
        performed by the _a_e_r_m_u(1), _a_e_n_f_u(1) and _a_e_n_t_u(1) commands are run, as
        appropriate.  These include the _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d, _n_e_w___f_i_l_e___u_n_d_o___-
        _c_o_m_m_a_n_d, _n_e_w___t_e_s_t___u_n_d_o___c_o_m_m_a_n_d and _r_e_m_o_v_e___f_i_l_e___u_n_d_o___c_o_m_m_a_n_d fields of
        the project _c_o_n_f_i_g file.  See _a_e_p_c_o_n_f(5) for more information.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --NNoott__LLooggggiinngg
                This option may be used to disable the automatic logging of
                output and errors to a file.  This is often useful when
                several aegis commands are combined in a shell script.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --VVeerriiffyy__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that the symbolic links, or
                hard links, or file copies, in the work area be updated to
                reflect the current state of the baseline.  This is controlled
                by the _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field of the project
                configuration file.  Only files which are not involved in the
                change are updated.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if meaningful for your configuration.
                The name is an historical accident, hard links and file copies
                are included.

        --AAssssuummee__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that no update of baseline
                mirror files take place.  This options is useful when you
                _d_e_f_i_n_i_t_e_l_y _k_n_o_w the files' up-to-date-ness isn't important
                right now; incorrect use of this option may have unanticipated
                build side-effects.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if not meaningful for your
                configuration.  The name is an historical accident, hard links
                and file copies are included.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --WWhhiitteeOOuutt
                This option may be used to request that deleted files be
                replaced by a ``whiteout'' file in the development directory.
                The idea is that compiling such a file will result in a fatal
                error, in order that all references may be found.  This is
                usually the default.

        --NNoo__WWhhiitteeOOuutt
                This option may be used to request that no ``whiteout'' file
                be placed in the development directory.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aemvu 'aegis -mvu \!* -v'
        sh$     aemvu(){aegis -mvu "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the change is not assigned to the current user.
        It is an error if the file is not being moved by the change.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_p(1) copy files into a change

        _a_e_d_b(1) begin development of a change

        _a_e_m_v(1) rename files as part of a change

        _a_e_n_f(1) add files to be created by a change

        _a_e_n_f_u(1)
                remove files to be created by a change

        _a_e_r_m(1) add files to be deleted by a change

        _a_e_r_m_u(1)
                remove files to be deleted by a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_Administrator(1)                        aegis -New_Administrator(1)



NNAAMMEE
        aegis -New_Administrator - add a new administrator to a project

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__AAddmmiinniissttrraattoorr _u_s_e_r_-_n_a_m_e...  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__AAddmmiinniissttrraattoorr --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__AAddmmiinniissttrraattoorr --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___A_d_m_i_n_i_s_t_r_a_t_o_r command is used to add a new
        administrator to a project.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --DDeesscceenndd__PPrroojjeecctt__TTrreeee
                This option may be used to request that the command should be
                applied to the project and all its branches and sub-branches.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aena 'aegis -na \!* -v'
        sh$     aena(){aegis -na "$@" -v}

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        project.
        It is an error if any of the named users have a uid of less than 100.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_p_a(1) modify the attributes of a project

        _a_e_r_a(1) remove administrators from a project

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_BRanch(1)                                      aegis -New_BRanch(1)



NNAAMMEE
        aegis -New_BRanch - create a new branch

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__BBRRaanncchh [ _n_u_m_b_e_r ][ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__BBRRaanncchh --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___B_R_a_n_c_h command is used to create a new branch.  A
        branch is very similar to a _c_h_a_n_g_e, except that a branch may have
        changes (or branches) of its own, and a change may not.

        You may choose your own branch number, if you want.  Zero and
        positives are legal, but negatives are not.  It is an error if that
        number has already been used for a change or another branch.  If you
        do not specify a change number, the lowest available positive number
        (1 or more) will be used.

        The new branch will be a special sort of change.  It will be in the
        '_b_e_i_n_g _d_e_v_e_l_o_p_e_d' state, but the usual commands in that stat (build,
        diff, etc) will not work.  Instead, you must create changes on the
        branch, and when those changes are integrated into the branch, this is
        the equivalent of build, diff, etc, on the branch.  Once the branch is
        completed, the _a_e_d_e(1) command may be used to advance it to the _b_e_i_n_g
        _r_e_v_i_e_w_e_d state, and from then on it becomes a normal change.  Should
        it be returned to the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state for any reason, it will
        once again require sub-changes to alter anything.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify a filename which is to be
                written with the automatically determined branch number.
                Useful for writing scripts.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aenbr 'aegis -nbr \!* -v'
        sh$     aenbr(){aegis -nbr "$@" -v}

SSEEEE AALLSSOO
        _a_e_n_b_r_u(1)
                remove a branch

        _a_e_n_c(1) create a new change

        _a_e_d_e(1) develop end

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_BRanch_Undo(1)                            aegis -New_BRanch_Undo(1)



NNAAMMEE
        aegis -New_BRanch_Undo - remove a branch

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__BBRRaanncchh__UUnnddoo _n_u_m_b_e_r [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__BBRRaanncchh__UUnnddoo --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___B_R_a_n_c_h___U_n_d_o command is used to remove a branch created
        with the _a_e_n_b_r(1) command.

        NNoottee:: This command will completely remove all trace of the branch from
        Aegis' database.  This includes all changes performed on the branch
        and all of its sub-branches.  (This history remains in the history
        files, but is inaccessible.)

        If you wish to finish development of a branch, and commit all of its
        changes to the parent branch, use the _a_e_d_e(1) command, instead.

        If you wish to stop anyone from developing more changes on the branch,
        use the _a_e_r_d(1) command to remove all the developers.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --KKeeeepp
                This option may be used to retain files and/or directories
                usually deleted by the command.  Defaults to the user's
                _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for
                more information.

        --NNoo__KKeeeepp
                This option may be used to ensure that the files and/or
                directories are deleted by the command.  Defaults to the
                user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5)
                for more information.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_b_r(1)
                create a new branch

        _a_e_n_c_u(1)
                new change undo

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_Change(1)                                      aegis -New_Change(1)



NNAAMMEE
        aegis -New_Change - add a new change to a project

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__CChhaannggee [ _n_u_m_b_e_r ] --FFiillee _a_t_t_r_-_f_i_l_e [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__CChhaannggee [ _n_u_m_b_e_r ] --EEddiitt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__CChhaannggee --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__CChhaannggee --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___C_h_a_n_g_e command is used to add a new change to a
        project.  See _a_e_c_a_t_t_r(5) for information on the format of the _a_t_t_r_-
        _f_i_l_e.

        The change is created in the _a_w_a_i_t_i_n_g _d_e_v_e_l_o_p_m_e_n_t state.  The change
        is not assigned to any user.  The change has no development directory.
                                      |
                            new       |new
                           change     |change
                            undo      |
                                  awaiting
                                 development
                                      |
                           develop    |develop
                           begin      |begin
                           undo       |
                                    being
                                  developed



        You may choose your own change number if you want, provided that it
        has not been used already.  If you do not specify a change number,
        aegis will allocate the lowest unused change number.  The first few
        change numbers are reserved for branches later in the project, and so
        automatically allocated change numbers will usually not start from 1.
        See _a_e_p_a(1) and _a_e_p_a_t_t_r(5) for more information.

        You mmuusstt give the --PPrroojjeecctt option, see below.

   NNoottiiffiiccaattiioonn
        This is one of the rare "state transitions" which does not have a
        notification command.  The assumption is this command is invoked by
        the system which usually receives notifications.

OOPPTTIIOONNSS
        The following options are understood:

        --EEddiitt
                Edit the attributes with a text editor, this is usually more
                convenient than supplying a text file.  The _V_I_S_U_A_L and then
                _E_D_I_T_O_R environment variables are consulted for the name of the
                editor to use; defaults to _v_i(1) if neither is set.  See the
                _v_i_s_u_a_l___c_o_m_m_a_n_d and _e_d_i_t_o_r___c_o_m_m_a_n_d fields in _a_e_u_c_o_n_f(1) for how
                to override this specifically for Aegis.

                Warning: Aegis tries to be well behaved when faced with
                errors, so the temporary file is left in your home directory
                where you can edit it further and re-use it with a --ffiillee
                option.

                The --eeddiitt option may not be used in the background, or when
                the standard input is not a terminal.

        --EEddiitt__BBaacckkGGrroouunndd
                Edit the attributes with a dumb text editor, this is most
                often desired when edit commands are being piped into the
                editor via the standard input.  Only the EEDDIITTOORR environment
                variable is consulted for the name of the editor to use; it is
                a fatal error if it is not set.  See the _e_d_i_t_o_r___c_o_m_m_a_n_d field
                in _a_e_u_c_o_n_f(1) for how to override this specifically for Aegis.

        --FFiillee _f_i_l_e_n_a_m_e
                Take the attributes from the specified file.  The filename `-'
                is understood to mean the standard input.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify a filename which is to be
                written with the automatically determined change number.
                Useful for writing scripts.

        --PPrroojjeecctt _n_a_m_e
                This option is used to select the project for the new change.

                You mmuusstt supply the --PPrroojjeecctt option to this command.
                Experience has shown that when a site has a number of active
                projects or several active branches on a project, new changes
                are frequently created against the wrong project or the wrong
                branch.  Making the project explicit reduces this problem.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aenc 'aegis -nc \!* -v'
        sh$     aenc(){aegis -nc "$@" -v}

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        project.  (In some cases it is possible for developers of a project to
        create changes, see _a_e_p_a_t_t_r(5) for more information.)

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _t_k_a_e_n_c(1)
                GUI interface to the _a_e_n_c(1) command.

        _a_e_c_a(1) modify the attributes of a change

        _a_e_d_b(1) begin development of a change

        _a_e_n_a(1) add a new administrator to a project

        _a_e_n_c_u(1)
                remove a new change from a project

        _a_e_n_p_r(1)
                create a new project

        _a_e_p_a(1) modify the attributes of a project

        _a_e_c_a_t_t_r(5)
                change attributes file format

        _a_e_p_a_t_t_r(5)
                project attributes file format

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_Change_Undo(1)                            aegis -New_Change_Undo(1)



NNAAMMEE
        aegis -New_Change_Undo - remove a new change from a project

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__CChhaannggee__UUnnddoo [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__CChhaannggee__UUnnddoo --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__CChhaannggee__UUnnddoo --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___C_h_a_n_g_e___U_n_d_o command is used to remove a new change from
        a project.

        It wasn't called _'_a_e_g_i_s _-_R_e_m_o_v_e___C_h_a_n_g_e_' in order to emphasize that
        fact the the change must be in the _a_w_a_i_t_i_n_g _d_e_v_e_l_o_p_m_e_n_t state.  In
        practice it is possible, with a combination of commands, to remove any
        change which has not reached the _c_o_m_p_l_e_t_e_d
                                      |
                            new       |new
                           change     |change
                            undo      |
                                  awaiting
                                 development
                                      |
                           develop    |develop
                           begin      |begin
                           undo       |
                                    being
                                  developed


        state.

        In general, only project administrators may destroy changes.  However,
        if the project _d_e_v_e_l_o_p_e_r_s___m_a_y___c_r_e_a_t_e___c_h_a_n_g_e_s attribute is true, and
        you are a developer and you created a particular change, you may also
        destroy it.

   NNoottiiffiiccaattiioonn
        This is one of the rare "state transitions" which does not have a
        notification command.  The assumption is this command is invoked by
        the system which usually receives notifications.  It's probably a bad
        assumption.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aencu 'aegis -ncu \!* -v'
        sh$     aencu(){aegis -ncu "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _a_w_a_i_t_i_n_g _d_e_v_e_l_o_p_m_e_n_t state.
        It is an error if any use other than a project administrator or the
        creator of the change attempts to run this command.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_c(1) add a new change to a project

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_Developer(1)                                aegis -New_Developer(1)



NNAAMMEE
        aegis -New_Developer - add new developers to a project

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__DDeevveellooppeerr _u_s_e_r_-_n_a_m_e...  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__DDeevveellooppeerr --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__DDeevveellooppeerr --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___D_e_v_e_l_o_p_e_r command is used to add new developers to a
        project.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --DDeesscceenndd__PPrroojjeecctt__TTrreeee
                This option may be used to request that the command should be
                applied to the project and all its branches and sub-branches.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aend 'aegis -nd \!* -v'
        sh$     aend(){aegis -nd "$@" -v}

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        project.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_r_d(1) remove developers from a project

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_File(1)                                          aegis -New_File(1)



NNAAMMEE
        aegis -New_File - add new files to be created by a change

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__FFiillee _f_i_l_e_-_n_a_m_e...  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__FFiillee --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__FFiillee --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___F_i_l_e command is used to add new files to a change.  The
        named files will be added to the list of files in the change.

        For each file named, a new file is created in the development
        directory, if it does not exist already.  If the file already exists,
        it will not be altered.

        If you name a directory on the command line, the entire directory tree
        will be searched for new files.  (Note: absolutely everything will be
        added, including dot files and binary files, so you will need to clean
        out any junk first.)

        If you want a new source file to be executable (shell scripts, for
        example) then you simply use the normal _c_h_m_o_d(1) command.  If any of
        the file's executable bits are set at _a_e_d_e(1) time the file is
        remembered as executable and all execute bits (minus the project's
        umask) will be set by subsequent _a_e_c_p(1) commands.

   FFiillee TTeemmppllaatteess
        When a new file is created in the development directory the project
        _c_o_n_f_i_g file is searched for a template for the new file.  If a
        template is found, the new file will be initialized to the template,
        otherwise it will be created empty.  See _a_e_p_c_o_n_f(5) for more
        information.

        The simplest form is to use template files, such as
                file_template =
                [
                        {
                                pattern = [ "*.c" ];
                                body = "${read_file ${source template/c abs}}";
                        },
                        {
                                pattern = [ "test/*/.sh" ];
                                body = "${read_file ${source template/test abs}}";
                        },
                ];
        As you can see, the template files are part of the project source, so
        you can add the appropriate copyright notices, and wrappers, _e_t_c.  The
        _$_s_o_u_r_c_e substitution locates them, if they are not part of the current
        change (and they usually are not).

        The template files themselves contain substitutions.  The _$_f_i_l_e_n_a_m_e
        substitution is available, and contains the name of the file being
        created.  This can be manipulated in various ways when constructing
        the appropriate file contents.  See _a_e_s_u_b(5) for more information
        about substitutions.

        It is also possible to run a command to create the new file.  You can
        do this instead of specifying a body string, _v_i_z_:
                file_template =
                [
                        {
                                pattern = [ "*" ];
                                body_command = "perl ${source template.pl abs} $filename";
                        },
                ];
        The command is run with a current directory set to the top of the
        development directory.  It is an error if the command fails to create
        the file.  You can mix-and-match the two techniques, _b_o_d_y string and
        _b_o_d_y___c_o_m_m_a_n_d, if you want.

   FFiillee NNaammee LLiimmiittaattiioonnss
        There are a number of controls available to limit the form of project
        file names.  All of these controls may be found in the project
        configuration file, see _a_e_p_c_o_n_f(5) for more information.  The most
        significant are briefly described here:

        maximum_filename_length = integer;
                This field is used to limit the length of filenames.  All new
                files may not have path components longer than this.  Defaults
                to 255 if not set.  For maximum portability you should set
                this to 14.

        posix_filename_charset = boolean;
                This field may be used to limit the characters allowed in
                filenames to only those explicitly allowed by POSIX.  Defaults
                to _f_a_l_s_e if not set, meaning whatever your operating system
                will tolerate, except white space and high-bit-on characters.
                For maximum portability you should set this to _t_r_u_e.

        dos_filename_required = boolean;
                This field may be used to limit filenames so that they conform
                to the DOS 8+3 filename limits and to the DOS filename
                character set.  Defaults to _f_a_l_s_e if not set.

        windows_filename_required = boolean;
                This field may be used to limit filenames so that they conform
                to the Windows98 and WindowsNT filename limits and character
                set.  Defaults to _f_a_l_s_e if not set.

        shell_safe_filenames = boolean;
                This field may be used to limit filenames so that they do not
                contain shell special characters.  Defaults to _t_r_u_e if not
                set.  If this field is set to _f_a_l_s_e, you will need to use the
                _$_{_q_u_o_t_e_} substitution around filenames in commands, to ensure
                that filenames containing shell special characters do not have
                unintended side effects.  Weird characters in filenames may
                also confuse your dependency maintenance tool.

        filename_pattern_accept = [ string ];
                This field is used to specify a list of patterns of acceptable
                filenames.  Defaults to "*" if not set.

        filename_pattern_reject = [ string ];
                This field is used to specify a list of patterns of
                unacceptable filenames.

        PPlleeaassee NNoottee:: Aegis also consults the underlying file system, to
        determine its notion of maximum file size.  Where the file system's
        maximum file size is less than _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h, 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 _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h 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
        filesystems 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 _c_o_n_f_i_g 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 environments.

        If your development directories are routinely on a Linux UMSDOS
        filesystem, you would probably be better off setting
        _d_o_s___f_i_l_e_n_a_m_e___r_e_q_u_i_r_e_d _= _t_r_u_e, and also changing the
        _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___t_e_m_p_l_a_t_e field.  Heterogeneous development with
        various Windows environments may also require this.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   CChhaannggiinngg tthhee TTyyppee ooff aa FFiillee
        If you want to change the type of a file (say, from a test to a source
        file, or _v_i_c_e _v_e_r_s_a) you could do it as two changes, by first using
        _a_e_r_m(1) in one change and then using _a_e_n_f(1) or _a_e_n_t(1) in a second
        change, or you can combine both steps in the same change.  Remember to
        use the _a_e_r_m _-_n_o_w_h_i_t_e_o_u_t option or you will get a most peculiar new
        file template.

   NNoottiiffiiccaattiioonn
        The _n_e_w___f_i_l_e___c_o_m_m_a_n_d in the project configuration file is run, if set.
        The _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set, and if there has been an
        integration recently.  See _a_e_p_c_o_n_f(5) for more information.

TTEESSTT CCOORRRREELLAATTIIOONNSS
        The ``aegis -Test -SUGgest'' command may be used to have aegis suggest
        suitable regression tests for your change, based on the source files
        in your change.  This automatically focuses testing effort to relevant
        tests, reducing the number of regression tests necessary to be
        confident that you have not introduced a bug.

        The test correlations are generated by the ``aegis -Integrate_Pass''
        command, which associates each test in the change with each source
        file in the change.  Thus, each source file accumulates a list of
        tests which have been associated with it in the past.  This is not as
        exact as code coverage analysis, but is a reasonable approximation in
        practice.

        The _a_e_c_p(1) and _a_e_n_f(1) commands are used to associate files with a
        change.  While they do not actively perform the association, these are
        the files used by _a_e_i_p_a_s_s(1) and _a_e_t(1) to determine which source
        files are associated with which tests.

   TTeesstt CCoorrrreellaattiioonn AAccccuurraaccyy
        Assuming that the testing correlations are accurate and that the tests
        are evenly distributed across the function space, there will be a less
        than _1_/_n_u_m_b_e_r chance that a relevant test has not been run by the
        ``aegis -Test -SUGgest _n_u_m_b_e_r'' command.  A small amount of noise is
        added to the test weighting, so that unexpected things are sometimes
        tested, and the same tests are not run every time.

        Test correlation accuracy can be improved by ensuring that:

        +o Each change should be strongly focused, with no gratuitous file
          inclusions.  This avoids spurious correlations.

        +o Each item of new functionality should be added in an individual
          change, rather than several together.  This strongly correlates
          tests with functionality.

        +o Each bug should be fixed in an individual change, rather than
          several together.  This strongly correlates tests with
          functionality.

        +o Test correlations will be lost if files are moved.  This is because
          correlations are by name.

        The best way for tests to correlate accurately with source files is
        when a change contains a test and exactly those files relating to the
        functionality under test.  Too many spurious files will weaken the
        usefulness of the testing correlations.

OOPPTTIIOONNSS
        The following options are understood

        --BBuuiilldd
                This option may be used to specify that the file is
                constructed during a build (often only an integrate build), so
                that history of it may be kept.  This is useful for generating
                patch files, where a history of generated files is important.
                Files created in this way may not be copied into a change,
                though they may be deleted.  Avoid using files of this type,
                if at all possible.

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --CCOONNFFIIGGuurreedd
                This option may be used to specify that the file is an Aegis
                project configuration file.  The default project configuration
                file is called _a_e_g_i_s_._c_o_n_f, however any file name may be used.
                You may also use more than one file, splitting the content
                across several files, all of which must be of this type.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --NNoott__LLooggggiinngg
                This option may be used to disable the automatic logging of
                output and errors to a file.  This is often useful when
                several aegis commands are combined in a shell script.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEEMMppllaattee
                This option may be used to specify that a new file template
                should be used, even if the file already exists.

        --NNoo__TTEEMMppllaattee
                This option may be used to specify that a new file template
                should not be used, even if the file does not exist (any empty
                file will be created).

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aenf 'aegis -nf \!* -v'
        sh$     aenf(){aegis -nf "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the change is not assigned to the current user.
        It is an error if the file is already part of the change.
        It is an error if the file is already part of the baseline.
        It is an error if the files named on the command line are not normal
        files and not directories.  (If you need symbolic links or special
        files, create them at build time.)

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_p(1) copy files into a change

        _a_e_d_b(1) begin development of a change

        _a_e_m_v(1) rename a file as part of a change

        _a_e_n_f_u(1)
                remove new files from a change

        _a_e_n_t(1) add new tests to a change

        _a_e_r_m(1) add files to be deleted by a change

        _a_e_p_c_o_n_f(5)
                project configuration file format

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_File_Undo(1)                                aegis -New_File_Undo(1)



NNAAMMEE
        aegis -New_File_Undo - remove new files from a change

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__FFiillee__UUnnddoo _f_i_l_e_-_n_a_m_e...  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__FFiillee__UUnnddoo --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__FFiillee__UUnnddoo --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___F_i_l_e___U_n_d_o command is used to remove new files from a
        change (reverse the actions of the 'aegis -New_File' command).  The
        file is removed from the list of files in the change.

        The file is removed from the development directory unless the --KKeeeepp
        option is used.  The --KKeeeepp option should be used with great care, as
        you can confuse tools such as _m_a_k_e(1) by leaving these files in place.

        You may specify a directory name to remove all new files in the named
        directory tree, other files in the tree will be ignored.  It is an
        error if there are no relevant files.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   NNoottiiffiiccaattiioonn
        The _n_e_w___f_i_l_e___u_n_d_o___c_o_m_m_a_n_d in the project _c_o_n_f_i_g file is run, if set.
        The _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set, and if there has been an
        integration recently.  See _a_e_p_c_o_n_f(5) for more information.

   PPrroocceessss SSiiddee EEffffeeccttss
        This command will cancel any build or test registrations, because
        deleting a file logically invalidates them.

        The difference file (,D) will also be removed, however any DMT derived
        files (e.g a .o file from a .c file) will not be removed.  This is
        because aegis is decoupled from the DMT, and cannot know what these
        derived file may be called.  You may need to delete derived files
        manually.

OOPPTTIIOONNSS
        The following options are understood:

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --IInntteerraaccttiivvee
                Specify that aegis should ask the user for confirmation before
                deleting each file.  Answer the question _y_e_s to delete the
                file, or _n_o to keep the file.  You can also answer _a_l_l to
                delete the file and all that follow, or _n_o_n_e to keep the file
                and all that follow.

                Defaults to the user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not
                specified, see _a_e_u_c_o_n_f(5) for more information.

                If aegis is running in the background, the question will not
                be asked, and the files will be deleted.

        --KKeeeepp
                This option may be used to retain files and/or directories
                usually deleted by the command.  Defaults to the user's
                _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for
                more information.

        --NNoo__KKeeeepp
                This option may be used to ensure that the files and/or
                directories are deleted by the command.  Defaults to the
                user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5)
                for more information.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --VVeerriiffyy__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that the symbolic links, or
                hard links, or file copies, in the work area be updated to
                reflect the current state of the baseline.  This is controlled
                by the _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field of the project
                configuration file.  Only files which are not involved in the
                change are updated.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if meaningful for your configuration.
                The name is an historical accident, hard links and file copies
                are included.

        --AAssssuummee__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that no update of baseline
                mirror files take place.  This options is useful when you
                _d_e_f_i_n_i_t_e_l_y _k_n_o_w the files' up-to-date-ness isn't important
                right now; incorrect use of this option may have unanticipated
                build side-effects.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if not meaningful for your
                configuration.  The name is an historical accident, hard links
                and file copies are included.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aenfu 'aegis -nfu \!$ -v'
        sh$     aenfu(){aegis -nfu "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the change is not assigned to the current user.
        It is an error if the file is not in the change.
        It is an error if the file was not added to the change with the 'aegis
        -New_File' command.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_f(1) add new files to a change

        _a_e_p_c_o_n_f(5)
                project configuration file format

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_Integrator(1)                              aegis -New_Integrator(1)



NNAAMMEE
        aegis -New_Integrator - add new integrators to a project

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__IInntteeggrraattoorr _u_s_e_r_-_n_a_m_e...  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__IInntteeggrraattoorr --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__IInntteeggrraattoorr --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___I_n_t_e_g_r_a_t_o_r command is used to add new integrators to a
        project.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --DDeesscceenndd__PPrroojjeecctt__TTrreeee
                This option may be used to request that the command should be
                applied to the project and all its branches and sub-branches.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aeni 'aegis -ni \!* -v'
        sh$     aeni(){aegis -ni "$@" -v}

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        project.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_r_i(1) remove integrators from a project

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_Project_Alias(1)                        aegis -New_Project_Alias(1)



NNAAMMEE
        aegis -New_Project_Alias - create a new project alias

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__PPrroojjeecctt__AAlliiaass [ _o_p_t_i_o_n...  ] _p_r_o_j_e_c_t_-_n_a_m_e _a_l_i_a_s_-_n_a_m_e
        aaeeggiiss --HHeellpp
        aaeeggiiss --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___P_r_o_j_e_c_t___A_l_i_a_s command is used to create a projects
        alias, so that branches of projects may be referred by a shorter or
        more specific name.

        The project name _m_u_s_t be given on the command line; the default
        project is not sufficient.  The project named may be a top-level
        project, or it may be a branch (to any depth of branch).

        The new alias name must also be given on the command line, and it must
        be the _s_e_c_o_n_d name.

   EExxaammppllee
        Aliases may be used in may ways.  The most common is to give a
        particular release a code name.  You would do this by saying
                aenpa example.4.2 sydney
        This would make ``sydney'' an alias for the ``example.4.2'' branch.

        Another use for aliases is to have a fixed alias for your active
        branch, so that your developer team does not need to change their
        default project, even though the branch number moves on for each
        release.  You could say
                aenpa example.4.2 example.cur
        This would make ``example.cur'' an alias for the ``example.4.2''
        branch.  When this was finished, and 4.3 started, a project
        administrator could say
                aerpa example.cur
                aenpa example.4.3 example.cur
        Now ``example.cur'' is an alias for the ``example.4.3'' branch, but
        the developers need only reference ``example.cur'' to always work on
        the right branch.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EERRRROORRSS
        It is an error if the old project does not exist.
        It is an error if the current user is not a project administrator.
        It is an error if the new alias name look like a branch name.
        It is an error if the new alias contains unprintable characters.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_r_p_a(1)
                Remove project alias.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_PRoject(1)                                    aegis -New_PRoject(1)



NNAAMMEE
        aegis -New_PRoject - create a new project

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__PPRRoojjeecctt _p_r_o_j_e_c_t_-_n_a_m_e [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__PPRRoojjeecctt --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__PPRRoojjeecctt --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___P_R_o_j_e_c_t command is used to create a new project.  The
        project is created as an empty directory structure with no staff
        except the administrator, no changes, and branches to implement the
        version specified.

        Please note: unless you specify a version (see the --vveerrssiioonn option,
        below) this command will default to creating branches to support
        version 1.0.  If you discovered this too late, all is not lost: you
        can use the _a_e_n_b_r_u(1) command to get rid of the branches you didn't
        want.

   DDiirreeccttoorryy
        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 --DDIIRReeccttoorryy option is not given, the project directory will be
        created in the directory specified by the default_project_directory
        field of _a_e_u_c_o_n_f(5), or if not set in current user's home directory;
        in either case with the same name as the project.

   SSttaaffff
        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 developers, reviewers, integrators or other
        administrators.  The project's umask is derived from the current
        user's umask, but guaranteeing that group members will have access and
        that only the project owner will have write access.

   PPooiinntteerr
        The project pointer will be added to the first element of the search
        path, or _/_v_a_r_/_l_i_b_/_a_e_g_i_s if no path is set.  If this is inappropriate,
        use the --LLIIBBrraarryy option to explicitly set the desired location.  See
        the --LLIIBBrraarryy option for more information.

   VVeerrssiioonn
        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,
           ``aenpr 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, ``aenpr example
           -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 --vveerrssiioonn with a single dash as
        the argument, as in ``-version -''

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

   PPrroojjeecctt DDiirreeccttoorryy LLooccaattiioonn
        PPlleeaassee NNoottee:: Aegis also consults the underlying file system, to
        determine its notion of maximum file size.  Where the file system's
        maximum file size is less than _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h, 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 _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h 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
        filesystems 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 _c_o_n_f_i_g 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 environments.

        If your development directories are routinely on a Linux UMSDOS
        filesystem, you would probably be better off setting
        _d_o_s___f_i_l_e_n_a_m_e___r_e_q_u_i_r_e_d _= _t_r_u_e, and also changing the
        _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___t_e_m_p_l_a_t_e field.  Heterogeneous development with
        various Windows environments may also require this.

OOPPTTIIOONNSS
        The following options are understood:

        --DDIIRReeccttoorryy _p_a_t_h
                This option may be used to specify which directory is to be
                used.  It is an error if the current user does not have
                appropriate 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.

        --EEddiitt
                Edit the attributes with a text editor, this is usually more
                convenient than supplying a text file.  The _V_I_S_U_A_L and then
                _E_D_I_T_O_R environment variables are consulted for the name of the
                editor to use; defaults to _v_i(1) if neither is set.  See the
                _v_i_s_u_a_l___c_o_m_m_a_n_d and _e_d_i_t_o_r___c_o_m_m_a_n_d fields in _a_e_u_c_o_n_f(1) for how
                to override this specifically for Aegis.

                Warning: Aegis tries to be well behaved when faced with
                errors, so the temporary file is left in your home directory
                where you can edit it further and re-use it with a --ffiillee
                option.

                The --eeddiitt option may not be used in the background, or when
                the standard input is not a terminal.

        --EEddiitt__BBaacckkGGrroouunndd
                Edit the attributes with a dumb text editor, this is most
                often desired when edit commands are being piped into the
                editor via the standard input.  Only the EEDDIITTOORR environment
                variable is consulted for the name of the editor to use; it is
                a fatal error if it is not set.  See the _e_d_i_t_o_r___c_o_m_m_a_n_d field
                in _a_e_u_c_o_n_f(1) for how to override this specifically for Aegis.

        --FFiillee _f_i_l_e_n_a_m_e
                Take the attributes from the specified file.  The filename `-'
                is understood to mean the standard input.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --KKeeeepp   This option may be used to re-attach a project detached using
                _a_e_r_m_p_r _-_k_e_e_p and possibly moved by the system administrator.

        --LLIIBBrraarryy _a_b_s_p_a_t_h
                This option may be used to specify a directory to be searched
                for global state files and user state files.  (See _a_e_g_s_t_a_t_e(5)
                and _a_e_u_s_t_a_t_e(5) for more information.)  Several library
                options 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 _A_E_G_I_S___P_A_T_H environment
                variable (colon separated), and finally, _/_u_s_r_/_l_o_c_a_l_/_l_i_b_/_a_e_g_i_s
                is always searched.  All paths specified, either on the
                command line or in the _A_E_G_I_S___P_A_T_H environment variable, must
                be absolute.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --VVEERRSSiioonn _n_u_m_b_e_r
                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.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aenpr 'aegis -npr \!* -v'
        sh$     aenpr(){aegis -npr "$@" -v}

EERRRROORRSS
        It is an error if the project name already exists.
        It is an error if the project directory already exists.
        It is an error if the current user does not have sufficient
        permissions to create the directory specified with the --DDIIRReeccttoorryy
        option.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_a(1) add a new administrator to a project

        _a_e_n_b_r_u(1)
                Remove a new branch.  This can often be useful if _a_e_n_p_r(1)
                created some default branches for you, and now you want to get
                rid of them.

        _a_e_n_c(1) add a new change to a project

        _a_e_n_d(1) add a new developer to a project

        _a_e_n_r_l_s(1)
                create a new project from an existing project

        _a_e_n_r_v(1)
                add a new reviewer to a project

        _a_e_r_m_p_r(1)
                remove project

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_ReLeaSe(1)                                    aegis -New_ReLeaSe(1)



NNAAMMEE
        aegis -New_ReLeaSe - create a new project from an old-style project.

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__RReeLLeeaaSSee project-name [ _n_e_w_-_p_r_o_j_e_c_t_-_n_a_m_e ][ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__RReeLLeeaaSSee --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__RReeLLeeaaSSee --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___R_e_L_e_a_S_e command is used to create a new project from an
        existing project.  _I_t _c_r_e_a_t_e_s _a _n_e_w _p_o_s_t_-_3_._0 _p_r_o_j_e_c_t _f_r_o_m _a_n _o_l_d
        _p_r_e_-_3_._0 _p_r_o_j_e_c_t_.

        PPlleeaassee NNoottee:: If your old-style project does not have a version number
        in the project name, you _m_u_s_t supply a new project name, otherwise you
        will get an error.  (If you want to re-use the old project name, you
        need to rename the old project, and then use _a_e_n_r_l_s to create a new
        new-style project with the old name.  See the HOWTO for how to change
        a project's name.)

        This command was essential before the introduction of branches into
        the Aegis model.  It is more useful to create a new release of a
        project by ending development on the branch of the previous release
        and starting development of a new branch numbered for the desired
        release.

        Once you have a new-style project, use the _a_e_n_b_r(1) command to create
        new branches on this project.  This provides more efficient release
        management, and allows historical versions to be reproduced more
        simply.

        If no _n_e_w_-_p_r_o_j_e_c_t_-_n_a_m_e is specified, it will be derived from the
        project given as follows: any minor version dot suffix will be removed
        from the name, then any major version dot suffix will be removed from
        the name.  A major version dot suffix will be appended, and then a
        minor version dot suffix will be appended.  As an example, "foo.1.0"
        would become "foo.1.1" assuming the default minor version increment,
        and "foo" would become "foo.1.1" assuming the same minor version
        increment.

        The entire project baseline will be copied.  The project state will be
        as if change 1 had already been integrated, naming every file (in the
        old project) as a new file.  The history files will reflect this.  No
        build will be necessary; it is assumed that the old baseline was built
        successfully.  Change numbers will commence at 2, as will build
        numbers.  Test numbers will commence where the old project left off
        (because all the earlier test numbers were used by the old project).

        The default is for the minor version number to be incremented.  If the
        major version number is incremented or set, the minor version number
        will be set to zero if it is not explicitly given.

        The pointer to the new project will be added to the first element of
        the search path, or _/_v_a_r_/_l_i_b_/_a_e_g_i_s if none is set.  If this is
        inappropriate, use the --LLIIBBrraarryy option to explicitly set the desired
        location.  See the --LLIIBBrraarryy option for more information.

        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 --DDIIRReeccttoorryy option is not given, the project directory will be
        created in the directory specified by the default_project_directory
        field of the project user's _a_e_u_c_o_n_f(5), or if not set in project
        user's home directory; in either case with the same name as the
        project.

        All staff will be copied from the old project to the new project
        without change, as will all of the project attributes.

TTHHEE BBAASSEELLIINNEE LLOOCCKK
        The baseline lock is used to ensure that the baseline remains in a
        consistent state for the duration of commands which need to read the
        contents of files in the baseline.

        The commands which require the baseline to be consistent (these
        include the _a_e_b(1), _a_e_c_p(1) and _a_e_d(1) commands) take a baseline _r_e_a_d
        lock.  This is a non-exclusive lock, so the concurrent development of
        changes is not hindered.

        The command which modifies the baseline, _a_e_i_p_a_s_s(1), takes a baseline
        _w_r_i_t_e lock.  This is an exclusive lock, forcing _a_e_i_p_a_s_s(1) to block
        until there are no active baseline read locks.

        It is possible that one of the above development commands will block
        until an in-progress _a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___P_A_S_S completes.  This is usually
        of short duration while the project history is updated.  The delay is
        essential so that these commands receive a consistent view of the
        baseline.  No other integration command will cause the above
        development commands to block.

        When aegis' branch functionality is in use, a read (non-exclusive)
        lock is taken on the branch baseline and also each of the "parent"
        baselines.  However, a baseline write (exclusive) lock is only taken
        on the branch baseline; the "parent" baselines are only read (non-
        exclusive) locked.

   PPrroojjeecctt DDiirreeccttoorryy LLooccaattiioonn
        PPlleeaassee NNoottee:: Aegis also consults the underlying file system, to
        determine its notion of maximum file size.  Where the file system's
        maximum file size is less than _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h, 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 _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h 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
        filesystems 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 _c_o_n_f_i_g 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 environments.

        If your development directories are routinely on a Linux UMSDOS
        filesystem, you would probably be better off setting
        _d_o_s___f_i_l_e_n_a_m_e___r_e_q_u_i_r_e_d _= _t_r_u_e, and also changing the
        _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___t_e_m_p_l_a_t_e field.  Heterogeneous development with
        various Windows environments may also require this.

OOPPTTIIOONNSS
        The following options are understood:

        --DDIIRReeccttoorryy _p_a_t_h
                This option may be used to specify which directory is to be
                used.  It is an error if the current user does not have
                appropriate 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.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLIIBBrraarryy _a_b_s_p_a_t_h
                This option may be used to specify a directory to be searched
                for global state files and user state files.  (See _a_e_g_s_t_a_t_e(5)
                and _a_e_u_s_t_a_t_e(5) for more information.)  Several library
                options 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 _A_E_G_I_S___P_A_T_H environment
                variable (colon separated), and finally, _/_u_s_r_/_l_o_c_a_l_/_l_i_b_/_a_e_g_i_s
                is always searched.  All paths specified, either on the
                command line or in the _A_E_G_I_S___P_A_T_H environment variable, must
                be absolute.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --NNoott__LLooggggiinngg
                This option may be used to disable the automatic logging of
                output and errors to a file.  This is often useful when
                several aegis commands are combined in a shell script.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --VVEERRSSiioonn _n_u_m_b_e_r
                This option may be used to specify the version number for the
                project.  Version number are implemented as branches.  Use the
                empty string as the argument if you want no version branches
                created.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aenrls 'aegis -nrls \!* -v'
        sh$     aenrls(){aegis -nrls "$@" -v}

EERRRROORRSS
        It is an error if the old project named does not exist.

        It is an error if the old project named has not yet had any changes
        integrated.

        It is an error if the old project named has any changes not in the
        _c_o_m_p_l_e_t_e_d state.

        It is an error if the current user is not an administrator of the old
        project.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_p_r(1)
                create a new project

        _a_e_r_m_p_r(1)
                remove project

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/

        _A_e_g_i_s _U_s_e_r _G_u_i_d_e
                The chapter on _B_r_a_n_c_h_i_n_g has useful information about releases
                and branching.



aegis -New_ReViewer(1)                                  aegis -New_ReViewer(1)



NNAAMMEE
        aegis -New_ReViewer - add new reviewers to a project

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__RReeVViieewweerr _u_s_e_r_-_n_a_m_e...  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__RReeVViieewweerr --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__RReeVViieewweerr --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___R_e_V_i_e_w_e_r command is used to add new reviewers to a
        project.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --DDeesscceenndd__PPrroojjeecctt__TTrreeee
                This option may be used to request that the command should be
                applied to the project and all its branches and sub-branches.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aenrv 'aegis -nrv \!* -v'
        sh$     aenrv(){aegis -nrv "$@" -v}

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        project.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_r_r_v(1)
                remove reviewers from a project

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_Test(1)                                          aegis -New_Test(1)



NNAAMMEE
        aegis -New_Test - add a new test to a change

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__TTeesstt [ _o_p_t_i_o_n...  ][ _f_i_l_e_n_a_m_e...  ]
        aaeeggiiss --NNeeww__TTeesstt --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__TTeesstt --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___T_e_s_t command is used to add a new test to a change.  A
        new file is created in the development directory.

        New tests default to ``automatic'' unless otherwise specified.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   TTeesstt FFiilleennaammee GGeenneerraattiioonn
        You may choose your own filename for a test, by specifying it on the
        command line.

        If no filename is specified on the command line, a test filename is
        automatically generated.  This is controlled by the _n_e_w___t_e_s_t___f_i_l_e_n_a_m_e
        field of the project configuration file (see _a_e_p_c_o_n_f(5) for more
        information.  All automatically generated test filenames within a
        project are numbered uniquely.  The default pattern for new test
        filenames is "_t_e_s_t_/_X_X_/_t_X_X_X_X_[_a_m_]_._s_h", where _X_X is the first 2 digits of
        the test number, _X_X_X_X is the whole test number, and _[_a_m_] is a for
        automatic tests and m for manual tests.

   MMooddiiffyyiinngg TTeessttss
        Tests may be modified in future by adding them to a change with the
        _a_e_c_p(1) command.  Tests are treated just like any other source file,
        and are subject to the same process.

   FFiillee TTeemmppllaatteess
        When a new file is created in the development directory the project
        _c_o_n_f_i_g file is searched for a template for the new file.  If a
        template is found, the new file will be initialized to the template,
        otherwise it will be created empty.  See _a_e_p_c_o_n_f(5) for more
        information.

        The simplest form is to use template files, such as
                file_template =
                [
                        {
                                pattern = [ "*.c" ];
                                body = "${read_file ${source template/c abs}}";
                        },
                        {
                                pattern = [ "test/*/.sh" ];
                                body = "${read_file ${source template/test abs}}";
                        },
                ];
        As you can see, the template files are part of the project source, so
        you can add the appropriate copyright notices, and wrappers, _e_t_c.  The
        _$_s_o_u_r_c_e substitution locates them, if they are not part of the current
        change (and they usually are not).

        The template files themselves contain substitutions.  The _$_f_i_l_e_n_a_m_e
        substitution is available, and contains the name of the file being
        created.  This can be manipulated in various ways when constructing
        the appropriate file contents.  See _a_e_s_u_b(5) for more information
        about substitutions.

        It is also possible to run a command to create the new file.  You can
        do this instead of specifying a body string, _v_i_z_:
                file_template =
                [
                        {
                                pattern = [ "*" ];
                                body_command = "perl ${source template.pl abs} $filename";
                        },
                ];
        The command is run with a current directory set to the top of the
        development directory.  It is an error if the command fails to create
        the file.  You can mix-and-match the two techniques, _b_o_d_y string and
        _b_o_d_y___c_o_m_m_a_n_d, if you want.

        Be careful to make sure that the test filename template pattern
        matches the _n_e_w___t_e_s_t___f_i_l_e_n_a_m_e field.

   FFiillee NNaammee LLiimmiittaattiioonnss
        There are a number of controls available to limit the form of project
        file names.  All of these controls may be found in the project
        configuration file, see _a_e_p_c_o_n_f(5) for more information.  The most
        significant are briefly described here:

        maximum_filename_length = integer;
                This field is used to limit the length of filenames.  All new
                files may not have path components longer than this.  Defaults
                to 255 if not set.  For maximum portability you should set
                this to 14.

        posix_filename_charset = boolean;
                This field may be used to limit the characters allowed in
                filenames to only those explicitly allowed by POSIX.  Defaults
                to _f_a_l_s_e if not set, meaning whatever your operating system
                will tolerate, except white space and high-bit-on characters.
                For maximum portability you should set this to _t_r_u_e.

        dos_filename_required = boolean;
                This field may be used to limit filenames so that they conform
                to the DOS 8+3 filename limits and to the DOS filename
                character set.  Defaults to _f_a_l_s_e if not set.

        windows_filename_required = boolean;
                This field may be used to limit filenames so that they conform
                to the Windows98 and WindowsNT filename limits and character
                set.  Defaults to _f_a_l_s_e if not set.

        shell_safe_filenames = boolean;
                This field may be used to limit filenames so that they do not
                contain shell special characters.  Defaults to _t_r_u_e if not
                set.  If this field is set to _f_a_l_s_e, you will need to use the
                _$_{_q_u_o_t_e_} substitution around filenames in commands, to ensure
                that filenames containing shell special characters do not have
                unintended side effects.  Weird characters in filenames may
                also confuse your dependency maintenance tool.

        filename_pattern_accept = [ string ];
                This field is used to specify a list of patterns of acceptable
                filenames.  Defaults to "*" if not set.

        filename_pattern_reject = [ string ];
                This field is used to specify a list of patterns of
                unacceptable filenames.

        PPlleeaassee NNoottee:: Aegis also consults the underlying file system, to
        determine its notion of maximum file size.  Where the file system's
        maximum file size is less than _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h, 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 _m_a_x_i_m_u_m___f_i_l_e_n_a_m_e___l_e_n_g_t_h 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
        filesystems 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 _c_o_n_f_i_g 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 environments.

        If your development directories are routinely on a Linux UMSDOS
        filesystem, you would probably be better off setting
        _d_o_s___f_i_l_e_n_a_m_e___r_e_q_u_i_r_e_d _= _t_r_u_e, and also changing the
        _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___t_e_m_p_l_a_t_e field.  Heterogeneous development with
        various Windows environments may also require this.

   CChhaannggiinngg tthhee TTyyppee ooff aa FFiillee
        If you want to change the type of a file (say, from a test to a source
        file, or _v_i_c_e _v_e_r_s_a) you could do it as two changes, by first using
        _a_e_r_m(1) in one change and then using _a_e_n_f(1) or _a_e_n_t(1) in a second
        change, or you can combine both steps in the same change.  Remember to
        use the _a_e_r_m _-_n_o_w_h_i_t_e_o_u_t option or you will get a most peculiar new
        file template.

   NNoottiiffiiccaattiioonn
        The _n_e_w___t_e_s_t___c_o_m_m_a_n_d in the project _c_o_n_f_i_g file is run, if set.  The
        _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set, and if there has been an
        integration recently.  See _a_e_p_c_o_n_f(5) for more information.

TTEESSTT PPRROOCCEESSSS
        Each change is required to be accompanied by tests, and those tests
        are required to be run against the built development directory, and
        they must pass.  This ensures that new functionality is accompanied by
        tests to verify its correctness, and bug fixes are accompanied by
        tests which confirm that the bug has been fixed.

   RReeggrreessssiioonn TTeessttss
        Tests are treated as any other source file, and are maintained in the
        baseline and history with all other source files.  The tests which
        must accompany every change accumulate in the project baseline,
        providing a definition of correct function for the baseline.  These
        accumulated tests may be executed using an ``aegis -REGression''
        command, to verify that the project will not ``regress'' as a result
        of a change.

   BBaasseelliinnee TTeessttss
        Bug fixes are required to have their tests _f_a_i_l against the project
        baseline (in contrast to the development directory).  This ensures
        that the test actually demonstrates the bug in the baseline, as well
        as demonstrating that it is fixed by the change.  New functionality
        trivially fails against the baseline, and so aegis does not attempt to
        guess if a test is a bug fix test or new functionality test, it simply
        requires tests to fail against the baseline.

        This requirement applies both to new tests being created by a change
        and also to tests which have been copied into a change for
        modification.

   RReevviieewwiinngg TTeessttss
        Reviewers may be confident that aegis has enforced the test
        requirements; that a change must have tests, that the change must
        build, that the tests pass against the development directory, and that
        the tests fail against the baseline.  These conditions are enforced by
        _a_e_d_e(1) and the change will not be advanced to the _b_e_i_n_g _r_e_v_i_e_w_e_d
        state until these conditions are met.  Reviewers should thus review
        tests for _c_o_m_p_l_e_t_e_n_e_s_s of coverage of the code in the change, and
        insensitivity to changes in the execution environment (e.g. not date
        sensitive).  Reviewers should also use ``aegis -list change_details''
        to verify that a change does or does not have testing exemptions.

   EExxeemmppttiioonnss
        Various test exemptions may be granted by project administrators, see
        _a_e_p_a(1) and _a_e_p_a_t_t_r(5) for more information.  Copying tests into a
        change, or adding new tests to a change, may cancel those exemptions.

TTEESSTT CCOORRRREELLAATTIIOONNSS
        The ``aegis -Test -SUGgest'' command may be used to have aegis suggest
        suitable regression tests for your change, based on the source files
        in your change.  This automatically focuses testing effort to relevant
        tests, reducing the number of regression tests necessary to be
        confident that you have not introduced a bug.

        The test correlations are generated by the ``aegis -Integrate_Pass''
        command, which associates each test in the change with each source
        file in the change.  Thus, each source file accumulates a list of
        tests which have been associated with it in the past.  This is not as
        exact as code coverage analysis, but is a reasonable approximation in
        practice.

        The _a_e_c_p(1) and _a_e_n_f(1) commands are used to associate files with a
        change.  While they do not actively perform the association, these are
        the files used by _a_e_i_p_a_s_s(1) and _a_e_t(1) to determine which source
        files are associated with which tests.

   TTeesstt CCoorrrreellaattiioonn AAccccuurraaccyy
        Assuming that the testing correlations are accurate and that the tests
        are evenly distributed across the function space, there will be a less
        than _1_/_n_u_m_b_e_r chance that a relevant test has not been run by the
        ``aegis -Test -SUGgest _n_u_m_b_e_r'' command.  A small amount of noise is
        added to the test weighting, so that unexpected things are sometimes
        tested, and the same tests are not run every time.

        Test correlation accuracy can be improved by ensuring that:

        +o Each change should be strongly focused, with no gratuitous file
          inclusions.  This avoids spurious correlations.

        +o Each item of new functionality should be added in an individual
          change, rather than several together.  This strongly correlates
          tests with functionality.

        +o Each bug should be fixed in an individual change, rather than
          several together.  This strongly correlates tests with
          functionality.

        +o Test correlations will be lost if files are moved.  This is because
          correlations are by name.

        The best way for tests to correlate accurately with source files is
        when a change contains a test and exactly those files relating to the
        functionality under test.  Too many spurious files will weaken the
        usefulness of the testing correlations.

OOPPTTIIOONNSS
        The following options are understood;

        --AAUUTTOOmmaattiicc
                This option may be used to specify automatic tests.  Automatic
                tests require no human assistance.

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --MMAANNuuaall This option may be used to specify manual tests.  Manual tests
                require some human intervention,  e.g.: confirmation of some
                screen behavior (X11, for instance), or some user action,
                "unplug ethernet cable now".

        --NNoott__LLooggggiinngg
                This option may be used to disable the automatic logging of
                output and errors to a file.  This is often useful when
                several aegis commands are combined in a shell script.

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify a filename which is to be
                written with the automatically determined test file name.
                Useful for writing scripts.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEEMMppllaattee
                This option may be used to specify that a new file template
                should be used, even if the file already exists.

        --NNoo__TTEEMMppllaattee
                This option may be used to specify that a new file template
                should not be used, even if the file does not exist (any empty
                file will be created).

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aent 'aegis -nt \!* -v'
        sh$     aent(){aegis -nt "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the change is not assigned to the current user.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_p(1) copy an existing test into a change

        _a_e_d_b(1) begin development of a change

        _a_e_n_t_u(1)
                remove a new test from a change

        _a_e_r_m(1) remove an existing test as part of a change

        _a_e_t(1)  run tests

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -New_Test_Undo(1)                                aegis -New_Test_Undo(1)



NNAAMMEE
        aegis -New_Test_Undo - remove new tests from a change

SSYYNNOOPPSSIISS
        aaeeggiiss --NNeeww__TTeesstt__UUnnddoo _f_i_l_e_-_n_a_m_e...  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__TTeesstt__UUnnddoo --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --NNeeww__TTeesstt__UUnnddoo --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_N_e_w___T_e_s_t___U_n_d_o command is used to remove new tests from a
        change (reverse the actions of the 'aegis -New_Test' command).  The
        file is removed from the development directory.

        You may specify a directory name to remove all new tests in the named
        directory tree, other files in the tree will be ignored.  It is an
        error if there are no relevant files.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   NNoottiiffiiccaattiioonn
        The _n_e_w___t_e_s_t___u_n_d_o___c_o_m_m_a_n_d in the project _c_o_n_f_i_g file is run, if set.
        The _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set, and if there has been an
        integration recently.  See _a_e_p_c_o_n_f(5) for more information.

   PPrroocceessss SSiiddee EEffffeeccttss
        This command will cancel any build or test registrations, because
        deleting a file logically invalidates them.

OOPPTTIIOONNSS
        The following options are understood:

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --IInntteerraaccttiivvee
                Specify that aegis should ask the user for confirmation before
                deleting each file.  Answer the question _y_e_s to delete the
                file, or _n_o to keep the file.  You can also answer _a_l_l to
                delete the file and all that follow, or _n_o_n_e to keep the file
                and all that follow.

                Defaults to the user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not
                specified, see _a_e_u_c_o_n_f(5) for more information.

                If aegis is running in the background, the question will not
                be asked, and the files will be deleted.

        --KKeeeepp
                This option may be used to retain files and/or directories
                usually deleted by the command.  Defaults to the user's
                _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for
                more information.

        --NNoo__KKeeeepp
                This option may be used to ensure that the files and/or
                directories are deleted by the command.  Defaults to the
                user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5)
                for more information.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --NNoott__LLooggggiinngg
                This option may be used to disable the automatic logging of
                output and errors to a file.  This is often useful when
                several aegis commands are combined in a shell script.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --VVeerriiffyy__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that the symbolic links, or
                hard links, or file copies, in the work area be updated to
                reflect the current state of the baseline.  This is controlled
                by the _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field of the project
                configuration file.  Only files which are not involved in the
                change are updated.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if meaningful for your configuration.
                The name is an historical accident, hard links and file copies
                are included.

        --AAssssuummee__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that no update of baseline
                mirror files take place.  This options is useful when you
                _d_e_f_i_n_i_t_e_l_y _k_n_o_w the files' up-to-date-ness isn't important
                right now; incorrect use of this option may have unanticipated
                build side-effects.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if not meaningful for your
                configuration.  The name is an historical accident, hard links
                and file copies are included.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aentu 'aegis -ntu \!$ -v'
        sh$     aentu(){aegis -ntu "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the change is not assigned to the current user.
        It is an error if the file is not in the change.
        It is an error if the file was not added to the change with the 'aegis
        -New_Test' command.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_t(5) add a new test to a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Project_Attributes(1)                      aegis -Project_Attributes(1)



NNAAMMEE
        aegis -Project_Attributes - modify the attributes of a project

SSYYNNOOPPSSIISS
        aaeeggiiss --PPrroojjeecctt__AAttttrriibbuutteess _a_t_t_r_-_f_i_l_e [ _o_p_t_i_o_n...  ]
        aaeeggiiss --PPrroojjeecctt__AAttttrriibbuutteess --EEddiitt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --PPrroojjeecctt__AAttttrriibbuutteess --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --PPrroojjeecctt__AAttttrriibbuutteess --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_P_r_o_j_e_c_t___A_t_t_r_i_b_u_t_e_s command is used to set, edit or list the
        attributes of a project.

        The output of the --LLiisstt variant is suitable for use as input at a
        later time.

        See _a_e_p_a_t_t_r(5) for a description of the file format.

OOPPTTIIOONNSS
        The following options are understood:

        --EEddiitt
                Edit the attributes with a text editor, this is usually more
                convenient than supplying a text file.  The _V_I_S_U_A_L and then
                _E_D_I_T_O_R environment variables are consulted for the name of the
                editor to use; defaults to _v_i(1) if neither is set.  See the
                _v_i_s_u_a_l___c_o_m_m_a_n_d and _e_d_i_t_o_r___c_o_m_m_a_n_d fields in _a_e_u_c_o_n_f(1) for how
                to override this specifically for Aegis.

                Warning: Aegis tries to be well behaved when faced with
                errors, so the temporary file is left in your home directory
                where you can edit it further and re-use it with a --ffiillee
                option.

                The --eeddiitt option may not be used in the background, or when
                the standard input is not a terminal.

        --EEddiitt__BBaacckkGGrroouunndd
                Edit the attributes with a dumb text editor, this is most
                often desired when edit commands are being piped into the
                editor via the standard input.  Only the EEDDIITTOORR environment
                variable is consulted for the name of the editor to use; it is
                a fatal error if it is not set.  See the _e_d_i_t_o_r___c_o_m_m_a_n_d field
                in _a_e_u_c_o_n_f(1) for how to override this specifically for Aegis.

        --FFiillee _f_i_l_e_n_a_m_e
                Take the attributes from the specified file.  The filename `-'
                is understood to mean the standard input.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --DDeesscceenndd__PPrroojjeecctt__TTrreeee
                This option may be used to request that the command should be
                applied to the project and all its branches and sub-branches.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aepa 'aegis -pa \!* -v'
        sh$     aepa(){aegis -pa "$@" -v}

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        specified project.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _t_k_a_e_p_a(1)
                Graphical interface to the _a_e_p_a(1) command.

        _a_e_c_a(1) modify the attributes of a change

        _a_e_p_a_t_t_r(5)
                project attribute file format

        _a_e_p_s_t_a_t_e(5)
                project state file format

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aepatch(1)                                                          aepatch(1)



NNAAMMEE
        aepatch - send and receive changes as patches

SSYYNNOOPPSSIISS
        aaeeppaattcchh --sseenndd [ _o_p_t_i_o_n...  ]
        aaeeppaattcchh --rreecceeiivvee [ _o_p_t_i_o_n...  ]
        aaeeppaattcchh --lliisstt [ _o_p_t_i_o_n...  ]
        aaeeppaattcchh --HHeellpp
        aaeeppaattcchh --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_p_a_t_c_h command is used to send Aegis changes as patches, or
        receive patches and turn them into Aegis changes.

        Please note that this only works for text files.  If your project uses
        binary files, the _a_e_p_a_t_c_h program will not be useful because the
        _d_i_f_f(1) and _p_a_t_c_h(1) commands only work on text files.  Also, this
        only works for files with names which do not contain white space.

        If you need to merge matches together, you could use the GNU patch
        utils, which include a tool to merge patches together.

SSEENNDD
        The send variant takes a specified change and constructs a patch
        containing all of the changes to all of the files in that change.  The
        result is compressed, and encoded into a text format which can be sent
        as e-mail without being corrupted by the mail transfer agents along
        the way.

        The output of the _a_e_p_a_t_c_h _-_s_e_n_d command is a normal Unix patch, as you
        would produce using _d_i_f_f(1), _g_z_i_p(1) and a MIME encoder such as
        _m_p_a_c_k(1).  There are no special formats.  The output can be
        uncompressed with the normal _g_u_n_z_i_p(1) command and applied with the
        normal _p_a_t_c_h(1) command.

   GGeenneerraattiinngg TTrraaddiittiioonnaall PPaattcchheess
        If you wish to send "traditional" patches to developers who are not
        using Aegis to manage the sources at their end, you can use the
        following options:
                aepatch -send -cte=none -nocomp
        This says to use no Content Transfer Encoding, and no compression.  If
        you wish to also omit the Aegis meta data, you can use the following
        options:
                aepatch -send -cte=none -nocomp -compat=4.16
        This setting for the -compatibility option omits all Aegis extensions.

        By default, a context diff is generated.  Some projects prefer to use
        the unified diff format.  This is controlled by the _p_a_t_c_h___d_i_f_f___c_o_m_m_a_n_d
        field of the project configuration file (see _a_e_p_c_o_n_f(5) for more
        information).  If you have GNU diff, use the following command:
                patch_diff_command = "set +e; "
                    "diff -u --text "
                    "-L ${quote $index} -L ${quote $index} "
                    "${quote $original} ${quote $input} > ${quote $output}; "
                    "test $? -le 1"";
        This setting will cause the _a_e_p_a_t_c_h(1) command to produce unified diff
        patches instead of context diff patches.  As you can see from this
        command, the _a_e_p_a_t_c_h(1) command is onlu of use if you have text source
        files; it produces less than ideal results for binary files.

   OOppttiioonnss
        The following options are understood by the send variant:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --CCOOmmpprreessss
                This option may be used to specify that the output is to be
                compressed.  This is the default.

        --NNoo__CCOOmmpprreessss
                This option may be used to specify that the output is not to
                be compressed.

        --CCOOMMPPAATTiibbiilliittyy _v_e_r_s_i_o_n_-_n_u_m_b_e_r
                This option may be used to specify the version of _a_e_p_a_t_c_h(1)
                which will be _r_e_c_e_i_v_i_n_g this change set.  This information is
                used to select which features to include in the data, and
                which to omit.  By default, the latest feature set will be
                used.

        --CCoonntteenntt__TTrraannssffeerr__EEnnccooddiinngg _n_a_m_e
                This option may be used to specify the content transfer
                encoding to be used.  It may take one of the following values:

                None    No content transfer encoding is to be performed.

                Base64  The MIME base 64 encoding is to be used.  This is the
                        default.

                Quoted_Printable
                        The MIME quoted printable encoding is to be used.

                Unix_to_Unix_encode
                        The ancient unix-to-unix encoding is to be used.

                These encodings may be abbreviated in the same way as comment
                line options.

        --AAsscciiii__AArrmmoorr
                This means the same as the ``-cte=base64'' option above.

        --NNoo__AAsscciiii__AArrmmoorr
                This means the same as the ``-cte=none'' option above.

        --DDEELLttaa _n_u_m_b_e_r
                This option may be used to specify a particular delta in the
                project's history to copy the file from, rather than the most
                current version.  If the delta has been given a name (see
                _a_e_d_n(1) for how) you may use a delta name instead of a delta
                number.  It is an error if the delta specified does not exist.
                Delta numbers start from 1 and increase; delta 0 is a special
                case meaning ``when the branch started''.

        --DDEELLttaa__DDaattee _s_t_r_i_n_g
                This option may be used to specify a particular date and time
                in the project's history to copy the file from, rather than
                the most current version.  It is an error if the string
                specified cannot be interpreted as a valid date and time.
                Quote the string if you need to use spaces.

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify the output file.  The
                output is sent to the standard output by default.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --SSiiggnneedd__OOffff__BByy
                This option may be used to have a Signed-off-by: line appended
                to the change set description.

        --NNoo__SSiiggnneedd__OOffff__BByy
                This option may be used to prevent a Signed-off-by: line from
                being appended to the change set description.

RREECCEEIIVVEE
        The receive variant takes a patch and creates an Aegis change (see
        _a_e_n_c(1)) to implement the change within.  Files are added to the
        change (see _a_e_n_f(1), _a_e_c_p(1), _a_e_r_m(1), _a_e_n_t(1)) and then the patch
        contents are unpackaged into the development directory, and the
        changes applied to the files.

        The patch does not have to be produced by the _a_e_p_a_t_c_h(1) command.
        Normal patches produced by _d_i_f_f(1) command are also valid input.  The
        intent is that you can particicate in normal open source development,
        and also use Aegis, even if your fellow developers are not.

        Once unpacked, the change is then built (see _a_e_b(1)), differenced (see
        _a_e_d(1)), and tested (see _a_e_t(1)).  The automatic process stops at this
        point, so that you can confirm that the change is desired.

   FFiillee NNaammeess
        It is common for patch files generated using the usual _d_i_f_f _-_r
        mechanism to contain extra path prefixes.  The _a_e_p_a_t_c_h(1) command
        attempts to remove these automagically.  This is usually possible
        because patches usually modify files within the project, so the patch
        file names are compared with project file names to guess which and how
        much path prefixes to remove.

        --RReemmoovvee__PPaatthh__PPrreeffiixx _s_t_r_i_n_g
                This option may be used to explicitly specify path prefixes to
                be removed, if present.  It may be specified more than once.

        If you have a complex project directory structure, from time to time
        people may send you patches relative to a sub-directory, rather than
        relative to the project root.  The _a_e_p_a_t_c_h(1) program can't guess this
        by itself.

        --AAdddd__PPaatthh__PPrreeffiixx _s_t_r_i_n_g
                This option may be used to specify the path of a project sub-
                directory in which to apply the patch.

   NNoottiiffiiccaattiioonn
        The _a_e_p_a_t_c_h command invokes various other Aegis commands.  The usual
        notifications that these commands would issue are issued.

   OOppttiioonnss
        The following options are understood by the receive variant:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to choose the change number to be
                used, otherwise the change number in the patch (if present)
                will be used if it is available, otherwise one will be chosen
                automatically.

        --DDEELLttaa _n_u_m_b_e_r
                This option may be used to specify a particular delta in the
                project's history to copy the file from, just as for the
                _a_e_c_p(1) command.  You may also use a delta name instead of a
                delta number.

        --DDIIRReeccttoorryy _p_a_t_h
                This option may be used to specify which directory is to be
                used.  It is an error if the current user does not have
                appropriate 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.

        --FFiillee _f_i_l_e_n_a_m_e
                Read the change set from the specified file.  The default is
                to read it from the standard input.  The filename `-' is
                understood to mean the standard input.

                If your system has _l_i_b_c_u_r_l(3), and Aegis was configured to use
                it at compile time (this is the default if it is available)
                you will also be able to specify a Uniform Resource Locator
                (URL) in place of the file name.  The relevant data will be
                downloaded.  (The --VVeerrbboossee option will provide a progress
                bar.)

        --PPrroojjeecctt _n_a_m_e
                This option may be used to set the project name.  If not
                specified the project name in the input package will be used
                (if present), otherwise the usual project name default will be
                used.

        --TTrroojjaann This option may be used to treat the change set as if it had a
                Trojan horse attack in it.

        --NNoo__TTrroojjaann
                This option may be used to treat the change set as if it
                definitely does not have a Trojan horse attack in it.  _U_s_e
                _w_i_t_h _e_x_t_r_e_m_e _c_a_r_e_.  You need to have authenticated the message
                with something like PGP first aanndd know the the author well.

   SSeeccuurriittyy
        Receiving changes by e-mail, and automatically committing them to the
        baseline without checking them, would be a recipe for disaster.  A
        number of safeguards are provided:

        +o The format of the package is confirmed to be correct, and the
          package verified for internal consistency, before it is unpacked and
          acted upon.

        +o The automatic portion of the process stops before development ends.
          This ensures that the receiver validates the change before it is
          committed, and then it must also be reviewed, preventing accidental
          or malicious damage.

        +o The more you use Aegis' test management facilities (see _a_e_n_t(1) and
          _a_e_t(1)) the harder it is for an inadequate change to get into the
          baseline.

LLIISSTT
        The list variant can be used to list the contents of a package without
        actually unpacking it first.  The output is reminiscent of the _a_e_g_i_s
        _-_l_i_s_t _c_h_a_n_g_e_-_d_e_t_a_i_l_s output.

   OOppttiioonnss
        The following options are understood by the list variant:

        --FFiillee _f_i_l_e_n_a_m_e
                Read the change set from the specified file.  The default is
                to read it from the standard input.  The filename `-' is
                understood to mean the standard input.

                If your system has _l_i_b_c_u_r_l(3), and Aegis was configured to use
                it at compile time (this is the default if it is available)
                you will also be able to specify a Uniform Resource Locator
                (URL) in place of the file name.  The relevant data will be
                downloaded.  (The --VVeerrbboossee option will provide a progress
                bar.)

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify the output file.  The
                output is sent to the standard output by default.  Only useful
                with the -List option.

OOPPTTIIOONNSS
        The following options to this command haven't been mentioned yet:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_p_a_t_c_h program.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_p_a_t_c_h are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

FFIILLEE FFOORRMMAATT
        The file format re-uses existing formats, rather than introduce
        anything new.  This means it is possible to extract the contents of a
        package even when aepatch is unavailable.

        +o On sending, the source files are generated using the _d_i_f_f(1)
          program, in the same way a normal Unix patch  is generated.
          On receiving, the differences are applied to the source files, in
          the same manner as the normal _p_a_t_c_h(1) program.

        +o On sending, the patch is compressed using the GNU gzip format.
          Typically primary source files are ASCII text, resulting in
          significant compression.  (This is optional.)
          On receiving, if the patch is compressed it will be automagically
          uncompressed, detection is automatic, you do not need to do this
          yourself.

        +o On sending, the compressed patch is encoded using the MIME base64
          encoding.  This makes the result approximately 33% larger than the
          compressed binary would be, but still smaller than the primary
          sources.  (This is optional.)
          On receiving, if the patch is MIME64 encoded it will be
          automatically decoded, detetcion is automatic, you do not need to do
          this yourself.

EEXXIITT SSTTAATTUUSS
        The _a_e_p_a_t_c_h command will exit with a status of 1 on any error.  The
        _a_e_p_a_t_c_h command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aepatch version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aepatch program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_p_a_t_c_h _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_p_a_t_c_h _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aepromptcmd(1)                                                  aepromptcmd(1)



NNAAMMEE
        aepromptcmd - change prompt color by change state

SSYYNNOOPPSSIISS
        PROMPT_COMMAND="aepromptcmd"

DDEESSCCRRIIPPTTIIOONN
        The _b_a_s_h(1) shell has an interesting property:  If the PROMPT_COMMAND
        vaiable is set, the value is executed as a command prior to issuing
        each primary prompt.  (Actually, it can be a seties of semicolon
        separated commands.)

        In order to change the text back to normal, the PS1 variable needs to
        have "\33[0m" somewhere near the end, otherwise things can get a
        little difficult to read.  If you are using _b_a_s_h(1), you need to let
        it know these are unprintable (like this: "\[\33[0m\]") or it messes
        up command line editing.

        The _a_e_p_r_o_m_p_t_c_m_d command is used to set the color of the prompt, based
        on the state of the current change.  This is an idea taken from Kent
        Beck's _T_e_s_t _D_r_i_v_e_n _D_e_v_e_l_o_p_m_e_n_t book.  If the change is in the _b_e_i_n_g
        _d_e_v_e_l_o_p_e_d or _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state and it needs to be built, the
        prompt is red; if it is built but it needs to be tested, the prompt is
        magenta, otherwise it is green.

EExxaammppllee
        Here is a short script you can put in your .bashrc file to turn on
        prompt coloring:
                if [ "$PS1" ] then
                    case "$PROMPT_COMMAND" in
                    "" )      PROMPT_COMMAND="aepromptcmd"
                     PS1="$PS1^[[0m"      ;;
                    *aepromptcmd*)      ;;
                    *)      PROMPT_COMMAND="$PROMPT_COMMAND;aepromptcmd"
                     PS1="$PS1\[\33[0m\]"      ;;
                    esac
                    export PROMPT_COMMAND
                    export PS1 fi
        Note that this usually leaves your prompt default (black) when you are
        not somewhere inside a development directory.

   LLiimmiittaattiioonnss
        The _a_e_p_r_o_m_p_t_c_m_d command uses the ANSI color escape sequences.  It
        really should to use the _t_i_g_e_t_s_t_r(3) function from _t_e_r_m_i_n_f_o(3) to do
        this in a terminal independent way.  Code contributions welcome.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_p_r_o_m_p_t_c_m_d program.

        --VVeerrbboossee
                By default error messages are supressed, so that the prompt
                will be normal when you are outside an Aegis work area.  Use
                this option to tuen error messages back on.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_p_r_o_m_p_t_c_m_d are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_p_r_o_m_p_t_c_m_d command will exit with a status of 1 on any error.
        The _a_e_p_r_o_m_p_t_c_m_d command will only exit with a status of 0 if there are
        no errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aepromptcmd version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aepromptcmd program comes with ABSOLUTELY NO WARRANTY; for details
        use the '_a_e_p_r_o_m_p_t_c_m_d _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software
        and you are welcome to redistribute it under certain conditions; for
        details use the '_a_e_p_r_o_m_p_t_c_m_d _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aereport -RePorT(1)                                        aereport -RePorT(1)



NNAAMMEE
        aereport -RePorT - report generator

SSYYNNOOPPSSIISS
        aaeerreeppoorrtt [ _o_p_t_i_o_n...  ] _r_e_p_o_r_t_-_n_a_m_e
        aaeerreeppoorrtt [ _o_p_t_i_o_n...  ] --FFiillee _f_i_l_e_n_a_m_e
        aaeerreeppoorrtt --RReePPoorrTT --LLiisstt
        aaeerreeppoorrtt --HHeellpp
        aaeerreeppoorrtt --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_r_e_p_o_r_t command is used to generate reports from aereport'
        database.  Reports are specified in a C-like language described in the
        _a_e_r(5) manual entry.

        For a list of the reports available on your system, use the '_a_e_r
        _-_l_i_s_t' command.  These reports live in the _/_u_s_r_/_s_h_a_r_e_/_a_e_g_i_s_/_r_e_p_o_r_t
        directory, and it initially contains the reports distributed with
        aereport, however sites are free to add their own here.

WWRRIITTIINNGG RREEPPOORRTT SSCCRRIIPPTTSS
        Getting started writing report scripts can be difficult.  You are best
        to have a look at the reports distributes with Aegis, and try to adapt
        them.  The report script files are kept in the _/_u_s_r_/_s_h_a_r_e_/_a_e_g_i_s_/_r_e_p_o_r_t
        directory.

        For information about the data structures which may be accessed from a
        report script, you need to see the relevant manual entries:

        the projects list
                See _a_e_g_s_t_a_t_e(1) for the member fields.

        a specific project
                See _a_e_p_s_t_a_t_e(1) for the member fields.

        a specific change
                See _a_e_c_s_t_a_t_e(1) for the member fields.

        a specific file
                See _a_e_f_s_t_a_t_e(1) for the member fields.

        Each of the above man pages also contains a section towards the end
        which specifically addresses report generator use, usually with code
        fragments.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --FFiillee _f_i_l_e_n_a_m_e
                Take the report script from the specified file, rather than
                looking for the named report in the library of reports
                distributed with Aegis.  The filename `-' is understood to
                mean the standard input.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_r_e_p_o_r_t program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify the output file.  The
                output is sent to the standard output by default.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --UUNNFFoorrmmaatttteedd
                This option may be used with most listings to specify that the
                column formatting is not to be performed.  This is useful for
                shell scripts.

        --PPaaggee--HHeeaaddiinnggss
                This option requests that page headings be present in listings
                and reports.  This is the default.

        --NNoo--PPaaggee--HHeeaaddiinnggss
                This option requests that page headings be omitted from
                listings and reports.

        --VVeerrbboossee
                This option may be used to cause aereport to produce more
                output.  By default aereport only produces output on errors.
                When used with the --LLiisstt option this option causes column
                headings to be added.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_r_e_p_o_r_t are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aer 'aereport \!* -v'
        sh$     aer(){aereport "$@" -v}

SSEEEE AALLSSOO
        _a_e_l(1)  list (possibly) interesting things

        _a_e_r(5)  report script language definition

EEXXIITT SSTTAATTUUSS
        The _a_e_r_e_p_o_r_t command will exit with a status of 1 on any error.  The
        _a_e_r_e_p_o_r_t command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aereport version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aereport program comes with ABSOLUTELY NO WARRANTY; for details
        use the '_a_e_r_e_p_o_r_t _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software
        and you are welcome to redistribute it under certain conditions; for
        details use the '_a_e_r_e_p_o_r_t _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Remove_Administrator(1)                  aegis -Remove_Administrator(1)



NNAAMMEE
        aegis -Remove_Administrator - remove administrators from a project

SSYYNNOOPPSSIISS
        aaeeggiiss --RReemmoovvee__AAddmmiinniissttrraattoorr _u_s_e_r_-_n_a_m_e _._._.  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReemmoovvee__AAddmmiinniissttrraattoorr --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReemmoovvee__AAddmmiinniissttrraattoorr --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_m_o_v_e___A_d_m_i_n_i_s_t_r_a_t_o_r command is used to remove
        administrators from a project.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --DDeesscceenndd__PPrroojjeecctt__TTrreeee
                This option may be used to request that the command should be
                applied to the project and all its branches and sub-branches.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aera 'aegis -ra \!* -v'
        sh$     aera(){aegis -ra "$@" -v}

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        project.

        It is an error if an attempt is made to remove the last administrator
        from the project.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_a(1) add new administrators to a project

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Review_Begin(1)                                  aegis -Review_Begin(1)



NNAAMMEE
        aegis -Review_Begin - begin a change review

SSYYNNOOPPSSIISS
        aaeeggiiss --RReevviieeww__BBeeggiinn [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReevviieeww__BBeeggiinn --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReevviieeww__BBeeggiinn --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_v_i_e_w___B_e_g_i_n command is used to notify aegis that you have
        begun to review a change.

        The change will be advanced from the _a_w_a_i_t_i_n_g _r_e_v_i_e_w state to the
        _b_e_i_n_g _r_e_v_i_e_w_e_d state.

                                 awaiting
                                  review
                                     |
                            review   |review
                            begin    |begin
                            undo     |
                                  being
                                 reviewed



   NNoottiiffiiccaattiioonn
        If the _r_e_v_i_e_w___b_e_g_i_n___n_o_t_i_f_y___c_o_m_m_a_n_d has been set in the project
        attributes, this command will be run.  This is usually used to tell
        other reviewers that you have started review, and they need not.  See
        _a_e_p_a_t_t_r(5) and _a_e_p_a(1) for more information.

        If used when the _d_e_v_e_l_o_p___e_n_d___a_c_t_i_o_n project attribute is set to
        _g_o_t_o___b_e_i_n_g___r_e_v_i_e_w_e_d, then only the notification message is sent.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aerb 'aegis -rb \!* -v'
        sh$     aerb(){aegis -rb "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _a_w_a_i_t_i_n_g _r_e_v_i_e_w state.
        It is an error if the current user is not a reviewer of the project.
        Its is an error if the current user developed the change and the
        project is configured to not permit developers to review their own
        changes (default).

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_d(1) change directory

        _a_e_d_e(1) complete development of a change

        _a_e_d_e_u(1)
                recall a change for further development

        _a_e_r_p_a_s_s(1)
                pass review of a change

        _a_e_i_b(1) begin integrating a change

        _a_e_n_r_v(1)
                add a reviewer to a project

        _a_e_r_f_a_i_l(1)
                fail review of a change

        _a_e_r_p_u(1)
                rescind a change review pass

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Review_Begin_Undo(1)                        aegis -Review_Begin_Undo(1)



NNAAMMEE
        aegis -Review_Begin_Undo - stop reviewing a change

SSYYNNOOPPSSIISS
        aaeeggiiss --RReevviieeww__BBeeggiinn__UUnnddoo [ _o_p_t_i_o_n...  ]
        aaeeggiiss --HHeellpp
        aaeeggiiss --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_v_i_e_w___B_e_g_i_n___U_n_d_o command is used to stop reviewing a
        change.  It is moved from the _b_e_i_n_g _r_e_v_i_e_w_e_d state back to the
        _a_w_a_i_t_i_n_g _r_e_v_i_e_w state.

                                 awaiting
                                  review
                                     |
                            review   |review
                            begin    |begin
                            undo     |
                                  being
                                 reviewed



   NNoottiiffiiccaattiioonn
        If the _r_e_v_i_e_w___b_e_g_i_n___u_n_d_o___n_o_t_i_f_y___c_o_m_m_a_n_d has been set in the project
        attributes, this command will be run.  This is usually used to tell
        other reviewers that you have stopped reviewing, and they may like to
        do so instead.  See _a_e_p_a_t_t_r(5) and _a_e_p_a(1) for more information.

        If used when the _d_e_v_e_l_o_p___e_n_d___a_c_t_i_o_n project attribute is set to
        _g_o_t_o___b_e_i_n_g___r_e_v_i_e_w_e_d, then only the notification message is sent.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aerbu 'aegis -rbu \!* -v'
        sh$     aerbu(){aegis -rbu "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _r_e_v_i_e_w_e_d state.
        It is an error if the current user is not the reviewer of the change.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_d(1) change directory

        _a_e_d_e(1) complete development of a change

        _a_e_d_e_u(1)
                recall a change for further development

        _a_e_r_b(1) begin review of a change

        _a_e_n_r_v(1)
                add a reviewer to a project

        _a_e_r_f_a_i_l(1)
                fail review of a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Remove_Developer(1)                          aegis -Remove_Developer(1)



NNAAMMEE
        aegis -Remove_Developer - remove developers from a project

SSYYNNOOPPSSIISS
        aaeeggiiss --RReemmoovvee__DDeevveellooppeerr _u_s_e_r_-_n_a_m_e...  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReemmoovvee__DDeevveellooppeerr --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReemmoovvee__DDeevveellooppeerr --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_m_o_v_e___D_e_v_e_l_o_p_e_r command is used to remove developers from
        a project.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --DDeesscceenndd__PPrroojjeecctt__TTrreeee
                This option may be used to request that the command should be
                applied to the project and all its branches and sub-branches.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aerd 'aegis -rd \!* -v'
        sh$     aerd(){aegis -rd "$@" -v}

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        project.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_d(1) add a new developer to a project

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aerect(1)                                                            aerect(1)



NNAAMMEE
        aerect - draw a rectangle

SSYYNNOOPPSSIISS
        aaeerreecctt [ _o_p_t_i_o_n...  ] _w_i_d_t_h _h_e_i_g_h_t
        aaeeggiiss --HHeellpp
        aaeeggiiss --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_r_e_c_t command is used to draw rectangles for use with the
        intranet interface.

OOPPTTIIOONNSS
        The following options are understood:

        --BBeevveell _s_i_z_e
                This option may be used to specify the bevel size.  A size of
                0 may be use to specify no bevel.  Defaults to 3 if not
                specified.

        --CCoolloorr _r_e_d _g_r_e_e_n _b_l_u_e
                This option may be used to specify the color of the rectangle.
                The components are specified in a range from 0 to 255.  If not
                specified, the color will be based on the size of the
                rectangle.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify the output file.  The
                output is sent to the standard output by default.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Review_FAIL(1)                                    aegis -Review_FAIL(1)



NNAAMMEE
        aegis -Review_FAIL - fail a change review

SSYYNNOOPPSSIISS
        aaeeggiiss --RReevviieeww__FFAAIILL --FFiillee _r_e_a_s_o_n_-_f_i_l_e [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReevviieeww__FFAAIILL --RREEAAssoonn _'_r_e_a_s_o_n_-_t_e_x_t_' [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReevviieeww__FFAAIILL --EEddiitt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReevviieeww__FFAAIILL --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReevviieeww__FFAAIILL --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_v_i_e_w___F_A_I_L command is used to inform aegis that a change
        has failed review.

        The change will be returned from the _b_e_i_n_g _r_e_v_i_e_w_e_d state to the _b_e_i_n_g
        _d_e_v_e_l_o_p_e_d state.  The change will cease to be assigned to the current
        user, and will be reassigned to the originating developer.

                             being
                           developed
                                |
                                |develop
                                |end
                                |
                            awaitingreview
                             review  fail
                                |
                                |review
                                |begin
                                |
                             being
                            reviewed



        The developer will be notified by mail.  See the
        review_fail_notify_command in _a_e_p_a_t_t_r(5) for more information.

        The _r_e_a_s_o_n_-_f_i_l_e will contain a description of why the change was
        failed.  The file is in plain text.  It is recommended that you only
        use newline to terminate paragraphs, (rather than to terminate lines)
        as this will result in better formatting in the various listings.

   NNoottiiffiiccaattiioonn
        On successful completion of this command, the _r_e_v_i_e_w___f_a_i_l___n_o_t_i_f_y___-
        _c_o_m_m_a_n_d field of the project attributes is run, if set.  See
        _a_e_p_a_t_t_r(5) and _a_e_p_a(1) for more information.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --EEddiitt
                Edit the attributes with a text editor, this is usually more
                convenient than supplying a text file.  The _V_I_S_U_A_L and then
                _E_D_I_T_O_R environment variables are consulted for the name of the
                editor to use; defaults to _v_i(1) if neither is set.  See the
                _v_i_s_u_a_l___c_o_m_m_a_n_d and _e_d_i_t_o_r___c_o_m_m_a_n_d fields in _a_e_u_c_o_n_f(1) for how
                to override this specifically for Aegis.

                Warning: Aegis tries to be well behaved when faced with
                errors, so the temporary file is left in your home directory
                where you can edit it further and re-use it with a --ffiillee
                option.

                The --eeddiitt option may not be used in the background, or when
                the standard input is not a terminal.

        --EEddiitt__BBaacckkGGrroouunndd
                Edit the attributes with a dumb text editor, this is most
                often desired when edit commands are being piped into the
                editor via the standard input.  Only the EEDDIITTOORR environment
                variable is consulted for the name of the editor to use; it is
                a fatal error if it is not set.  See the _e_d_i_t_o_r___c_o_m_m_a_n_d field
                in _a_e_u_c_o_n_f(1) for how to override this specifically for Aegis.

        --FFiillee _f_i_l_e_n_a_m_e
                Take the attributes from the specified file.  The filename `-'
                is understood to mean the standard input.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --RREEAAssoonn _t_e_x_t
                This option may be used to provide the failure reason on the
                command line, rather than in a file.  You will need to use
                quotes to insulate the spaces from the shell.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aerfail 'aegis -rfail \!* -v'
        sh$     aerfail(){aegis -rfail "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _r_e_v_i_e_w_e_d state.
        It is an error if the current user is not a reviewer for the project.
        It is an error if the current user developed the change and the
        project is configured to disallow developers to review their own
        changes (default).

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_d(1) change directory

        _a_e_d_e(1) complete development of a change

        _a_e_d_e_u(1)
                recall a change for further development

        _a_e_n_r_v(1)
                add a reviewer to a project

        _a_e_r_p_a_s_s(1)
                pass review of a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Remove_Integrator(1)                        aegis -Remove_Integrator(1)



NNAAMMEE
        aegis -Remove_Integrator - remove integrators from a project

SSYYNNOOPPSSIISS
        aaeeggiiss --RReemmoovvee__IInntteeggrraattoorr _u_s_e_r_-_n_a_m_e...  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReemmoovvee__IInntteeggrraattoorr --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReemmoovvee__IInntteeggrraattoorr --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_m_o_v_e___I_n_t_e_g_r_a_t_o_r command is used to remove integrators
        from a project.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --DDeesscceenndd__PPrroojjeecctt__TTrreeee
                This option may be used to request that the command should be
                applied to the project and all its branches and sub-branches.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aeri 'aegis -ri \!* -v'
        sh$     aeri(){aegis -ri "$@" -v}

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        project.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_i(1) add a new administrator to a project

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -ReMove_file(1)                                    aegis -ReMove_file(1)



NNAAMMEE
        aegis -ReMove_file - add files to be deleted to a change

SSYYNNOOPPSSIISS
        aaeeggiiss --RReeMMoovvee__ffiillee _f_i_l_e_-_n_a_m_e...  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReeMMoovvee__ffiillee --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReeMMoovvee__ffiillee --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_M_o_v_e___f_i_l_e command is used to add files to be deleted to a
        change.  The file will be added to the list of files in the change,
        and will be removed from the baseline at integration time.

        This command may be used to remove tests, not just source files.
        Tests are treated just like any other source file, and are subject to
        the same process.

        A file will be created in the development directory containing 1KB of
        random text.  The random text is sufficiently revolting that most
        compilers will give error messages, should the file be referenced
        accidentally.  This is often very helpful when removing include files.

        You may specify a directory name to remove all files in the named
        directory tree.  It is an error if there are no relevant files.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   PPrroocceessss SSiiddee EEffffeeccttss
        This command will cancel any build or test registrations, because
        adding a file logically invalidates them.

        When the change files are listed (_a_e_g_i_s _-_L_i_s_t _C_h_a_n_g_e___F_i_l_e_s _-_T_E_R_s_e) the
        removed files will not appear in the terse listing.  Similarly, when
        the project files are listed with an explicit change number (_a_e_g_i_s
        _-_L_i_s_t _P_r_o_j_e_c_t___F_i_l_e_s _-_T_E_R_s_e _-_C_h_a_n_g_e N) none of the change's files,
        including the the removed files, will not appear in the terse listing.
        These two features are very helpful when calling aegis from within a
        DMT to generate the list of source files.

   CChhaannggiinngg tthhee TTyyppee ooff aa FFiillee
        If you want to change the type of a file (say, from a test to a source
        file, or _v_i_c_e _v_e_r_s_a) you could do it as two changes, by first using
        _a_e_r_m(1) in one change and then using _a_e_n_f(1) or _a_e_n_t(1) in a second
        change, or you can combine both steps in the same change.  Remember to
        use the _a_e_r_m _-_n_o_w_h_i_t_e_o_u_t option or you will get a most peculiar new
        file template.

   NNoottiiffiiccaattiioonn
        The _r_e_m_o_v_e___f_i_l_e___c_o_m_m_a_n_d in the project _c_o_n_f_i_g file is run, if set.
        The _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set, and if there has been an
        integration recently.  See _a_e_p_c_o_n_f(5) for more information.

WWHHIITTEEOOUUTT
        Aegis provides you with what is often called a ``view path'' which
        indicates to development tools (compilers, build systems, _e_t_c) look
        first in the development directory, then in the branch baseline, and
        so on up to the trunk baseline.

        The problem with view paths is that in order to remove files, you need
        some kind of "whiteout" to say ``stop looking, it's been removed.''

        When you user the _a_e_r_m(1) or _a_e_m_v(1) commands, this means "add
        information to this change which will remove the file from the
        baseline when this change is integrated".  _I_._e_. while the change is in
        the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state, the file is only "removed" in the
        development directory - it's still present in the baseline, and will
        be until the change is successfully integrated.

        When you use the _a_e_r_m(1) or _a_e_m_v(1) commands, Aegis will create a 1K
        file to act as the whiteout.  It's contents are rather ugly so that if
        you compile or include the "removed" file accidentally, you get a
        fatal error.  This will remind you to remove obsolete references.

        When the change in integrated, the removed file is _n_o_t copied/linked
        from the baseline to the integration directory, and is _n_o_t copied from
        the development directory.  At this time it is physically gone (no
        whiteout).  It is assumed that because of the error inducing whiteout
        all old references were found and fixed while the change was in the
        _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.

   FFiillee MMaanniiffeessttss
        When generating list of files to be compiled or linked, it is
        important that the file manifest be generated from information known
        by Aegis, rather than from the file system.  This is for several
        reasons:

        (a) Aegis knows exactly what (source) files are where, whereas
            everything else is inferring Aegis' knowledge; and

        (b) looking in the file system is hard when the view path is longer
            that 2 directories (and Aegis' branching method can make it
            arbitrarily long); and

        (c) The whiteout files, and anything else left ``lying around'', will
            confuse any method which interrogates the file system.

        The easiest way to use Aegis' file knowledge is with something like an
        _a_w_k(1) script processing the Aegis file lists.  For example, you can
        do this with _m_a_k_e(1) as follows:
                # generate the file manifest
                manifest.make.inc: manifest.make.awk
                     ( aegis -l cf -ter ; aegis -l pf -ter ) | \
                     awk -f manifest.make.awk > manifest.make.inc
                # now include the file manifest
                include manifest.make.inc
        Note: this would be inefficient of you did it once per directory, but
        there is nothing stopping you writing numerous assignments into the
        _m_a_n_i_f_e_s_t_._m_a_k_e_._i_n_c file, all in one pass.

        It is possible to do the same thing with Aegis' report generator (see
        _a_e_r(1) for more information), but this is more involved than the
        _a_w_k(1) script.  However, with the information "straight from the
        horse's mouth" as it were, it can also be much smarter.

        This file manifest would become out-of-date without an interlock to
        Aegis' file operations commands.  By using the _p_r_o_j_e_c_t_-_f_i_l_e___c_o_m_m_a_n_d
        and _c_h_a_n_g_e___f_i_l_e___c_o_m_m_a_n_d fields of the project _c_o_n_f_i_g file (see
        _a_e_p_c_o_n_f(5) for more information), you can delete this file at
        strategic times.
                /* run when the change file manifest is altered */
                change_file_command = "rm -f manifest.make.inc";
                /* run when the project file manifest is altered */
                project_file_command = "rm -f manifest.make.inc";
        The new file manifest will thus be re-built during the next _a_e_b(1)
        command.

   OOppttiioonnss aanndd PPrreeffeerreenncceess
        There is a --NNoo--WWhhiitteeOOuutt option, which may be used to suppress whiteout
        files when you use the _a_e_r_m(1) and _a_e_m_v(1) commands.  There is a
        corresponding --WWhhiitteeOOuutt option, which is usually the default.

        There is a _w_h_i_t_e_o_u_t___p_r_e_f_e_r_e_n_c_e field in the user preferences file (see
        _a_e_u_c_o_n_f(5) for more information) if you want to set this option more
        permanently.

   WWhhiitteeoouutt FFiillee TTeemmppllaatteess
        The _w_h_i_t_e_o_u_t___t_e_m_p_l_a_t_e field of the project _c_o_n_f_i_g file may be used to
        produce language-specific error files.  If no whiteout template entry
        matches, a very ugly 1KB file will be produced - it should induce
        compiler errors for just about any language.

        If you want a more human-readable error message, entries such as
                whiteout_template =
                [
                     {
                     pattern = [ "*.[ch]" ];
                     body = "#error This file has been removed.";
                     }
                ];
        can be very effective (this example assumes _g_c_c(1) is being used).

        If it is essential that _n_o whiteout file be produced, say for C source
        files, you could use a whiteout template such as
                whiteout_template =
                [
                     { pattern = [ "*.c" ]; }
                ];
        because an absent _b_o_d_y sub-field means generate no whiteout file at
        all.

        You may have more than one whiteout template entry, but note that the
        order of the entries is important.  The first entry which matches will
        be used.

OOPPTTIIOONNSS
        The following options are understood:

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --NNoott__LLooggggiinngg
                This option may be used to disable the automatic logging of
                output and errors to a file.  This is often useful when
                several aegis commands are combined in a shell script.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --WWhhiitteeOOuutt
                This option may be used to request that deleted files be
                replaced by a ``whiteout'' file in the development directory.
                The idea is that compiling such a file will result in a fatal
                error, in order that all references may be found.  This is
                usually the default.

        --NNoo__WWhhiitteeOOuutt
                This option may be used to request that no ``whiteout'' file
                be placed in the development directory.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aerm 'aegis -rm \!* -v'
        sh$     aerm(){aegis -rm "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the change is not assigned to the current user.
        It is an error if the file does not exist in the baseline.
        It is an error if the file is already part of the change.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_p(1) copy files into a change

        _a_e_d_b(1) begin development of a change

        _a_e_m_v(1) rename a file as part of a change

        _a_e_n_f(1) add files to be created to a change

        _a_e_r_m_u(1)
                remove files to be deleted from a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -ReMove_PRoject(1)                              aegis -ReMove_PRoject(1)



NNAAMMEE
        aegis -ReMove_PRoject - remove project

SSYYNNOOPPSSIISS
        aaeeggiiss --RReeMMoovvee__PPrroojjeecctt _p_r_o_j_e_c_t_-_n_a_m_e [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReeMMoovvee__PPrroojjeecctt --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReeMMoovvee__PPrroojjeecctt --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_M_o_v_e___P_R_o_j_e_c_t command is used to remove a project, either
        entirely, or just from aegis' supervision.

        Project aliases to the removed project are also removed.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --IInntteerraaccttiivvee
                Specify that aegis should ask the user for confirmation before
                deleting each file.  Answer the question _y_e_s to delete the
                file, or _n_o to keep the file.  You can also answer _a_l_l to
                delete the file and all that follow, or _n_o_n_e to keep the file
                and all that follow.

                Defaults to the user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not
                specified, see _a_e_u_c_o_n_f(5) for more information.

                If aegis is running in the background, the question will not
                be asked, and the files will be deleted.

        --KKeeeepp
                This option may be used to retain files and/or directories
                usually deleted by the command.  Defaults to the user's
                _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for
                more information.

        --NNoo__KKeeeepp
                This option may be used to ensure that the files and/or
                directories are deleted by the command.  Defaults to the
                user's _d_e_l_e_t_e___f_i_l_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5)
                for more information.

        --LLIIBBrraarryy _a_b_s_p_a_t_h
                This option may be used to specify a directory to be searched
                for global state files and user state files.  (See _a_e_g_s_t_a_t_e(5)
                and _a_e_u_s_t_a_t_e(5) for more information.)  Several library
                options 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 _A_E_G_I_S___P_A_T_H environment
                variable (colon separated), and finally, _/_u_s_r_/_l_o_c_a_l_/_l_i_b_/_a_e_g_i_s
                is always searched.  All paths specified, either on the
                command line or in the _A_E_G_I_S___P_A_T_H environment variable, must
                be absolute.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aermpr 'aegis -rmpr \!* -v'
        sh$     aermpr(){aegis -rmpr "$@" -v}

EERRRROORRSS
        It is an error if the project has any changes between the _b_e_i_n_g
        _d_e_v_e_l_o_p_e_d and _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d states, inclusive.
        It is an error if the current user is not an administrator.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_p_r(1)
                create a new project

        _a_e_n_r_l_s(1)
                create a new project from an existing project

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -ReMove_file_Undo(1)                          aegis -ReMove_file_Undo(1)



NNAAMMEE
        aegis -ReMove_file_Undo - remove files to be deleted from a change

SSYYNNOOPPSSIISS
        aaeeggiiss --RReeMMoovvee__ffiillee__UUnnddoo _f_i_l_e_-_n_a_m_e...  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReeMMoovvee__ffiillee__UUnnddoo --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReeMMoovvee__ffiillee__UUnnddoo --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_M_o_v_e___f_i_l_e___U_n_d_o command is used to remove files to be
        deleted from a change.  The files is removed from the list of files in
        the change.

        You may specify a directory name to delete from the change all files
        being removed in the named directory tree, other files in the tree
        will be ignored.  It is an error if there are no relevant files.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

   NNoottiiffiiccaattiioonn
        The _r_e_m_o_v_e___f_i_l_e___u_n_d_o___c_o_m_m_a_n_d in the project _c_o_n_f_i_g file is run, if
        set.  The _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d is also run, if set, and if there has
        been an integration recently.  See _a_e_p_c_o_n_f(5) for more information.

   PPrroocceessss SSiiddee EEffffeeccttss
        This command will cancel any build or test registrations, because
        deleting a file logically invalidates them.

OOPPTTIIOONNSS
        The following options are understood:

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --VVeerriiffyy__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that the symbolic links, or
                hard links, or file copies, in the work area be updated to
                reflect the current state of the baseline.  This is controlled
                by the _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field of the project
                configuration file.  Only files which are not involved in the
                change are updated.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if meaningful for your configuration.
                The name is an historical accident, hard links and file copies
                are included.

        --AAssssuummee__SSyymmbboolliicc__LLiinnkkss
                This option may be used to request that no update of baseline
                mirror files take place.  This options is useful when you
                _d_e_f_i_n_i_t_e_l_y _k_n_o_w the files' up-to-date-ness isn't important
                right now; incorrect use of this option may have unanticipated
                build side-effects.  See also the
                ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).  This
                option is the default, if not meaningful for your
                configuration.  The name is an historical accident, hard links
                and file copies are included.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aermu 'aegis -rmu \!* -v'
        sh$     aermu(){aegis -rmu "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        It is an error if the change is not assigned to the current user.
        It is an error if the file is not in the change.
        It is an error if the was not added to the change using the _a_e_g_i_s
        _-_R_e_M_o_v_e___f_i_l_e command.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_r_m(1) add files to be deleted to a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Remove_Project_Alias(1)                  aegis -Remove_Project_Alias(1)



NNAAMMEE
        aegis -Remove_Project_Alias - remove a project alias

SSYYNNOOPPSSIISS
        aaeeggiiss --RReemmoovvee__PPrroojjeecctt__AAlliiaass [ _o_p_t_i_o_n...  ] _p_r_o_j_e_c_t_-_a_l_i_a_s
        aaeeggiiss --HHeellpp
        aaeeggiiss --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_m_o_v_e___P_r_o_j_e_c_t___A_l_i_a_s command is used to remove a project
        alias.

        The project alias _m_u_s_t be given on the command line, the default
        project is not sufficient.

   EExxaammppllee
        Aliases may be used in may ways.  The most common is to give a
        particular release a code name.  You would do this by saying
                aenpa example.4.2 sydney
        This would make ``sydney'' an alias for the ``example.4.2'' branch.

        Another use for aliases is to have a fixed alias for your active
        branch, so that your developer team does not need to change their
        default project, even though the branch number moves on for each
        release.  You could say
                aenpa example.4.2 example.cur
        This would make ``example.cur'' an alias for the ``example.4.2''
        branch.  When this was finished, and 4.3 started, a project
        administrator could say
                aerpa example.cur
                aenpa example.4.3 example.cur
        Now ``example.cur'' is an alias for the ``example.4.3'' branch, but
        the developers need only reference ``example.cur'' to always work on
        the right branch.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EERRRROORRSS
        It is an error if the current user is not a project administrator.
        It is an error if the given name is not a project alias.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_p_a(1)
                Create a new project alias.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Review_PASS(1)                                    aegis -Review_PASS(1)



NNAAMMEE
        aegis -Review_PASS - pass a change review

SSYYNNOOPPSSIISS
        aaeeggiiss --RReevviieeww__PPAASSSS [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReevviieeww__PPAASSSS --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReevviieeww__PPAASSSS --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_v_i_e_w___P_A_S_S command is used to notify aegis that a change
        has passed review.

        The default configuration requires only a single reviewer for each
        change set.  It is possible to have more than one reviewer, and/or
        project specific policies about who may review certain files, by
        configuring Aegis to use an external review policy command.

        The state transition performed depends on the settings of the review_-
        policy_command field of the project configuration file and the
        develop_end_action field of the project attributes.

        review_policy_command not set:
            The change will be advanced from the _b_e_i_n_g _r_e_v_i_e_w_e_d state to the
            _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n state.

        review_policy_command set:
            The command will be executed, and the exit status examined.

            Zero:
                The change will be advanced from the _b_e_i_n_g _r_e_v_i_e_w_e_d state to
                the _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n state.

            Non-Zero:
                    The setting of the develop_end_action of the project
                    attributes is examined:

                    goto_awaiting_review:
                        The change will be advanced from the _b_e_i_n_g _r_e_v_i_e_w_e_d
                        state to the _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n state.

                    Otherwise:
                        The change will remain in the _b_e_i_n_g _r_e_v_i_e_w_e_d state.
                        It is expected that a future review_policy_command
                        execution will satisfy the project criteria and exit
                        zero.

                                              awaiting
                                               review

                                                     review
                                                       pass

            being          being review        being
           reviewed       reviewed pass       reviewed
               |
               |review
               |pass
               |
           awaiting
          integration



        It is possible to avoid the _b_e_i_n_g _r_e_v_i_e_w_e_d state altogether by setting
        the _d_e_v_e_l_o_p___e_n_d___a_c_t_i_o_n field of the project confituration file to
        _g_o_t_o___a_w_a_i_t_i_n_g___i_n_t_e_g_r_a_t_i_o_n.

        If the project configuration file has specified the presence of
        Signed-off-by: lines, a suitable line containing the current user's
        email address will be appended to the change description.

        If you use one of the -File, -Edit or -Reason options to add comments,
        the file is to be in plain text, and it is recommended that you only
        use a newline to terminate paragraphs (rather than to terminate lines)
        as this will result in better formatting in the various listings.

   NNoottiiffiiccaattiioonn
        On successful completion of this command, the _r_e_v_i_e_w___p_a_s_s___n_o_t_i_f_y___-
        _c_o_m_m_a_n_d field of the project attributes is run, if set.  See
        _a_e_p_a_t_t_r(5) and _a_e_p_a(1) for more information.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --EEddiitt
                Edit the attributes with a text editor, this is usually more
                convenient than supplying a text file.  The _V_I_S_U_A_L and then
                _E_D_I_T_O_R environment variables are consulted for the name of the
                editor to use; defaults to _v_i(1) if neither is set.  See the
                _v_i_s_u_a_l___c_o_m_m_a_n_d and _e_d_i_t_o_r___c_o_m_m_a_n_d fields in _a_e_u_c_o_n_f(1) for how
                to override this specifically for Aegis.

                Warning: Aegis tries to be well behaved when faced with
                errors, so the temporary file is left in your home directory
                where you can edit it further and re-use it with a --ffiillee
                option.

                The --eeddiitt option may not be used in the background, or when
                the standard input is not a terminal.

        --EEddiitt__BBaacckkGGrroouunndd
                Edit the attributes with a dumb text editor, this is most
                often desired when edit commands are being piped into the
                editor via the standard input.  Only the EEDDIITTOORR environment
                variable is consulted for the name of the editor to use; it is
                a fatal error if it is not set.  See the _e_d_i_t_o_r___c_o_m_m_a_n_d field
                in _a_e_u_c_o_n_f(1) for how to override this specifically for Aegis.

        --FFiillee _f_i_l_e_n_a_m_e
                Take the attributes from the specified file.  The filename `-'
                is understood to mean the standard input.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --RREEAAssoonn _t_e_x_t
                This option may be used to provide the failure reason on the
                command line, rather than in a file.  You will need to use
                quotes to insulate the spaces from the shell.

        --SSiiggnneedd__OOffff__BByy
                This option may be used to have a Signed-off-by: line appended
                to the change set description.

        --NNoo__SSiiggnneedd__OOffff__BByy
                This option may be used to prevent a Signed-off-by: line from
                being appended to the change set description.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aerpass 'aegis -rpass \!* -v'
        sh$     aerpass(){aegis -rpass "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _b_e_i_n_g _r_e_v_i_e_w_e_d state.
        It is an error if the current user is not a reviewer of the project.
        Its is an error if the current user developed the change and the
        project is configured to disallow developers to review their own
        changes (default).

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_d(1) change directory

        _a_e_d_e(1) complete development of a change

        _a_e_d_e_u(1)
                recall a change for further development

        _a_e_i_b(1) begin integrating a change

        _a_e_n_r_v(1)
                add a reviewer to a project

        _a_e_r_f_a_i_l(1)
                fail review of a change

        _a_e_r_p_u(1)
                rescind a change review pass

        _a_e_p_c_o_n_f(5)
                project configuration file format

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Review_Pass_Undo(1)                          aegis -Review_Pass_Undo(1)



NNAAMMEE
        aegis -Review_Pass_Undo - rescind a change review pass

SSYYNNOOPPSSIISS
        aaeeggiiss --RReevviieeww__PPaassss__UUnnddoo [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReevviieeww__PPaassss__UUnnddoo --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReevviieeww__PPaassss__UUnnddoo --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_v_i_e_w___P_a_s_s___U_n_d_o command is used to notify aegis that a
        change review pass has been rescinded.

        The change will be moved from the _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n state to the
        _b_e_i_n_g _r_e_v_i_e_w_e_d state.

                             being
                            reviewed
                                |
                                |revrieevwiew
                                |passpass
                                |    undo
                            awaiting
                           integration



   NNoottiiffiiccaattiioonn
        On successful completion of this command, the _r_e_v_i_e_w___p_a_s_s___u_n_d_o___-
        _n_o_t_i_f_y___c_o_m_m_a_n_d field of the project attributes is run, if set.  See
        _a_e_p_a_t_t_r(5) and _a_e_p_a(1) for more information.

OOPPTTIIOONNSS
        The following options are understood:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aerpu 'aegis -rp \!* -v'
        sh$     aerpu(){aegis -rp "$@" -v}

EERRRROORRSS
        It is an error if the change is not in the _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n state.
        It is an error if the current user is not the reviewer of the change.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_r_p_a_s_s(1)
                pass review of a change

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Remove_ReViewer(1)                            aegis -Remove_ReViewer(1)



NNAAMMEE
        aegis -Remove_ReViewer - remove reviewers from a project

SSYYNNOOPPSSIISS
        aaeeggiiss --RReemmoovvee__RReeVViieewweerr _u_s_e_r_-_n_a_m_e...  [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReemmoovvee__RReeVViieewweerr --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --RReemmoovvee__RReeVViieewweerr --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_R_e_m_o_v_e___R_e_V_i_e_w_e_r command is used to remove reviewers from a
        project.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --DDeesscceenndd__PPrroojjeecctt__TTrreeee
                This option may be used to request that the command should be
                applied to the project and all its branches and sub-branches.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aerrv 'aegis -rrv \!* -v'
        sh$     aerrv(){aegis -rrv "$@" -v}

EERRRROORRSS
        It is an error if the current user is not an administrator of the
        project.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_r_v(1)
                add a new reviewer to a project

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aesub(1)                                                              aesub(1)



NNAAMMEE
        aesub - substitute and echo strings

SSYYNNOOPPSSIISS
        aaeessuubb [ _o_p_t_i_o_n...  ] string ...
        aaeessuubb --HHeellpp
        aaeessuubb --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_s_u_b command is used to perform the usual _a_e_s_u_b(5) substitutions
        on its command line arguments, and then echo them to the standard
        output.

   SShheellll SSccrriipptt QQuuoottiinngg
        The _a_e_s_u_b(1) command is often used in shell scripts.  It is important
        to remember that the shell will do its own substitutions on the
        command line argument _b_e_f_o_r_e it invokes the _a_e_s_u_b(1) command.
        Usually, you don't want this to happen, so you need to use _s_i_n_g_l_e (')
        quotes to do this.  (The shell continues to substitute inside double
        (") quotes.)

        Quote _a_e_s_u_b(1) arguments using ' _s_i_n_g_l_e ' quotes.

OOPPTTIIOONNSS
        The following options are understood:

        --BBaasseeLLiinnee
                This option may be used to specify that the project baseline
                is the subject of the command.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --FFiillee _f_i_l_e_n_a_m_e
                Take the text to be substituted from the specified file.  The
                filename `-' is understood to mean the standard input.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_s_u_b program.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_s_u_b are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_s_u_b command will exit with a status of 1 on any error.  The
        _a_e_s_u_b command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        aaeessuubb(5)
                Available string substitutions.

CCOOPPYYRRIIGGHHTT
        aesub version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aesub program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_s_u_b _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_s_u_b _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -Test(1)                                                  aegis -Test(1)



NNAAMMEE
        aegis -Test - run tests

SSYYNNOOPPSSIISS
        aaeeggiiss --TTeesstt [ _f_i_l_e_-_n_a_m_e...  ][ _o_p_t_i_o_n...  ]
        aaeeggiiss --TTeesstt --IINNDDeeppeennddeenntt [ _f_i_l_e_-_n_a_m_e...  ][ _o_p_t_i_o_n...  ]
        aaeeggiiss --TTeesstt --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeeggiiss --TTeesstt --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_T_e_s_t command is used to run tests.  If no files are named,
        all relevant tests are run.  By default both automatic and manual
        tests are run.

        You may name directories on the command line, and all relevant tests
        in that directory tree in the change will be run.  It is an error if
        there are no relevant tests.

        Each architecture must be tested separately.  This is because there
        may be subtle problems that are only revealed on some architectures.
        Some projects may also have different code for different
        architectures.

        The status of the last test run is remembered so that tests are not
        run if there is no need.  (This does not apply to _-_R_E_G_r_e_s_s_i_o_n tests,
        unfortunately.)  Tests must be re-run if the test previously failed,
        if the test file has changed, if there has been a build, and for each
        architecture.

   FFiillee NNaammee IInntteerrpprreettaattiioonn
        The aegis program will attempt to determine the project file names
        from the file names given on the command line.  All file names are
        stored within aegis projects as relative to the root of the baseline
        directory tree.  The development directory and the integration
        directory are shadows of this baseline directory, and so these
        relative names apply here, too.  Files named on the command line are
        first converted to absolute paths if necessary.  They are then
        compared with the baseline path, the development directory path, and
        the integration directory path, to determine a baseline-relative name.
        It is an error if the file named is outside one of these directory
        trees.

        The --BBAAssee__RREEllaattiivvee option may be used to cause relative filenames to
        be interpreted as relative to the baseline path; absolute filenames
        will still be compared with the various paths in order to determine a
        baseline-relative name.

        The _r_e_l_a_t_i_v_e___f_i_l_e_n_a_m_e___p_r_e_f_e_r_e_n_c_e in the user configuration file may be
        used to modify this default behavior.  See _a_e_u_c_o_n_f(5) for more
        information.

TTEESSTT PPRROOCCEESSSS
        Each change is required to be accompanied by tests, and those tests
        are required to be run against the built development directory, and
        they must pass.  This ensures that new functionality is accompanied by
        tests to verify its correctness, and bug fixes are accompanied by
        tests which confirm that the bug has been fixed.

   RReeggrreessssiioonn TTeessttss
        Tests are treated as any other source file, and are maintained in the
        baseline and history with all other source files.  The tests which
        must accompany every change accumulate in the project baseline,
        providing a definition of correct function for the baseline.  These
        accumulated tests may be executed using an ``aegis -REGression''
        command, to verify that the project will not ``regress'' as a result
        of a change.

   BBaasseelliinnee TTeessttss
        Bug fixes are required to have their tests _f_a_i_l against the project
        baseline (in contrast to the development directory).  This ensures
        that the test actually demonstrates the bug in the baseline, as well
        as demonstrating that it is fixed by the change.  New functionality
        trivially fails against the baseline, and so aegis does not attempt to
        guess if a test is a bug fix test or new functionality test, it simply
        requires tests to fail against the baseline.

        This requirement applies both to new tests being created by a change
        and also to tests which have been copied into a change for
        modification.

   RReevviieewwiinngg TTeessttss
        Reviewers may be confident that aegis has enforced the test
        requirements; that a change must have tests, that the change must
        build, that the tests pass against the development directory, and that
        the tests fail against the baseline.  These conditions are enforced by
        _a_e_d_e(1) and the change will not be advanced to the _b_e_i_n_g _r_e_v_i_e_w_e_d
        state until these conditions are met.  Reviewers should thus review
        tests for _c_o_m_p_l_e_t_e_n_e_s_s of coverage of the code in the change, and
        insensitivity to changes in the execution environment (e.g. not date
        sensitive).  Reviewers should also use ``aegis -list change_details''
        to verify that a change does or does not have testing exemptions.

   EExxeemmppttiioonnss
        Various test exemptions may be granted by project administrators, see
        _a_e_p_a(1) and _a_e_p_a_t_t_r(5) for more information.  Copying tests into a
        change, or adding new tests to a change, may cancel those exemptions.

TTEESSTT CCOOMMMMAANNDD CCOONNFFIIGGUURRAATTIIOONN
        The command used to execute tests is defined by the _t_e_s_t___c_o_m_m_a_n_d field
        in the project configuration file (see _a_e_p_c_o_n_f(5) for more
        information), this defaults to using the Bourne shell if not set.  The
        current directory will be the top of the appropriate directory tree.
        If tests require temporary files, they should create them in _/_t_m_p, as
        a test cannot expect to have write permission in the current
        directory.

        If you want to use a more sophisticated test engine, rather than a
        simple shell script, but this test engine does not return result codes
        suitable for use with aegis, you could wrap it in a shell script which
        re-writes the exit status into the values aegis expects.  You could
        also achieve the same results by writing a more complex _t_e_s_t___c_o_m_m_a_n_d
        in the project _c_o_n_f_i_g file.

        It is also possible to write test commands which are able to test more
        than one file at once.  This is controlled by the _b_a_t_c_h___t_e_s_t___c_o_m_m_a_n_d
        field of the project _c_o_n_f_i_g file.  In this case, the ${output}
        substitution indicates the name of a file the test command must
        create, in _a_e_t_e_s_t(5) format, to contain the results of the tests run.
        This is often used on systems with multiple CPUs or the ability to
        distribute jobs across several computers on a network.

   SSuubbssttiittuuttiioonnss
        All of the _a_e_s_u_b(5) substitutions are available in the test commands.
        Some of them are of particular note:

        _A_R_C_H_i_t_e_c_t_u_r_e
                This substitution is replaced by the name of the architecture
                to be tested.

        _S_e_a_r_c_h___P_a_t_h
                This substitution is replaced by a colon separated list of
                absolute paths to search when looking for test support files.

        _S_e_a_r_c_h___P_a_t_h___E_x_e_c_u_t_a_b_l_e
                This substitution is replaced by a colon separated list of
                absolute paths to search when looking for executable support
                files (library files and sub-commands).

        Most of the time _$_S_e_a_r_c_h___P_a_t_h___E_x_e_c_u_t_a_b_l_e are exactly the same.
        However, during ``aegis -t -bl'' they will be different, with
        _$_S_e_a_c_h___P_a_t_h starting at the development directory (the test being run)
        and _$_S_e_a_c_h___P_a_t_h___E_x_e_c_u_t_a_b_l_e starting at the baseline (the executable
        being run).

   TTeesstt RReessuulltt CCooddeess
        As each test is run (via the _t_e_s_t___c_o_m_m_a_n_d field in the project _c_o_n_f_i_g
        file), aegis determines whether the test succeeded or failed by
        looking at its exit status.  This exit status is mostly as expected
        for UNIX commands.

        Success
            A test should exit 0 to indicate success, i.e. that the specific
            function under test worked as expected.

        Failure
            A test should exit 1 to indicate failure, i.e. that the specific
            function under test did not work as expected.

        No Result
            A test should exit 2 to indicate no result, _i_._e_. that the specific
            function under test could not be exercised because something else
            went wrong.  For example, running out of disk space when creating
            the test input files in the _/_t_m_p directory.

        Actually, any exit code other than 0 or 1 will be interpreted as ``no
        result''.  However, always using 0, 1 or 2 means that if a new result
        code is required by a later release of aegis, your existing tests will
        continue to work.

TTEESSTT CCOORRRREELLAATTIIOONNSS
        The ``aegis -Test -SUGgest'' command may be used to have aegis suggest
        suitable regression tests for your change, based on the source files
        in your change.  This automatically focuses testing effort to relevant
        tests, reducing the number of regression tests necessary to be
        confident that you have not introduced a bug.

        The test correlations are generated by the ``aegis -Integrate_Pass''
        command, which associates each test in the change with each source
        file in the change.  Thus, each source file accumulates a list of
        tests which have been associated with it in the past.  This is not as
        exact as code coverage analysis, but is a reasonable approximation in
        practice.

        The _a_e_c_p(1) and _a_e_n_f(1) commands are used to associate files with a
        change.  While they do not actively perform the association, these are
        the files used by _a_e_i_p_a_s_s(1) and _a_e_t(1) to determine which source
        files are associated with which tests.

   TTeesstt CCoorrrreellaattiioonn AAccccuurraaccyy
        Assuming that the testing correlations are accurate and that the tests
        are evenly distributed across the function space, there will be a less
        than _1_/_n_u_m_b_e_r chance that a relevant test has not been run by the
        ``aegis -Test -SUGgest _n_u_m_b_e_r'' command.  A small amount of noise is
        added to the test weighting, so that unexpected things are sometimes
        tested, and the same tests are not run every time.

        Test correlation accuracy can be improved by ensuring that:

        +o Each change should be strongly focused, with no gratuitous file
          inclusions.  This avoids spurious correlations.

        +o Each item of new functionality should be added in an individual
          change, rather than several together.  This strongly correlates
          tests with functionality.

        +o Each bug should be fixed in an individual change, rather than
          several together.  This strongly correlates tests with
          functionality.

        +o Test correlations will be lost if files are moved.  This is because
          correlations are by name.

        The best way for tests to correlate accurately with source files is
        when a change contains a test and exactly those files relating to the
        functionality under test.  Too many spurious files will weaken the
        usefulness of the testing correlations.

OOPPTTIIOONNSS
        The following options are understood:

        --AAUUTTOOmmaattiicc
                This option may be used to specify automatic tests.  Automatic
                tests require no human assistance.

        --BBaasseeLLiinnee
                This option may be used to specify that the project baseline
                is the subject of the command.

        --BBAAssee__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the base of the source tree.  See
                _a_e_u_c_o_n_f(5) for the corresponding user preference.

        --CCUUrrrreenntt__RREEllaattiivvee
                This option may be used to cause relative filenames to be
                considered relative to the current directory.  This is usually
                the default.  See _a_e_u_c_o_n_f(5) for the corresponding user
                preference.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --FFOOrrccee  This option may be used to specify that all tests should be
                run, even if the status of the last test run indicates that
                there is no need to run a specific test.

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        --IINNDDeeppeennddeenntt
                This option is used to specify that the test is to be run
                independent of any particular change.  If no tests are named,
                all tests in the baseline will be run.

        --LLiisstt
                This option may be used to obtain a list of suitable subjects
                for this command.  The list may be more general than expected.

        --MMAANNuuaall This option may be used to specify manual tests.  Manual tests
                require some human intervention,  e.g.: confirmation of some
                screen behavior (X11, for instance), or some user action,
                "unplug ethernet cable now".

        --NNoott__LLooggggiinngg
                This option may be used to disable the automatic logging of
                output and errors to a file.  This is often useful when
                several aegis commands are combined in a shell script.

        --PPEErrsseevveerree
                This option may be used to specify that all tests should be
                run, even if some fail.  Defaults to the user's
                _p_e_r_s_e_v_e_r_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for more
                information.

        --NNoo__PPEErrsseevveerree
                This option may be used to specify that the test run should
                stop after the first failure.  Defaults to the user's
                _p_e_r_s_e_v_e_r_e___p_r_e_f_e_r_e_n_c_e if not specified, see _a_e_u_c_o_n_f(5) for more
                information.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --PPRROOGGrreessss
                This option may be used to specify that progress messages
                should be issued before each test run or before each batch
                test run in case _b_a_t_c_h___t_e_s_t___c_o_m_m_a_n_d field specified in project
                _c_o_n_f_i_g file (see _a_e_u_c_o_n_f(5) for more information).

        --NNoo__PPRROOGGrreessss
                This option may be used to specify that progress messages
                should be suppressed.  This is the default.

        --RREEGGrreessssiioonn
                This option is used to specify that the regression test suite
                is to be run.  The regression test suite consists of all tests
                in the baseline which do not appear in the change.  It is an
                error if there are no regression tests.  You may not name
                tests on the command line when using the -REGression option.
                You may name individual tests to be run on the command line,
                without using the -REGression option; if they are not part of
                the change, the tests of the same name in the baseline will be
                run.

        --SSUUGGggeesstt [ _n_u_m_b_e_r ]
                The ``_a_e_g_i_s _-_I_n_t_e_g_r_a_t_e___P_a_s_s'' command collects test
                correlation statistics when changes are integrated.  This
                option may be used to request that aegis suggest which tests
                should be run, using these testing correlations.  If no number
                is specified, 10 tests will be suggested.  This option implies
                the --RREEGGrreessssiioonn option.

        ggeesstt__LLiimmiitt _m_i_n_u_t_e_s
                This option may be used to limit the number of tests to a
                certain number of minutes.  They will be run from most
                relevant to least relevant.

        --SSUUGGggeesstt__NNooiissee _n_u_m_b_e_r
                This option may be used to control the amount of noise
                injected into the test selection performed by the --SSUUGGggeesstt
                option.  The number is a percentage of noise to be injected.
                Defaults to 10 if not specified.  The injection of noise
                ensures that a variety of tests are run on subsequent runs,
                and also some from left-field as a sanity check.

        --TTEERRssee
                This option may be used to cause listings to produce the bare
                minimum of information.  It is usually useful for shell
                scripts.

        --VVeerrbboossee
                This option may be used to cause aegis to produce more output.
                By default aegis only produces output on errors.  When used
                with the --LLiisstt option this option causes column headings to be
                added.

        --WWaaiitt   This option may be used to require Aegis commands to wait for
                access locks, if they cannot be obtained immediately.
                Defaults to the user's _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        --NNoo__WWaaiitt
                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 _l_o_c_k___w_a_i_t___p_r_e_f_e_r_e_n_c_e if not specified,
                see _a_e_u_c_o_n_f(5) for more information.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aet 'aegis -t \!* -v'
        sh$     aet(){aegis -t "$@" -v}

EERRRROORRSS
        It is an error if the change is not in one of the _b_e_i_n_g _d_e_v_e_l_o_p_e_d or
        _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d states.
        It is an error if the change is not assigned to the current user.
        It is an error if your have no relevant tests and no relevant
        exemption.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_b(1)  build a change

        _a_e_c_a(1) modify the attributes of a change

        _a_e_d_b(1) begin development of a change

        _a_e_i_b(1) begin integration of a change

        _a_e_n_t(1) add a new test to a change

        _a_e_c_p(1) copy an existing test into a change

        _a_e_p_c_o_n_f(5)
                project configuration file format

        _a_e_u_c_o_n_f(5)
                user configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aetar(1)                                                              aetar(1)



NNAAMMEE
        aetar - remotely distribute a change via tar

SSYYNNOOPPSSIISS
        aaeettaarr --SSeenndd [ _o_p_t_i_o_n...  ]
        aaeettaarr --RReecceeiivvee [ _o_p_t_i_o_n...  ]
        aaeettaarr --LLiisstt [ _o_p_t_i_o_n...  ]
        aaeettaarr --HHeellpp
        aaeettaarr --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_t_a_r command is used to send and receive change sets via _t_a_r(1)
        to facilitate geographically distributed development.

        The basic function is to reproduce a change, so a command like
                aetar -send | aetar -receive
        may be used to clone a change, though less efficiently than
        _a_e_c_l_o_n_e(1).  The file format used is an ordinary _g_z_i_p(1) compressed
        _t_a_r(1) archive.

SSEENNDD
        The send variant takes a specified change, or baseline, and constructs
        a distribution package containing all of the source file contents.  No
        change meta-data is included.

        It is not necessary for the recipient to have the _a_e_t_a_r(1) command.
        It is possible to use the regular _t_a_r _x_z_f command to extract the files
        from the archive.

   OOppttiioonnss
        The following options are understood by the send variant:

        --BBaasseeLLiinnee
                This option may be used to specify the source of a project,
                rather than a change.

        --AAdddd__PPaatthh__PPrreeffiixx _s_t_r_i_n_g
                This option may be used to specify a path prefix to be added
                to every filename in the archive.  This means that when the
                archive is unpacked, it will all be placed in the one
                directory.

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --CCOOmmpprreessss
                This option may be used to specify that the output is to be
                compressed.  This is the default.

        --NNoo__CCOOmmpprreessss
                This option may be used to specify that the output is not to
                be compressed.

        --DDEELLttaa _n_u_m_b_e_r
                This option may be used to specify a particular delta in the
                project's history to copy the file from, rather than the most
                current version.  If the delta has been given a name (see
                _a_e_d_n(1) for how) you may use a delta name instead of a delta
                number.  It is an error if the delta specified does not exist.
                Delta numbers start from 1 and increase; delta 0 is a special
                case meaning ``when the branch started''.

        --DDEELLttaa__DDaattee _s_t_r_i_n_g
                This option may be used to specify a particular date and time
                in the project's history to copy the file from, rather than
                the most current version.  It is an error if the string
                specified cannot be interpreted as a valid date and time.
                Quote the string if you need to use spaces.

        --EEnnttiirree__SSoouurrccee
                This option may be used to send the entire source of the
                project, as well as the change source files.  This is the
                default.

        --PPaarrttiiaall__SSoouurrccee
                This option may be used to send only source files of a change.

        --IInncclluuddee__BBuuiilldd
                This option may be used to send also build files.

        --NNoott__IInncclluuddee__BBuuiilldd
                This option may be used to send only source (source, test,
                config but not build) files.  This is the default.

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify the output file.  The
                output is sent to the standard output by default.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

RREECCEEIIVVEE
        The receive variant takes a tarball and creates an Aegis change (see
        _a_e_n_c(1)) to implement the change within.  Files are added to the
        change (see _a_e_n_f(1), _a_e_c_p(1), _a_e_r_m(1), _a_e_n_t(1)) and then the file
        contents are unpackaged into the development directory.

        It is not necessary for the sender to have the _a_e_t_a_r(1) command.  It
        is possible to use the regular _t_a_r _c_z_f command to create the the
        tarball.  You may want to use the _t_a_r_d_y(1) command to manipulate the
        filenames before extraction.

   FFiillee NNaammeess
        It is common for tar files generated to distribute open source
        projects to contain a path prefix.

        --RReemmoovvee__PPaatthh__PPrreeffiixx _s_t_r_i_n_g
                This option may be used to explicitly specify path prefixes to
                be removed, if present.  It may be specified more than once.

        If you have a complex project directory structure, from time to time
        people may send you tarballs relative to a sub-directory, rather than
        relative to the project root.

        --AAdddd__PPaatthh__PPrreeffiixx _s_t_r_i_n_g
                This option may be used to specify the path of a project sub-
                directory in which to apply the tarball.

   NNoottiiffiiccaattiioonn
        The _a_e_t_a_r command invokes various other Aegis commands.  The usual
        notifications that these commands would issue are issued.

   OOppttiioonnss
        The following options are understood by the receive variant:

        --CChhaannggee _n_u_m_b_e_r
                This option may be used to choose the change number to be
                used, otherwise one will be chosen automatically.

        --DDEELLttaa _n_u_m_b_e_r
                This option may be used to specify a particular delta in the
                project's history to copy the file from, just as for the
                _a_e_c_p(1) command.  You may also use a delta name instead of a
                delta number.

        --DDIIRReeccttoorryy _p_a_t_h
                This option may be used to specify which directory is to be
                used.  It is an error if the current user does not have
                appropriate 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.

        --FFiillee _f_i_l_e_n_a_m_e
                Read the change set from the specified file.  The default is
                to read it from the standard input.  The filename `-' is
                understood to mean the standard input.

                If your system has _l_i_b_c_u_r_l(3), and Aegis was configured to use
                it at compile time (this is the default if it is available)
                you will also be able to specify a Uniform Resource Locator
                (URL) in place of the file name.  The relevant data will be
                downloaded.  (The --VVeerrbboossee option will provide a progress
                bar.)

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

        --TTrroojjaann This option may be used to treat the change set as if it had a
                Trojan horse attack in it.

        --NNoo__TTrroojjaann
                This option may be used to treat the change set as if it
                definitely does not have a Trojan horse attack in it.  _U_s_e
                _w_i_t_h _e_x_t_r_e_m_e _c_a_r_e_.  You need to have authenticated the message
                with something like PGP first aanndd know the the author well.

   SSeeccuurriittyy
        Downloading a tarball and automatically committing it to the baseline
        without checking it would be a recipe for disaster.  A number of
        safeguards are provided:

        +o The file sare unpacked into a new change.  You need to edit the
          change description.  You need to uncopy unchanged files.  You need
          to difference the change.  You need to build and test the change.
          This ensures that a local reviewer validates the change before it is
          committed, preventing accidental or malicious damage.

        +o The use of authentication and encryption systems, such as PGP and
          GPG, are encouraged.  However, it is expected that this processing
          will occur after _a_e_t_a_r _-_-_s_e_n_d has constructed the package and before
          _a_e_t_a_r _-_-_r_e_c_e_i_v_e examines and acts on the package.  Verification of
          the sender is the surest defense against trojan horses.

        +o Automatic sending and receiving of packages is supported, but not
          implemented within the aetar command.  It is expected that the aetar
          command will be used within shell scripts customized for your site
          and its unique security requirements.  See the Aegis User Guide for
          several different ways to do this.

        +o The more you use Aegis' test management facilities (see _a_e_n_t(1) and
          _a_e_t(1)) the harder it is for an inadequate change to get into the
          baseline.

LLIISSTT
        The list variant can be used to list the contents of a tarball without
        actually unpacking it first.

   OOppttiioonnss
        The following options are understood by the list variant:

        --FFiillee _f_i_l_e_n_a_m_e
                Read the change set from the specified file.  The default is
                to read it from the standard input.  The filename `-' is
                understood to mean the standard input.

                If your system has _l_i_b_c_u_r_l(3), and Aegis was configured to use
                it at compile time (this is the default if it is available)
                you will also be able to specify a Uniform Resource Locator
                (URL) in place of the file name.  The relevant data will be
                downloaded.  (The --VVeerrbboossee option will provide a progress
                bar.)

        --OOuuttppuutt _f_i_l_e_n_a_m_e
                This option may be used to specify the output file.  The
                output is sent to the standard output by default.  Only useful
                with the -List option.

OOPPTTIIOONNSS
        The following options to this command haven't been mentioned yet:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_t_a_r program.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_t_a_r are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

FFIILLEE FFOORRMMAATT
        The file format re-uses existing formats, rather than introduce
        anything new.  This means it is possible to extract the contents of a
        package even when aetar is unavailable.

        +o The source files and other information is stored as a normal Unix
          _t_a_r(1) archive.

        +o On sending, the tarball is compressed using the GNU gzip format.
          Typically primary source files are ASCII text, resulting in
          significant compression.  (This is optional.)
          On receiving, if the tarball is compressed it will be automagically
          uncompressed, detection is automatic, you do not need to do this
          yourself.

EEXXIITT SSTTAATTUUSS
        The _a_e_t_a_r command will exit with a status of 1 on any error.  The
        _a_e_t_a_r command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aetar version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aetar program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_t_a_r _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_t_a_r _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis -VERSion(1)                                            aegis -VERSion(1)



NNAAMMEE
        aegis -VERSion - give version information

SSYYNNOOPPSSIISS
        aaeeggiiss --VVEERRSSiioonn [ _i_n_f_o_-_n_a_m_e ]
        aaeeggiiss --VVEERRSSiioonn --HHeellpp

DDEESSCCRRIIPPTTIIOONN
        The _a_e_g_i_s _-_V_E_R_S_i_o_n command is used to give version information and
        conditions of use.

        There are a number of possible _i_n_f_o_-_n_a_m_es, as follow (abbreviations as
        for command line options):

        Copyright
                The copyright notice for the aegis program.  Version
                information will also be printed.  This is the default.

        Redistribution
                Print the conditions of use and redistribution.

        Warranty
                Print the limited warranty.

OOPPTTIIOONNSS
        The following options are understood:

        --HHeellpp
                This option may be used to obtain more information about how
                to use the _a_e_g_i_s program.

        All options may be abbreviated; the abbreviation is documented as the
        upper case letters, all lower case letters and underscores (_) are
        optional.  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
        interpreted to mean the --PPrroojjeecctt 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
        _a_e_g_i_s are long, this means ignoring the extra leading '-'.  The
        "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood.

RREECCOOMMMMEENNDDEEDD AALLIIAASS
        The recommended alias for this command is
        csh%    alias aev 'aegis -vers \!*'
        sh$     aev(){aegis -vers "$@"}

EERRRROORRSS
        It is an error if the _i_n_f_o_-_n_a_m_e given is unknown.

EEXXIITT SSTTAATTUUSS
        The _a_e_g_i_s command will exit with a status of 1 on any error.  The
        _a_e_g_i_s command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aexml(1)                                                              aexml(1)



NNAAMMEE
        aexml - Aegis database to XML

SSYYNNOOPPSSIISS
        aaeexxmmll [ _o_p_t_i_o_n...  ] _l_i_s_t_n_a_m_e
        aaeexxmmll --HHeellpp
        aaeexxmmll --LLiisstt
        aaeexxmmll --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
        The _a_e_x_m_l command is used to extract portions of Aegis' database in
        XML format.

   LLiisstt NNaammeess
        The following list names may be given

        Change_Files
                Internal change file state.  See _a_e_f_s_t_a_t_e(5) for structure.

        Change_State
                Internal change state.  See _a_e_c_s_t_a_t_e(5) for structure.

        Projects
                List of projects.  See _a_e_g_s_t_a_t_e(5) for structure.

        Project_Change_State
                Internal project change state.  See _a_e_c_s_t_a_t_e(5) for structure.

        Project_Config_File
                The project configuration file.  See _a_e_p_c_o_n_f(5) for structure.

        Project_Files
                Internal project file state.  See _a_e_f_s_t_a_t_e(5) for structure.

        Project_State
                Internal project state.  See _a_e_p_s_t_a_t_e(5) for structure.

        The abbreviations foe the list names follows the same rules as for
        command line options.

OOPPTTIIOONNSS
        The following options are understood:


        --LLiisstt
                This option may be used to obtain a list of suitable
                subjects for this command.  The list may be more
                general than expected.

        --HHeellpp
                This option may be used to obtain more information
                about how to use the _a_e_x_m_l program.

        All options may be abbreviated; the abbreviation is documented
        as the upper case letters, all lower case letters and
        underscores (_) are optional.  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
        interpreted to mean the --PPrroojjeecctt 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 _a_e_x_m_l are long, this means ignoring the extra
        leading '-'.  The "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also
        understood.

EEXXIITT SSTTAATTUUSS
        The _a_e_x_m_l command will exit with a status of 1 on any error.
        The _a_e_x_m_l command will only exit with a status of 0 if there
        are no errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may
        affect this command.  See _a_e_p_c_o_n_f(5) for the project
        configuration file's _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set
        environment variables for all commands executed by Aegis.

CCOOPPYYRRIIGGHHTT
        aexml version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
        1999, 2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All
        rights reserved.

        The aexml program comes with ABSOLUTELY NO WARRANTY; for
        details use the '_a_e_x_m_l _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is
        free software and you are welcome to redistribute it under
        certain conditions; for details use the '_a_e_x_m_l _-_V_E_R_S_i_o_n
        _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



tkaeca(1)                                                            tkaeca(1)



NNAAMMEE
        tkaeca - GUI interface for aeca, using TCL/TK

SSYYNNOOPPSSIISS
        ttkkaaeeccaa

DDEESSCCRRIIPPTTIIOONN
        The _t_k_a_e_c_a command is used to provide a GUI interface to _a_e_c_a(1).  Its
        use should be self-evident to anyone familiar with Aegis.

        The top line of the screen contains button for selecting the project
        and the change.  They will be defaulted whenever possible, using the
        usual Aegis defaulting rules.  Click on the buttons to obtain a pick
        list if you want to change; then double-click an item to select it.
        (I would have used tk_optionMenu, but it doesn't have a scroll bar,
        even when all the items don't fit on the screen.)

        The middle section contains text entry areas, for editing the
        _b_r_i_e_f___d_e_s_c_r_i_p_t_i_o_n and _d_e_s_c_r_i_p_t_i_o_n fields of the change attributes.
        The text wraps in a natural way, both here and in (say) the ``_t_k_a_e_c_a
        _-_l_i_s_t _c_h_a_n_d _d_e_t_a_i_l_s'' listing, so only use newlines to indicate end-
        of-paragraph.

        The lower section contains two boxes.  The first is the testing
        required for the change - select as many or as few as is appropriate.
        The second a set of radio buttons to select the change cause - pick
        one.

        The ``OK'' and ``Cancel'' buttons do what you expect.  The cancel
        button simply quits.  The OK button runs the _a_e_c_a(1) command - if
        anything goes wrong (_e_._g_. asking for testing exemptions you can't
        have) then the error message will be displayed in the message area at
        the bottom of the window.

OOPPTTIIOONNSS
        There are no command line options.  It is best to run this command in
        the background.

EEXXIITT SSTTAATTUUSS
        The _t_k_a_e_c_a command will exit with a status of 1 on any error.  The
        _t_k_a_e_c_a command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_c_a(1) View and edit change attributes, from the command line.

        _t_k_a_e_g_i_s(1)
                GUI interface for Aegis, using TCL/TK

CCOOPPYYRRIIGGHHTT
        tkaeca version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The tkaeca program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_t_k_a_e_c_a _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_t_k_a_e_c_a _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



tkaegis(1)                                                          tkaegis(1)



NNAAMMEE
        tkaegis - GUI interface for Aegis, using TCL/TK

SSYYNNOOPPSSIISS
        ttkkaaeeggiiss

DDEESSCCRRIIPPTTIIOONN
        The _t_k_a_e_g_i_s command is used to provide a GUI interface to Aegis.  Its
        use should be self-evident to anyone familiar with Aegis.

        There are some areas where tkaegis is still missing functionality;
        these are primarily related to project and change attributes that are
        not yet included in the dialogs, and also issues such as configuring
        the change and history tools, the architectures, and so on.

IINNSSTTAALLLLAATTIIOONN
        First, you will need Tcl/Tk installed, and will need to modify the
        path in the first line of tkaegis to reflect the path of your Tk wish
        interpreter.  Hopefully, the _._/_c_o_n_f_i_g_u_r_e script took care of this.

        Next, you may need to modify some important variables that occur
        immediately below these comments, to specify the architecture, project
        base directory, and the editor you are using (if you leave that blank,
        tkaegis will try to determine the editor to use from the EDITOR
        environment variable; if that fails, it will fall back to emacs or
        vi).

NNAAVVIIGGAATTIIOONN
        When you run tkaegis, a window will appear with a menu at the top.
        The window is used to display the output of aegis commands and some
        other feedback.  The menu will initially have only two items, Project
        and Help.  At this stage the Help menu only has an About dialog box.

        The Project menu will allow you to create new projects, select from
        your existing projects, clear the contents of the feedback window, or
        exit the program.  If you create a new project, a dialog box will
        appear allowing you to enter the project name, directory, and initial
        branch number.  When you press OK the project will be created and
        should then appear in the Project menu.

        If you select an existing project, a new option will be added to the
        Project menu, allowing you to delete the project.  A Branch menu will
        also appear.  This is similar to the Project menu, but allows you to
        create, delete, or select project branches.

        If you select a branch in the branch menu, a Role menu will appear.
        This will allow you to choose the role that you will be playing,
        namely one of administrator, developer, reviewer, or integrator.
        tkaegis uses your UNIX login name and the names of the roleplayers
        associated with the project and branch, to determine which of the
        roles it will allow you to choose.  If you create a new project, only
        the administrator role will appear.

        Selecting a role will put you in a `mode', which will determine what
        other menus appear and what you can do next.  Each mode will now be
        described in turn, by giving a brief description of the role-specific
        menu hierarchy.  Following the name of each menu item is the
        corresponding aegis command, where applicable.

AADDMMIINNIISSTTRRAATTOORR MMOODDEE
        In this mode, you can modify the staff and roles associated with the
        branch, and create, remove, and change the attributes of change
        requests, and view all the change requests.

        Admin:

            Edit Branch Attributes (aepa) -
                    Change the attributes for the branch

        Staff:

            Administrators:

                Add (aena) -
                        Add an administrator for the branch

                View (ael a) -
                        View the administrators for the branch

                Remove (aera) -
                        Remove an administrator for the branch

            Developers:

                Add (aend) -
                        Add a developer for the branch

                View (ael d) -
                        View the developers for the branch

                Remove (aerd) -
                        Remove a developer for the branch

            Reviewers:

                Add (aenrv) -
                        Add a reviewer for the branch

                View (ael r) -
                        View the reviewers for the branch

                Remove (aerrv) -
                        Remove a reviewer for the branch

            Integrators:

                Add (aeni) -
                        Add an integrator for the branch

                View (ael i) -
                        View the integrators for the branch

                Remove (aeri) -
                        Remove an integrator for the branch

            Change:

                Add New Change (aenc) -
                        Add a new change request

                New Change Undo (aencu) -
                        Undo the addition of a change request

                Edit Change Attributes (aeca) -
                        Modify the attributes of a change request

                View Changes (ael c) -
                        View the set of changes

DDEEVVEELLOOPPEERR MMOODDEE
        This mode is used by developers.  When entering this mode, the Develop
        menu will appear, but no others.  A change must be selected after
        which the other menus will appear.  If there is only one change
        awaiting development, this will be auto-selected.

        Develop:

            View Changes (ael c) -
                    View all the change requests

            Begin Change (aedb) -
                    Start work on a new change

            Continue Change -
                    Continue work on a change in development

            View Differences (aediff) -
                    Show all the diffs for this change

            Abort Change (aedbu) -
                    Abort working on the change

            End Change (aede) -
                    (Attempt to) end working on the change

            Resume Change (aedeu) -
                    Resume work on a change awaiting review

        File:

            Edit Files -
                    Allow files to be loaded into an editor

            Add New File (aenf) -
                    Add a new file to the project

            Discard New File (aenfu) -
                    Discard a newly added file

            Remove Existing File (aerm) -
                    Discard a previously existing file

            Restore Existing File (aermu) -
                    Undo discard of a previously existing file

            Change Existing File (aecp) -
                    Allow an existing file to be edited

            Undo Changes to Existing File (aecpu) -
                    Lose changes to an existing file

        Build:

            Build Project (aeb) -
                    Attempt to build the project

        Test:

            Add New Test Script (aent) -
                    Add a new test script to the project

            Discard New Test Script (aentu) -
                    Remove a new test script

            Run New Tests (aet) -
                    Run the new tests

            Run Regression Tests (aet -reg) -
                    Run the old tests

            Run Baseline Test (aet -bl) -
                    Run the baseline test

RREEVVIIEEWWEERR MMOODDEE
        In this mode you are able to review changes.

        Review:

            View Changes (ael c) -
                    View all the changes

            Begin Review (aerb) -
                    Start reviewing a change

            Abort Review (aerbu) -
                    Abort reviewing a change

            Pass (aerpass) -
                    Pass a change review

            Fail (aerfail) -
                    Fail a change review

            Undo Pass (aerpu) -
                    Undo a previously passed review

IINNTTEEGGRRAATTOORR MMOODDEE
        In this mode you can perform integration activities.

        Integrate:

            View Changes (ael c) -
                    View all the changes

            Start Integration (aeib) -
                    Start integrating a change

            Resume Integration -
                    Resume an integration in progress

            Cancel Integration (aeibu) -
                    Cancel an integration

            View Differences (aediff) -
                    Show the file differences for the change

            Build (aeb) -
                    Build the project

            New Tests (aet) -
                    Run the new tests

            Baseline Test (aet -bl) -
                    Run the baseline test

            Regression Test (aet -reg) -
                    Run the regression tests

            Pass (aeipass) -
                    Pass the integration

            Fail (aeifail) -
                    Fail the integration

SSEEEE AALLSSOO
        _t_k_a_e_c_a(1)
                GUI interface for the _a_e_c_a(1) command.

        _t_k_a_e_n_c(1)
                GUI interface for the _a_e_n_c(1) command.

        _t_k_a_e_p_a(1)
                GUI interface for the _a_e_p_a(1) command.

CCOOPPYYRRIIGGHHTT
        tkaegis version 4.20
        Copyright (C) 1995, 1999 Graham Wheeler

AAUUTTHHOORR
        Graham Wheeler <gram@cdsec.com>
        Citadel Data Security



tkaenc -Glup(1)                                                tkaenc -Glup(1)



NNAAMMEE
        tkaenc - GUI interface for aenc, using TCL/TK

SSYYNNOOPPSSIISS
        ttkkaaeenncc

DDEESSCCRRIIPPTTIIOONN
        The _t_k_a_e_n_c command is used to provide a GUI interface to _a_e_n_c(1).  Its
        use should be self-evident to anyone familiar with Aegis.

        The top line of the screen contains button for selecting the project.
        It will be defaulted using the usual Aegis defaulting rules.  Click on
        the buttons to obtain a pick list if you want to change it; then
        double-click an item to select it.  (I would have used tk_optionMenu,
        but it doesn't have a scroll bar, even when all the items don't fit on
        the screen.)

        The middle section contains text entry areas, for editing the
        _b_r_i_e_f___d_e_s_c_r_i_p_t_i_o_n and _d_e_s_c_r_i_p_t_i_o_n fields of the change attributes.
        The text wraps in a natural way, both here and in (say) the ``_t_k_a_e_n_c
        _-_l_i_s_t _c_h_a_n_g_e___d_e_t_a_i_l_s'' listing, so only use newlines to indicate end-
        of-paragraph.

        The lower section contains three boxes.  The first is the testing
        required for the change - select as many or as few as is appropriate.
        The second a set of radio buttons to select the change cause - pick
        one.

        The third box is whether to begin development immediately (it will
        also run the _a_e_d_b(1) command), or whether to leave the change in
        _a_w_a_i_t_i_n_g _d_e_v_e_l_o_p_m_e_n_t.

        The ``OK'' and ``Cancel'' buttons do what you expect.  The cancel
        button simply quits.  The OK button runs the _a_e_n_c(1) command - if
        anything goes wrong (_e_._g_. asking for testing exemptions you can't
        have) then the error message will be displayed in the message area at
        the bottom of the window.

        The number of the change will be printed on a message on the standard
        output, just as for a normal _a_e_n_c(1) command.

OOPPTTIIOONNSS
        There are no command line options.

EEXXIITT SSTTAATTUUSS
        The _t_k_a_e_n_c command will exit with a status of 1 on any error.  The
        _t_k_a_e_n_c command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_n_c(1) Create new changes from the command line.

        _a_e_d_b(1) Begin development of changes from the command line.

        _t_k_a_e_g_i_s(1)
                GUI interface for Aegis, using TCL/TK

CCOOPPYYRRIIGGHHTT
        tkaenc version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The tkaenc program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_t_k_a_e_n_c _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_t_k_a_e_n_c _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



tkaepa(1)                                                            tkaepa(1)



NNAAMMEE
        tkaepa - GUI interface for aeca, using TCL/TK

SSYYNNOOPPSSIISS
        ttkkaaeeppaa

DDEESSCCRRIIPPTTIIOONN
        The _t_k_a_e_p_a command is used to provide a GUI interface to _a_e_p_a(1).  Its
        use should be self-evident to anyone familiar with project
        administration under Aegis.

        The top line of the screen contains button for selecting the project
        The project will be defaulted whenever possible, using the usual
        Aegis.  defaulting rules.  Click on the buttons to obtain a pick list
        if you want to change; then double-click an item to select it.

        There is a text entry areas for editing the _d_e_s_c_r_i_p_t_i_o_n attribute.
        The lower section contains a number of checks boxes for the various
        attributes.

        The ``OK'' and ``Cancel'' buttons do what you expect.  The cancel
        button simply quits.  The OK button runs the _a_e_p_a(1) command - if
        anything goes wrong the error message will be displayed in the message
        area at the bottom of the window.

OOPPTTIIOONNSS
        There are no command line options.  It is best to run this command in
        the background.

EEXXIITT SSTTAATTUUSS
        The _t_k_a_e_p_a command will exit with a status of 1 on any error.  The
        _t_k_a_e_p_a command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_p_a(1) View and edit project attributes, from the command line.

        _t_k_a_e_g_i_s(1)
                GUI interface for Aegis, using TCL/TK

CCOOPPYYRRIIGGHHTT
        tkaepa version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The tkaepa program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_t_k_a_e_p_a _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_t_k_a_e_p_a _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



tkaer(1)                                                              tkaer(1)



NNAAMMEE
        tkaer - GUI tool for reviewing Aegis change sets, using TCL/TK

SSYYNNOOPPSSIISS
        ttkkaaeerr

DDEESSCCRRIIPPTTIIOONN
        The _t_k_a_e_r command is used to provide an easy and convenient way to
        review Aegis change sets. It provides a front-end to other tools which
        are used to view the modifications.

        Files in the change set are shown in one of four lists. The choice of
        list is based on the operation performed on the file by the change
        (create, modify, move or remove). Empty lists are not shown. The
        change details, as provided by _a_e_l(1) may be displayed by clicking on
        the ``Details'' button.

MMOODDIIFFIIEEDD AANNDD MMOOVVEEDD FFIILLEESS
        _t_k_d_i_f_f is used to show the differenceces between the change and
        baseline versions of modified and moved files. (In the case of moved
        files, the original name is used to access the baseline version.)

        Double-clicking button 1 on a file will show the differences between
        the change and the current branch baseline. Holding down button 3 will
        invoke a pop-up menu presenting the reviewer with a list of
        grandparent branches which also contain the file. This is particularly
        useful when rolling in branches.

NNEEWW AANNDD RREEMMOOVVEEDD FFIILLEESS
        New files are viewed by opening a new _x_t_e_r_m and using _v_i (in read-only
        mode) to display its contents. This method is also used for removed
        files, however it is the baseline version that is displayed (so that
        the reviewer can see what has been removed).

AADDDDIITTIIOONNAALL FFEEAATTUURREESS FFOORR RREEVVIIEEWWEERRSS..
        If the change is in the _b_e_i_n_g _r_e_v_i_e_w_e_d state, the reviewer may open
        the comments editor by clicking on the ``Comments'' button. These
        comments will be submitted should the reviewer decide that the review
        has failed. An outline of the files included in the change is
        automatically created.

        Once the review is complete, clicking the ``Finished'' button results
        in a dialog box which will allow the reviewer to pass or fail (via the
        _a_e_r_p_a_s_s(1) and _a_e_r_f_a_i_l(1) commands) the change. Alternatively, the
        reviewer may resume reviewing or quit, leaving the change state
        unmodified. If the change was not in the _b_e_i_n_g _r_e_v_i_e_w_e_d state, the
        ``Finished'' button simply causes _t_k_a_e_r to exit.

CCOONNFFIIGGUURRIINNGG TTKKAAEERR
        _t_k_a_e_r may be customised by the .tkaer file. This file is created by
        _t_k_a_e_r in the users home directory when it is first run. This newly
        created file contains the default configuration as described above,
        such as the choice of tools used in reviewing. The configuration file
        itself is a tcl script which is executed by the _t_k_a_e_r script using the
        _t_c_l ``source'' command. Each entry takes the form of a ``set''
        statement which adds an item to the pref array. Items currently
        supported are:


        pprreeff((ddiiffff__ccoommmmaanndd))
                This is the tool used to visually display the difference
                between a changes modified or moved file and the baseline
                version.  The default setting is
                set pref(diff_command) "tkdiff"
        You can change it to
                set pref(diff_command) "mgdiff"
        If you have the _m_g_d_i_f_f(1) command installed.

        pprreeff((vviieeww__ccoommmmaanndd))
                This is the tool used to visually display a new file or a
                removed files, prior contents. The default is _v_i(1)

        pprreeff((vviieeww__eeddiitt__ffoonntt))
                This is the font used by both the change details viewer and
                the review comments editor. Any available X11 font may be
                used.


OOPPTTIIOONNSS
        --CChhaannggee _n_u_m_b_e_r
                This option may be used to specify a particular change within
                a project.  See _a_e_g_i_s(1) for a complete description of this
                option.

        --PPrroojjeecctt _n_a_m_e
                This option may be used to select the project of interest.
                When no --PPrroojjeecctt option is specified, the _A_E_G_I_S___P_R_O_J_E_C_T
                environment variable is consulted.  If that does not exist,
                the user's _$_H_O_M_E_/_._a_e_g_i_s_r_c file is examined for a default
                project field (see _a_e_u_c_o_n_f(5) for more information).  If that
                does not exist, when the user is only working on changes
                within a single project, the project name defaults to that
                project.  Otherwise, it is an error.

EEXXIITT SSTTAATTUUSS
        The _t_k_a_e_r command will exit with a status of 1 on any error.  The
        _t_k_a_e_r command will only exit with a status of 0 if there are no
        errors.

EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
        See _a_e_g_i_s(1) for a list of environment variables which may affect this
        command.  See _a_e_p_c_o_n_f(5) for the project configuration file's
        _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all
        commands executed by Aegis.

SSEEEE AALLSSOO
        _a_e_r_p_a_s_s(1)
                pass review of a change

        _a_e_r_f_a_i_l(1)
                fail review of a change

        _t_k_a_e_g_i_s(1)
                GUI interface for Aegis, using TCL/TK

        _t_k_d_i_f_f  by John M. Klassa. TkDiff Home Page
                http://www.accurev.com/free/tkdiff

AAUUTTHHOORR
        _t_k_a_e_r contributed by Scott Finneran <sfinneran@lucent.com>



aecattr(5)                                                          aecattr(5)



NNAAMMEE
        aecattr - aegis change attributes file

DDEESSCCRRIIPPTTIIOONN
        A change attributes file is used to describe the modifiable portion of
        a change.

CCOONNTTEENNTTSS
        A change attributes file contains the following fields:

        description = string;
                This field contains a detailed description of the change.

        brief_description = string;
                This field contains a brief description of the change.

        cause = ( ... );
                This field describes the cause which motivated the change.

                external_bug
                        The change was created in response to a bug report
                        from outside the development team.  This repairs
                        existing functionality.

                external_enhancement
                        The change was created in response to an enhancement
                        request from outside the development team.  This adds
                        new functionality.

                external_improvement
                        The change was created in response to an improvement
                        request from outside the development team.  This
                        improves existing functionality.

                internal_bug
                        The change was created in response to a bug report
                        from inside the development team.  This repairs
                        existing functionality.

                internal_enhancement
                        The change was created in response to an enhancement
                        request from inside the development team.  This adds
                        new functionality.

                internal_improvement
                        The change was created in response to an improvement
                        request from inside the development team.  This
                        improves existing functionality.

                chain
                        This cause is where you have a fix to fix a fix;
                        tracking these is an interesting quality metric.

        test_exempt = boolean;
                This field is true if it is not necessary to test the change.
                It is, in general, desirable to test all changes, whether new
                functionality or a bug fix.  This is, however, a project
                management issue.

        test_baseline_exempt = boolean;
                This field is true if it is not necessary to test the change
                against the baseline before it is changed.  The test of the
                baseline is required to fail; this is to establish that the
                test has isolated the bug, and that the change has fixed that
                isolated bug.

        regression_test_exempt = boolean;
                This field is true if it is not necessary to perform a full
                regression test on the change.  If absent, defaults to true
                for all causes except improvements.

        architecture = [ string ];
                This field is a list of names of system and machine
                architectures on which the change must successfully build and
                test.

        copyright_years = [ integer ];
                This field details the years in which the change was worked
                on.  This field is present in trunk, branch and leaf nodes.

                As a change is edited, years in which the change was worked on
                accumulate in this field automatically.  Branches accumulate
                years as integrations occur.  You may need to manually edit
                this, though it should be rare.

        version_previous = string;
                This field records the "previous" version, mostly to simplify
                patch generation.  It is only meaningful for trunks and
                branches.  It is set automatically when a branch is started or
                integrated.

        attribute = [ { ... } ];
                This is a list of _(_n_a_m_e_,_v_a_l_u_e_) pairs, defining user specified
                attributes.

                name = string;
                        The name of the attribute.  By convention, names which
                        start with an upper-case letter will appear in
                        listings, and lower-case will not.  Attribute names
                        are case-insensitive.

                value = string;
                        The value of the attribute.

                Arguably, most change attributes which may be altered by the
                user (and some that can't) should be of this form.  Due to an
                accident of history, this is not the case.

SSEEEE AALLSSOO
        _a_e_n_c(1) create a new change

        _a_e_c_a(1) modify the attributes of a change

        _a_e_g_i_s(5)
                aegis file format syntax

        _a_e_c_s_t_a_t_e(5)
                change state file format

        _a_e_p_a_t_t_r(5)
                project attributes file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aecstate(5)                                                        aecstate(5)



NNAAMMEE
        aecstate - aegis change state file

SSYYNNOOPPSSIISS
        _p_r_o_j_e_c_t/info/change/_[_0_-_9_]/_[_0_-_9_]_[_0_-_9_]_[_0_-_9_]

DDEESSCCRRIIPPTTIIOONN
        A change state file is used to store information about a change.
        These files are created and maintained by aegis.  These files should
        not be edited by humans.  These files is owned by the project owner
        and group.

        The change number is at least 3 digits, zero padded if necessary.
        (More digits will be used if a project has a thousand or more changes
        in any one release, although this is rare.)  The files are spread
        across a directory tree, 100 per subdirectory, to improve the
        directory search times, and to avoid various systems' directory length
        limitations.

CCOONNTTEENNTTSS
        description = string;
                This field contains a detailed description of the change.

        brief_description = string;
                This field contains a brief description of the change.

        cause = ( ... );
                This field describes the cause which motivated the change.

                external_bug
                        The change was created in response to a bug report
                        from outside the development team.  This repairs
                        existing functionality.

                external_enhancement
                        The change was created in response to an enhancement
                        request from outside the development team.  This adds
                        new functionality.

                external_improvement
                        The change was created in response to an improvement
                        request from outside the development team.  This
                        improves existing functionality.

                internal_bug
                        The change was created in response to a bug report
                        from inside the development team.  This repairs
                        existing functionality.

                internal_enhancement
                        The change was created in response to an enhancement
                        request from inside the development team.  This adds
                        new functionality.

                internal_improvement
                        The change was created in response to an improvement
                        request from inside the development team.  This
                        improves existing functionality.

                chain
                        This cause is where you have a fix to fix a fix;
                        tracking these is an interesting quality metric.

        test_exempt = boolean;
                This field is true if it is not necessary to test the change.
                It is, in general, desirable to test all changes, whether new
                functionality or a bug fix.  This is, however, a project
                management issue.

        test_baseline_exempt = boolean;
                This field is true if it is not necessary to test the change
                against the baseline before it is changed.  The test of the
                baseline is required to fail; this is to establish that the
                test has isolated the bug, and that the change has fixed that
                isolated bug.

        regression_test_exempt = boolean;
                This field is true if it is not necessary to perform a full
                regression test on the change.  If absent, defaults to true
                for all causes except improvements.

        architecture = [ string ];
                This field is a list of names of system and machine
                architectures on which the change must successfully build and
                test.

        copyright_years = [ integer ];
                This field details the years in which the change was worked
                on.  This field is present in trunk, branch and leaf nodes.

                As a change is edited, years in which the change was worked on
                accumulate in this field automatically.  Branches accumulate
                years as integrations occur.  You may need to manually edit
                this, though it should be rare.

        version_previous = string;
                This field records the "previous" version, mostly to simplify
                patch generation.  It is only meaningful for trunks and
                branches.  It is set automatically when a branch is started or
                integrated.

        attribute = [ { ... } ];
                This is a list of _(_n_a_m_e_,_v_a_l_u_e_) pairs, defining user specified
                attributes.

                name = string;
                        The name of the attribute.  By convention, names which
                        start with an upper-case letter will appear in
                        listings, and lower-case will not.  Attribute names
                        are case-insensitive.

                value = string;
                        The value of the attribute.

                Arguably, most change attributes which may be altered by the
                user (and some that can't) should be of this form.  Due to an
                accident of history, this is not the case.

        state = ( ... );
                This field is used to describe what state the change is in.
                The state determines what operations may be performed on the
                change.

                awaiting_development
                        The change has been created, but has yet to be worked
                        on.

                being_developed
                        The change is being developed.

                awaiting_review
                        The change has been developed, and is waiting to be
                        review.  (Optional, controlled by the _d_e_v_e_l_o_p _e_n_d
                        _a_c_t_i_o_n project attribute.)

                being_reviewed
                        The change has been developed, and is being reviewed.
                        (Optional, controlled by the _d_e_v_e_l_o_p _e_n_d _a_c_t_i_o_n
                        project attribute.)

                awaiting_integration
                        The change has passed review, and is queued ready for
                        integration.

                being_integrated
                        The change is being integrated.

                completed
                        The change has been completed and is now part of the
                        baseline.  Changes in this state can not be reversed.

        given_test_exemption = boolean;
                This field is the value of test_exemption (see _a_e_c_a_t_t_r(5))
                when the change was created.

        given_regression_test_exemption = boolean;
                This field is the value of regression_test_exemption (see
                _a_e_c_a_t_t_r(5)) when the change was created.

        delta_number = integer;
                This field records the delta number for this change.  It is
                only present if the change is in one of the _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d
                or _c_o_m_p_l_e_t_e_d states.

        delta_uuid = string;
                This field records a universally unique identifier for this
                configuration.  It is supplements the _d_e_l_t_a___n_u_m_b_e_r field in
                that it is unique across all replicas of the project, whereas
                the delta number is ambiguous across replicas.  It is only
                present in the _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d and _c_o_m_p_l_e_t_e_d states.

        minimum_integration = boolean;
                This field records whether the change was placed into the
                _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d state using the -minimum option (or that
                option was implicitly set due to a file being removed).  It is
                only present if the change is in the _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d state.

        project_file_command_sync = integer;
                This field records the last change integrated into the
                project.  If it disagrees with the project, a
                'project_file_command' (from pconf) needs to be executed at
                the next build.

        test_time = time;
                This field records the time the last successful _a_e_g_i_s _-_T_e_s_t
                command was run for all architectures.  It is only present in
                the _b_e_i_n_g___d_e_v_e_l_o_p_e_d and _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d states.

        test_baseline_time = time;
                This field records the time the last successful _a_e_g_i_s _-_T_e_s_t
                _-_B_a_s_e_L_i_n_e command was run for all architectures.  It is only
                present in the _b_e_i_n_g___d_e_v_e_l_o_p_e_d and _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d states.

        regression_test_time = time;
                This field records the time the last successful _a_e_g_i_s _-_T_e_s_t
                _-_R_E_G_r_e_s_s_i_o_n command was run for all architectures.  It is only
                present in the _b_e_i_n_g___d_e_v_e_l_o_p_e_d and _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d states.

        build_time = time;
                This field records the last time the last successful _a_e_g_i_s
                _-_B_u_i_l_d command was run for all architectures.  It is only
                present in the _b_e_i_n_g___d_e_v_e_l_o_p_e_d and _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d states.

        architecture_times = [{ ... }];
                This field records the time of various operations for each
                variant named in the _a_r_c_h_i_t_e_c_t_u_r_e field.  It is only present
                in the _b_e_i_n_g___d_e_v_e_l_o_p_e_d and _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d states.

                variant = string;
                        This field is one of the patterns named in the
                        _a_r_c_h_i_t_e_c_t_u_r_e field.

                node = string;
                        This field is the computer on which the command was
                        run which last changed this structure.

                test_time = time;
                        This field records the last time the last successful
                        _a_e_g_i_s _-_T_e_s_t command was run for this specific pattern
                        instance.

                test_baseline_time = time;
                        This field records the last time the last successful
                        _a_e_g_i_s _-_T_e_s_t _-_B_a_s_e_L_i_n_e command was run for this
                        specific pattern instance.

                regression_test_time = time;
                        This field records the last time the last successful
                        _a_e_g_i_s _-_T_e_s_t _-_R_E_G_r_e_s_s_i_o_n command was run for this
                        specific pattern instance.

                build_time = time;
                        This field records the last time the last successful
                        _a_e_g_i_s _-_B_u_i_l_d command was run for this specific pattern
                        instance.

        development_directory = string;
                This field is the absolute path of a change's development
                directory.  It is only present of the change is in a state
                between _b_e_i_n_g___d_e_v_e_l_o_p_e_d and _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d inclusive.

                However, branches are treated slightly differently to changes.
                The directory is relative to the root of the project tree, in
                order to facilitate moving the project without rewriting any
                of the database.  Note that its doesn't point to the branch
                baseline, but one level up; just as the project root doesn't
                point to the trunk baseline, but rather one level up.

        integration_directory = string;
                This field is the absolute path of the change's integration
                directory.  It is only present of the change is in the
                _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d state.

        history = [ { ... }, ... ];
                This field records the history of the change, in the form of
                state transitions.  The history records have the form

                when = time;
                        This field records the time the state transition
                        occurred.

                what = ( ... );
                        This field records what happened.  Valid value names
                        echo the various aegis functions.

                who = string;
                        This field records the user name of the user who
                        caused the state transition.

                why = string;
                        This field is optional.  It is a comment of some sort.
                        In the cases of _r_e_v_i_e_w___f_a_i_l and _i_n_t_e_g_r_a_t_e___f_a_i_l, this
                        field will contain why the change failed.

        uuid = string;
                This field provides a globally unique identifier for the
                change set, even when geographically distributed development
                is happening.

        branch = { ... };
                This field is only present for branches (long transactions).

                umask = integer;
                        File permission mode mask.  See _u_m_a_s_k(2) for more
                        information.  This value will always be OR'ed with
                        022, because _a_e_g_i_s is paranoid.

                developer_may_review = boolean;
                        If this field is true, then a developer may review her
                        own change.  This is probably only a good idea for
                        projects of less than 3 people.  The idea is for as
                        many people as possible to critically examine a
                        change.

                        Note that the _d_e_v_e_l_o_p___e_n_d___a_c_t_i_o_n field may not
                        contradict the _d_e_v_e_l_o_p_e_r___m_a_y___r_e_v_i_e_w field.  If
                        developers may not review their own work, then their
                        changes may not goto directly to the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d
                        state (as this means much the same thing).

                developer_may_integrate = boolean;
                        If this field is true, then a developer may integrate
                        her own change.  This is probably only a good idea for
                        projects of less than 3 people.  The idea is for as
                        many people as possible to critically examine a
                        change.

                reviewer_may_integrate = boolean;
                        If this field is true, then a reviewer may integrate a
                        change she reviewed.  This is probably only a good
                        idea for projects of less than 3 people.  The idea is
                        for as many people as possible to critically examine a
                        change.

                developers_may_create_changes = boolean;
                        This field is true if developers may created changes,
                        in addition to administrators.  This tends to be a
                        very useful thing, since developers find most of the
                        bugs.

                forced_develop_begin_notify_command = string;
                        This command is used to notify a developer that a
                        change requires developing; it is issued when a
                        project administrator uses an _a_e_d_b _-_U_s_e_r command to
                        force development of a change by a specific user.  All
                        of the substitutions described in _a_e_s_u_b(5) are
                        available.  This field is optional.

                        Executed as: the new developer.  Current directory:
                        the development directory of the change for the new
                        developer.  Exit status: ignored.

                develop_end_notify_command = string;
                        This command is used to notify that a change is ready
                        for review.  It will probably use mail, or it could be
                        an in-house bulletin board.  This field is optional,
                        if not present no notification will be given.  This
                        command could also be used to notify other management
                        systems, such as progress and defect tracking.  All of
                        the substitutions described by _a_e_s_u_b(5) are available.

                        Executed as: the developer.  Current directory: the
                        development directory of the change.  Exit status:
                        ignored.

                develop_end_undo_notify_command = string;
                        This command is used to notify that a change had been
                        withdrawn from review for further development.  It
                        will probably use mail, or it could be an in-house
                        bulletin board.  This field is optional, if not
                        present no notification will be given.  This command
                        could also be used to notify other management systems,
                        such as progress and defect tracking.  All of the
                        substitutions described by _a_e_s_u_b(5) are available.

                        Executed as: the developer.  Current directory: the
                        development directory of the change.  Exit status:
                        ignored.

                review_begin_notify_command = string;
                        This command is used to notify that a review has
                        begun.  It will probably use mail, or it could be an
                        in-house bulletin board.  This field is optional, if
                        not present no notification will be given.  This
                        command could also be used to notify other management
                        systems, such as progress and defect tracking.  All of
                        the substitutions described by _a_e_s_u_b(5) are available.

                        Executed as: the reviewer.  Current directory: the
                        development directory of the change.  Exit status:
                        ignored.

                review_begin_undo_notify_command = string;
                        This command is used to notify that a review is no
                        longer in progress, the reviewer has withdrawn.  It
                        will probably use mail, or it could be an in-house
                        bulletin board.  This field is optional, if not
                        present no notification will be given.  This command
                        could also be used to notify other management systems,
                        such as progress and defect tracking.  All of the
                        substitutions described by _a_e_s_u_b(5) are available.

                        Executed as: the reviewer.  Current directory: the
                        development directory of the change.  Exit status:
                        ignored.

                review_pass_notify_command = string;
                        This command is used to notify that a review has
                        passed.  It will probably use mail, or it could be an
                        in-house bulletin board.  This field is optional, if
                        not present no notification will be given.  This
                        command could also be used to notify other management
                        systems, such as progress and defect tracking.  All of
                        the substitutions described by _a_e_s_u_b(5) are available.

                        Executed as: the reviewer.  Current directory: the
                        development directory of the change.  Exit status:
                        ignored.

                review_pass_undo_notify_command = string;
                        This command is used to notify that a review has
                        passed.  It will probably use mail, or it could be an
                        in-house bulletin board.  This field is optional, if
                        not present no notification will be given.  This
                        command could also be used to notify other management
                        systems, such as progress and defect tracking.
                        Defaults to the same action as the
                        _d_e_v_e_l_o_p___e_n_d___n_o_t_i_f_y___c_o_m_m_a_n_d field.  All of the
                        substitutions described by _a_e_s_u_b(5) are available.

                        Executed as: the reviewer.  Current directory: the
                        development directory of the change.  Exit status:
                        ignored.

                review_fail_notify_command = string;
                        This command is used to notify that a review has
                        failed.  It will probably use mail, or it could be an
                        in-house bulletin board.  This field is optional, if
                        not present no notification will be given.  This
                        command could also be used to notify other management
                        systems, such as progress and defect tracking.  All of
                        the substitutions described by _a_e_s_u_b(5) are available.

                        Executed as: the reviewer.  Current directory: the
                        development directory of the change.  Exit status:
                        ignored.

                integrate_pass_notify_command = string;
                        This command is used to notify that an integration has
                        passed.  It will probably use mail, or it could be an
                        in-house bulletin board.  This field is optional, if
                        not present no notification will be given.  This
                        command could also be used to notify other management
                        systems, such as progress and defect tracking.  All of
                        the substitutions described by _a_e_s_u_b(5) are available.

                        Some compilers bury absolute path names into object
                        files and executables.  The renaming of the
                        integration directory to become the new baseline
                        breaks these paths.  This command is passed an
                        environment variable called AEGIS_INTEGRATION_-
                        DIRECTORY so that the appropriate symlink may be
                        placed, if desired.

                        Executed as: the project owner.  Current directory:
                        the new project baseline.  Exit status: ignored.

                integrate_fail_notify_command = string;
                        This command is used to notify that an integration has
                        failed.  It will probably use mail, or it could be an
                        in-house bulletin board.  This field is optional, if
                        not present no notification will be given.  This
                        command could also be used to notify other management
                        systems, such as progress and defect tracking.  All of
                        the substitutions described by _a_e_s_u_b(5) are available.

                        Executed as: the integrator.  Current directory: the
                        development directory of the change.  Exit status:
                        ignored.

                default_test_exemption = boolean;
                        This field contains what to do when a change is
                        created with no test exemption specified.

                history = [{ ... }];
                        This field contains a history of integrations for the
                        project.  Updated by each successful 'aegis
                        -Integrate_Pass' command.

                        delta_number = integer;
                                The delta number of the integration.

                        change_number = integer;
                                The number of the change which was integrated.

                        name = [ string ];
                                The names by which this delta is known.

                change = [integer];
                        The list of changes which have been created on this
                        branch to date.

                sub_branch = [integer];
                        The list of branches which have been created on this
                        branch to date.  This will be a subset of the above
                        (possibly empty, possibly complete, never larger).

                administrator = [string];
                        The list of administrators of the branch.

                developer = [string];
                        The list of developers of the branch.

                reviewer = [string];
                        The list of reviewers of the branch.

                integrator = [string];
                        The list of integrators of the branch.

                currently_integrating_change = integer;
                        The change currently being integrated.  Only one
                        change (within a branch) may be integrated at a time.
                        Only set when an integration is in progress.

                default_development_directory = string;
                        The pathname of where to place new development
                        directories.  The pathname must be absolute.  This
                        field is only consulted if the field of the same name
                        in the user configuration file is not set.

                minimum_change_number = integer;
                        The minimum change number for _a_e_n_c_(_1_)_, if no change
                        number is specified.  This allows the low-numbered
                        change numbers to be used for branches later in the
                        project.  Defaults to 10 if not set, may not be less
                        than 1.

                reuse_change_numbers = boolean;
                        This controls whether the automatically selected
                        _a_e_n_c(1) change numbers ``fill in'' any gaps.  Defaults
                        to true if not set.

                minimum_branch_number = integer;
                        The minimum branch number for _a_e_n_b_r_(_1_)_, if no branch
                        number is specified.  Defaults to 1 if not set.

                skip_unlucky = boolean;
                        This field may be set to true if you want to skip
                        various unlucky numbers for changes, branches and
                        tests.  Various traditions are avoided, both Eastern
                        and Western.  Defaults to false if not set.

                compress_database = boolean;
                        This field may be set to true if you want to compress
                        the database on writing.  (It is always uncompress on
                        reading if necessary.)  Defaults to false if not set.

                        Unless you have an exceptionally large project,
                        coupled with fast CPUs and high network latency, there
                        is probably very little benefit in using this feature.
                        (The database is usually less than 5% of the size of
                        the repository.)  On slow networks, however, this can
                        improve the performance of file-related commands.

                develop_end_action = (...);
                        This field controls the state the change enters after
                        a successful _a_e_d_e(1) action.

                        _g_o_t_o___b_e_i_n_g___r_e_v_i_e_w_e_d
                                This means that the change goes from the
                                _b_e_i_n_g___d_e_v_e_l_o_p_e_d state to the _b_e_i_n_g___r_e_v_i_e_w_e_d
                                state.  The _a_e_r_b(1) command only sends
                                informative email.

                        _g_o_t_o___a_w_a_i_t_i_n_g___r_e_v_i_e_w
                                This means that the change goes from the
                                _b_e_i_n_g___d_e_v_e_l_o_p_e_d state to the _a_w_a_i_t_i_n_g___r_e_v_i_e_w
                                state.  The _a_e_r_b(1) command is now mandatory.

                        _g_o_t_o___a_w_a_i_t_i_n_g___i_n_t_e_g_r_a_t_i_o_n
                                This means that the change goes from the
                                _b_e_i_n_g___d_e_v_e_l_o_p_e_d state into the _a_w_a_i_t_i_n_g___-
                                _i_n_t_e_g_r_a_t_i_o_n state.  Code review is skipped
                                entirely.

                        Note that the _d_e_v_e_l_o_p___e_n_d___a_c_t_i_o_n field may not
                        contradict the _d_e_v_e_l_o_p_e_r___m_a_y___r_e_v_i_e_w field.  If
                        developers may not review their own work, then their
                        changes may not goto directly to the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d
                        state (as this means much the same thing).  A
                        contradictory setting will be replaced with _g_o_t_o___-
                        _b_e_i_n_g___r_e_v_i_e_w_e_d.

   OObbssoolleettee FFiieellddss
        The following fields are only present is old projects.  They will be
        moved to an appropriate file state when the change is next modified.
        See _a_e_f_s_t_a_t_e(5) for more information.

        src = [ { ... }, ... ];
                This field is a list of all the files in the change.  The
                records have the form

                file_name = string;
                        This file names the file.  The name is relative to the
                        root of the baseline directory tree.

                uuid = string;
                        This field uniquely identifies the file for its entire
                        lifetime.  This field remains constant across file
                        renames.  The value of this field shall be formatted
                        as a valid UUID, all in lower case.

                action = (create, modify, remove);
                        This field describes what is being done with the file.

                edit_number = string;
                        This field records the edit number of the file when it
                        was added to the change (or updated using the _a_e_g_i_s
                        _-_D_I_F_F_e_r_e_n_c_e command).  This field is not present for
                        new files.

                usage = (source, config, build, test, manual_test);
                        This field describes what function the file serves.

                diff_time = time;
                        This field records the last time modified of the
                        change file when the last _a_e_g_i_s _-_D_I_F_F_e_r_e_n_c_e command
                        was run.  It is only present between the
                        _b_e_i_n_g___d_e_v_e_l_o_p_e_d and _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d states,
                        inclusive.  It is not present for files which are
                        being deleted.  This field is used to determine if a
                        difference has been done, and if the file has been
                        tampered with before state transitions.

                diff_file_time = time;
                        This field records the last time modified of the
                        difference file when the last _a_e_g_i_s _-_D_I_F_F_e_r_e_n_c_e
                        command was run.  It is only present between the
                        _b_e_i_n_g___d_e_v_e_l_o_p_e_d and _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d states,
                        inclusive.  This field is used to determine if a
                        difference has been done, and if the difference file
                        has been tampered with before state transitions.

                move = string;
                        To change the name of a file, a combination of
                        deleting the old name and creating the new name is
                        used.  With deleted files, this field is used to say
                        where it went.  With new files, this field is used to
                        say where it came from.

WWRRIITTIINNGG RREEPPOORRTT SSCCRRIIPPTTSS
        When attempting to access these fields from within the report
        generator, you need a code fragment similar to the following:
                auto ps;
                ps = project[project_name()].state;
                auto cs;
                cs = ps.branch.change[change_number()];
        All of the fields mentioned in the man page can now be accessed as
        members of the cs variable.  For example, cs.state contains the state
        the change is in.

        If this change state refers to a branch, when you access a member of
        the _b_r_a_n_c_h_._c_h_a_n_g_e field, you are given access to the change state data
        of that change on the branch.

        When you index the _s_r_c field by a filename string, you may obtain
        access the the relevant file state (see _a_e_f_s_t_a_t_e(5) for more
        information).

SSEEEE AALLSSOO
        _a_e_n_c(1) create a new change

        _a_e_g_i_s(5)
                aegis file format syntax

        _a_e_c_a_t_t_r(5)
                change attributes file format

        _a_e_f_s_t_a_t_e(5)
                file state file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aedir(5)                                                              aedir(5)



NNAAMMEE
        aedir - aegis directory structures

DDEESSCCRRIIPPTTIIOONN
        The project directory structure is dictated by _a_e_g_i_s at the top level,
        but is completely under the project's control from various points
        below the top level.

        The project directory has the following contents
                _p_r_o_j_e_c_t/
                        baseline/
                                aegis.conf
                                _._._._p_r_o_j_e_c_t _s_p_e_c_i_f_i_c_._._.
                                test/
                                        _[_0_-_9_]_[_0_-_9_]/
                                                t_[_0_-_9_]_[_0_-_9_]_[_0_-_9_]_[_0_-_9_]a.sh
                                                t_[_0_-_9_]_[_0_-_9_]_[_0_-_9_]_[_0_-_9_]m.sh
                        history/
                                _._._._e_c_h_o _o_f _b_a_s_e_l_i_n_e_._._.
                        delta._[_0_-_9_]_[_0_-_9_]_[_0_-_9_]/
                                _._._._e_c_h_o _o_f _b_a_s_e_l_i_n_e_._._.
                        info/
                                state
                                change/
                                        _[_0_-_9_]/
                                                _[_0_-_9_]_[_0_-_9_]_[_0_-_9_]

        The directory is structured in this way so that it is possible to pick
        an entire project up off the disk, and be confident that you got it
        all.

        The location of the root of this tree is configurable, and may even be
        changed during the life of a project.

        The contents of the _b_a_s_e_l_i_n_e subdirectory, other than those given, are
        defined by the project, and not dictated by aegis.

        The contents of the _d_e_l_t_a_._N_N_N directory, when it exists, are an image
        of the _b_a_s_e_l_i_n_e directory.  It is frequently linked with the baseline,
        rather than a copy of it; see the _l_i_n_k___i_n_t_e_g_r_a_t_i_o_n___d_i_r_e_c_t_o_r_y field
        description in _a_e_p_c_o_n_f(5) for more information.

        The contents of the _h_i_s_t_o_r_y contains the edit histories of the
        _b_a_s_e_l_i_n_e directory, and is in all other ways an image of it.  Note
        that _b_a_s_e_l_i_n_e always contains the latest source; the _h_i_s_t_o_r_y directory
        is just history.  The actual files in the history directory tree will
        not always have names the same as those in the baseline; compare the
        methods used by SCCS and RCS.

        The contents of the _b_a_s_e_l_i_n_e_/_t_e_s_t directory are the tests which are
        created by changes.  Test histories are also stored in the _h_i_s_t_o_r_y
        subdirectory.  Tests are treated as project source.

        The edit histories are separated out to simplify the task of taking a
        "snapshot" of the source of a project, without airing all the dirty
        laundry.

        The _b_a_s_e_l_i_n_e directory always contains the latest source, and so the
        _h_i_s_t_o_r_y directory need not be readily accessible, because the build
        mechanism (something like _m_a_k_e(1), but preferably better) does not
        need to know anything about it.  Similarly for tests.

        The _b_a_s_e_l_i_n_e_/_a_e_g_i_s_._c_o_n_f file is used to tell aegis everything else it
        needs to know about a project.  See _a_e_p_c_o_n_f(5) for more information.
        This file  is a source file of the project, and is treated in the same
        way as all source files.  The name of this file is not mandatory.

SSEEEE AALLSSOO
        _a_e_n_c(1) create a new change

        _a_e_n_p_r(1)
                create a new project

        _a_e_g_i_s(5)
                aegis file format syntax

        _a_e_p_c_o_n_f(5)
                project configuration file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aefattr(5)                                                          aefattr(5)



NNAAMMEE
        aefattr - aegis file attribute file format

SSYYNNOOPPSSIISS
        aaeeffaa --eeddiitt  _f_i_l_e_n_a_m_e

DDEESSCCRRIIPPTTIIOONN
        This file format is used to set or edit file attributes.

CCOONNTTEENNTTSS
        attribute = [ { ... } ];
                This is a list of _(_n_a_m_e_,_v_a_l_u_e_) pairs, defining user specified
                attributes.

                name = string;
                        The name of the attribute.  By convention, names which
                        start with an upper-case letter will appear in
                        listings, and lower-case will not.

                value = string;
                        The value of the attribute.

SSEEEE AALLSSOO
        _a_e_g_i_s(5)
                aegis file format syntax

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aefstate(5)                                                        aefstate(5)



NNAAMMEE
        aefstate - aegis file state file

SSYYNNOOPPSSIISS
        _p_r_o_j_e_c_t/info/change/_[_0_-_9_]/_[_0_-_9_]_[_0_-_9_]_[_0_-_9_].fs

DDEESSCCRRIIPPTTIIOONN
        A file state file is used to store information about the files in a
        transaction.  These files are created and maintained by aegis.  These
        files should not be edited by humans.  These files is owned by the
        project owner and group.

CCOONNTTEENNTTSS
        src = [ { ... }, ... ];
                This field is a list of all the files in the change.  The
                records have the form

                file_name = string;
                        This file names the file.  The name is relative to the
                        root of the baseline directory tree.

                uuid = string;
                        This field uniquely identifies the file for its entire
                        lifetime.  This field remains constant across file
                        renames.  The value of this field shall be formatted
                        as a valid UUID, all in lower case.

                action = (create, modify, remove, insulate, transparent);
                        This field describes what is being done with the file.

                        create  The file is being created.  Once integrated,
                                the edit fields record the file version
                                created and stored in the history.

                        modify  The file is being created.  Once integrated,
                                the edit fields record the file version stored
                                in the history.

                        remove  The file is being created.  The edit field is
                                only informational, and describes the file
                                version at the time it was removed from the
                                repository.

                        insulate
                                The file is insulating a development directory
                                from changes to the baseline, it shall be
                                uncopied before development may end.  This
                                action shall only be present in changes.  It
                                shall never  be present in branch change state
                                files.

                        transparent
                                The file wasonce present in the branch,
                                however it is desired that the ancestor
                                version "show through".  This is the
                                equivalent of "uncopy" for branches.  When the
                                branch is integrated, this file will be
                                omitted.

                edit = { ... };
                        For a project or an active branch, this field records
                        the head revision of the file.  For a completed change
                        or branch, this field records the revision number
                        after integrate pass.

                        revision = string;
                                This is the edit number, as reported by the
                                _h_i_s_t_o_r_y___g_e_t___c_o_m_m_a_n_d in the project _c_o_n_f_i_g file
                                at integrate pass time.

                        encoding = (none, quoted_printable, base64);
                                This field records the encoding used when the
                                file was added to the history at integrate
                                pass time, as configured by one of the
                                _h_i_s_t_o_r_y___p_u_t___c_o_m_m_a_n_d or _h_i_s_t_o_r_y___g_e_t___c_o_m_m_a_n_d and
                                _h_i_s_t_o_r_y___c_o_n_t_e_n_t___l_i_m_i_t_a_t_i_o_n fields of the
                                project _c_o_n_f_i_g file.

                                none    No encoding was applied to the file.
                                        Either it had no binary characters, or
                                        the history tool is able to cope with
                                        binary files.

                                quoted_printable
                                        The MIME Quoted Printable encoding
                                        (see RFC 1521) has been used to escape
                                        the binary characters of the file
                                        content.

                                base64  The MIME Base 64 encoding (see RFC
                                        1521) has been used to encode the file
                                        content.

                                The _h_i_s_t_o_r_y___c_o_n_t_e_n_t___l_i_m_i_t_a_t_i_o_n field of the
                                project _c_o_n_f_i_g file is used to determine which
                                files need encoding.  The size of the encoded
                                file is compared to determine which of quoted
                                printable and base 64 encodings is used; the
                                smaller is chosen.

                edit_number = string;
                        This field is obsolescent.  It is only present for
                        backwards compatibility.  It has been replaced by the
                        _e_d_i_t field.

                edit_origin = { ... };
                        This field records the edit number of the file when it
                        was added to the change or branch.  In changes, this
                        field is not present for new files.  (A change file is
                        out of date if it's edit number_origin field does not
                        equal the edit_number field in the project.)

                        It has the same fields, with the same meaning, as the
                        _e_d_i_t field, above.

                edit_number_origin = string;
                        This field is obsolescent.  It is only present for
                        backwards compatibility.  It has been replaced by the
                        _e_d_i_t___o_r_i_g_i_n field.

                edit_origin_new = { ... };
                        This field records the edit number of the file to
                        replace the edit_number_origin field in the branch at
                        integrate pass time.  This is used to perform cross
                        branch merging.  This field cleared at integrate pass
                        time.

                        It has the same fields, with the same meaning, as the
                        _e_d_i_t field, above.

                edit_number_origin_new = string;
                        This field is obsolescent.  It is only present for
                        backwards compatibility.  It has been replaced by the
                        _e_d_i_t___o_r_i_g_i_n___n_e_w field.

                usage = (source, config, build, test, manual_test);
                        This field describes what function the file serves.

                file_fp = fingerprint;
                        This field records the last time modified of the
                        source file.  It is only present between the
                        _b_e_i_n_g___d_e_v_e_l_o_p_e_d and _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d states, inclusive
                        (for both changes and branches).  It is not present
                        for files which are being deleted.  This field is used
                        to determine if a difference has been done, or a test
                        has been done if the source file is a test, and if the
                        file has been tampered with before state transitions.

                        The fingerprint consists of the following fields:

                        youngest = time;
                                The youngest time see for this file with this
                                fingerprint.

                        oldest = time;
                                The oldest time see for this file with this
                                fingerprint.

                        crypto = string;
                                This field records a cryptographically strong
                                fingerprint for the file.  There is no known
                                method of constructing a file to match a given
                                fingerprint, and there is less than 1 in
                                2**200 chance that two files will have the
                                same fingerprint.  Thus if the fingerprint is
                                the same, the file can reliably assumed to be
                                the same.

                diff_file_fp = fingerprint;
                        This field records the last time modified of the
                        difference file when the last _a_e_g_i_s _-_D_I_F_F_e_r_e_n_c_e
                        command was run.  It is only present between the
                        _b_e_i_n_g___d_e_v_e_l_o_p_e_d and _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d states, inclusive
                        (for both changes and branches).  This field is used
                        to determine if a difference has been done, and if the
                        difference file has been tampered with before state
                        transitions.

                idiff_file_fp = fingerprint;
                        This field records the last time modified of the
                        integration difference file when the last _a_e_g_i_s
                        _-_D_I_F_F_e_r_e_n_c_e command was run.  It is only present in
                        the _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d state.  This field is used to
                        determine if a difference has been done.

                architecture_times = [{ ... }];
                        This field records the time of various operations for
                        each variant named in the _a_r_c_h_i_t_e_c_t_u_r_e field.  It is
                        only present in the _b_e_i_n_g___d_e_v_e_l_o_p_e_d and
                        _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d states.  This field is used to
                        determine if a test has been done, and thus optimize
                        test runs.

                        variant = string;
                                This field is one of the patterns named in the
                                _a_r_c_h_i_t_e_c_t_u_r_e field.

                        test_time = time;
                                This field records the last time the last
                                successful _a_e_g_i_s _-_T_e_s_t command was run for
                                this specific pattern instance.

                        test_baseline_time = time;
                                This field records the last time the last
                                successful _a_e_g_i_s _-_T_e_s_t _-_B_a_s_e_L_i_n_e command was
                                run for this specific pattern instance.

                move = string;
                        To change the name of a file, a combination of
                        deleting the old name and creating the new name is
                        used.  With deleted files, this field is used to say
                        where it went.  With new files, this field is used to
                        say where it came from.

                locked_by = integer;
                        The change which locked this file.
                        Caveat: this field is redundant, you can figure it out
                        by scanning all of he change files.  Having it here is
                        very convenient, even though it means multiple
                        updates.

                about_to_be_created_by = integer;
                        The change which is about to create this file for the
                        first time.  Same caveat as above.

                about_to_be_copied_by = integer;
                        For each change file that is acting on a project file
                        from a deeper baseline than the immediate parent
                        project's baseline, the file needs to be added to the
                        immediate parent project.  Note that this field says
                        that this file record is a place marker, so that it
                        can be deleted again should the change not be
                        integrated for some reason.

                deleted_by = integer;
                        The change which last deleted this file.  We never
                        throw them away, because (a) it may be created again,
                        and more important (b) we need it to recreate earlier
                        deltas.

        test = [ string ];
                This field is used to remember test correlations for source
                files.  This is used by _a_e_t(1) to suggest suitable tests.

        metrics = [ { ... } ];
                This field is used to describe various file metrics.  It is
                committed during _a_e_i_p_a_s_s(1), when the file is added to the
                history.  The name must be given, and exactly one value.

                name = string;
                        This is the name of the metric.  This field must be
                        set.

                value = real;
                        This is the value of the metric.  This field must be
                        set.  (If you have an integer-valued metric, just use
                        integers, Aegis will cope.  If you have a string-
                        valued metric, assign integers to the enumerands.)

        executable = boolean;
                This field is used to remember whether the source file had any
                executable permission bits set at _d_e_v_e_l_o_p _e_n_d time.  This mode
                will be restored (taking the project umask into account) when
                the file is copied.

                This field is only meaningful for changes in the _c_o_m_p_l_e_t_e_d
                state, because this field is only set by _a_e_i_p(1).  Until then,
                the mode if the file itself is the authority.

        attribute = [ { ... } ];
                This is a list of _(_n_a_m_e_,_v_a_l_u_e_) pairs, defining user specified
                attributes.

                name = string;
                        The name of the attribute.  By convention, names which
                        start with an upper-case letter will appear in
                        listings, and lower-case will not.  Attribute names
                        are case-insensitive.

                value = string;
                        The value of the attribute.

                Arguably, most file properties which may be altered by the
                user (and some that can't) should be of this form.  Due to an
                accident of history, this is not the case.

WWRRIITTIINNGG RREEPPOORRTT SSCCRRIIPPTTSS
        When attempting to access these fields from within the report
        generator, you need a code fragment similar to the following:
                auto ps, pfs;
                ps = project[project_name()].state;
                fps = ps.src["somefile"];
                auto cs, cfs;
                cs = ps.branch.change[change_number()];
                cfs = cs.src["somefile"];
        Notice that the top-level fields of the file state are not available,
        but instead are mapped onto the relevant project file and change file
        _s_r_c arrays.

        All of the src member fields mentioned in the man page can now be
        accessed as members of the pfs or cfs variables.

SSEEEE AALLSSOO
        _a_e_g_i_s(5)
                aegis file format syntax

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis(5)                                                              aegis(5)



NNAAMMEE
        aegis - file format

DDEESSCCRRIIPPTTIIOONN
        The files used by the _a_e_g_i_s program all have the same format.  Some of
        the files used by aegis are created and maintained by humans, and some
        are created an maintained by aegis itself.  The various manual entries
        say which is which.

LLEEXXIICCAALL CCOONNSSIIDDEERRAATTIIOONNSS
        Names are any C identifier.  Comments are C-style comments (or C++ or
        shell).  Numbers are decimal, octal or hexadecimal, as for C
        constants.  Whitespace (spaces, tabs and newlines) are ignored except
        in strings or as they serve to separate tokens.

        Strings are C-style strings, and similar to C, sequential string
        constants are silently catenated together.

        In addition, there is a style of @string@ which use at-signs (@) for
        quoting.  Unlike the C style of string, newlines are allowed within
        these strings.  To get an at-sign in such a string, double the at-
        sign.  There is no other escape mechanism available.

GGRRAAMMMMAARR
        The format of all aegis files is described by a _y_a_c_c _(_1_) grammar.
                %%
                file
                        : field_list
                        ;
        A file contains a field list.
                field_list
                        : /* empty */
                        | field_list field
                        ;
        A field list is zero or more fields.
                field
                        : NAME '=' value ';'
                        ;
        A field is set by giving a name and a value.
                value
                        : NAME
                        | INTEGER
                        | STRING
                        | structure
                        | list
                        ;
        A value may be a member of an enumeration (NAME), or an integer
        constant, or a literal string.  More complex values may be constructed
        from these simple values.
                structure
                        : '{' field_list '}'
                        ;
        A structure is a grouped list of fields.
                list
                        : '[' list_body ']'
                        ;
                list_body
                        : /* empty */
                        | value_list
                        | value_list ','
                        ;
                value_list
                        : value
                        | value_list ',' value
        A list is a sequential list of values separated by commas.  It may be
        empty, or it may have a trailing comma.

SSEEMMAANNTTIICCSS
        The types of the values must match those in the definition of the
        file.  See the relevant man pages for more information.

        Files which are rewritten by aaeeggiiss will lose any comments placed in
        them.  When time fields are emitted by aaeeggiiss they are usually followed
        by a human readable date in a comment.

SSEEEE AALLSSOO
        _a_e_g_i_s(1)
                a project change supervisor

        _a_e_c_a_t_t_r(5)
                change attribute file format

        _a_e_c_s_t_a_t_e(5)
                change state file format

        _a_e_d_i_r(5)
                directory structures

        _a_e_g_s_t_a_t_e(5)
                aegis state file

        _a_e_p_a_t_t_r(5)
                project attribute file format

        _a_e_p_c_o_n_f(5)
                project configuration file format

        _a_e_p_s_t_a_t_e(5)
                project state file format

        _a_e_s_u_b(5)
                available command substitutions

        _a_e_u_c_o_n_f(5)
                user configuration file format

        _a_e_u_s_t_a_t_e(5)
                user state file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegstate(5)                                                        aegstate(5)



NNAAMMEE
        aegstate - aegis state file

SSYYNNOOPPSSIISS
        /var/lib/aegis/state

DDEESSCCRRIIPPTTIIOONN
        The aegis state file is used to store the pointers to project
        directories.

CCOONNTTEENNTTSS
        where = [{ ... }];
                This field is a table relating project name to project
                directory.  The structure is as follows:

                project_name = string;
                        The name of a project.

                directory = string;
                        Absolute path of the project's directory.  (Only set
                        of _a_l_i_a_s___f_o_r is not set.)

                alias_for = string;
                        This is the name of another project, possibly
                        including branch numbers.  It allows you to have
                        shorter or more meaningful project names.  (Only set
                        if _d_i_r_e_c_t_o_r_y is not set.)

WWRRIITTIINNGG RREEPPOORRTT SSCCRRIIPPTTSS
        When attempting to access these fields from within the report
        generator, you need a code fragment similar to the following:
                auto p;
                p = project[project_name()];
        That is, the where field is represented by the project array variable,
        however, it does not mention the aliases, only the actual projects,
        similar to the ``_a_e_l _p_r_o_j_e_c_t_s'' command.  (You can, however, index the
        projects array by an alias, or even by a project name with branches on
        the end.)

        In addition to the _p_r_o_j_e_c_t___n_a_m_e and _d_i_r_e_c_t_o_r_y fields specified above,
        the report generator insets a _s_t_a_t_e field, which gives you access to
        the project state fields (see _a_e_p_s_t_a_t_e(5) for more information).

SSEEEE AALLSSOO
        _a_e_g_i_s(5)
                aegis file format syntax

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aegis locking(5)                                              aegis locking(5)



NNAAMMEE
        aegis locks - how locking works, and which commands use them

DDEESSCCRRIIPPTTIIOONN
        Aegis maintains a database of information about the projects in its
        care, and the various changes, both completed and in progress.  In
        order to ensure the integrity of this database, and also your project
        repository, it uses locks.

        From time to time, these locks are visible to the users, because they
        will be told that a command is waiting for a particular lock.  For
        some transactions, this can be a long wait.

   DDiinniinngg PPhhiilloossoopphheerrss
        While UNIX supplies locks in various flavors, if you need an entire
        set of locks simultaneously, there is no elegant ``all or nothing''
        interface available.  This is unsurprising, as this is one of the
        classic computer science problems, known as the Dining Philosophers
        problem.

        The master lock is used to solve the Dining Philosophers problem, and
        is meant to be very transient.  It is only held while the other locks
        which are required (frequently two or more, hence the problem) are
        requested - non-blocking.  Once they are all obtained (or not, and any
        partials given back) the master lock is released.  It is usually held
        for _m_u_c_h less than a second.  If you notice the master lock being
        held, it is almost always a symptom of the NFS lock daemon
        misbehaving.

        If the lock(s) could not be obtained, the blocking lock is waited on
        (without the master).  This is when the "waiting for" message is
        issued.  When obtained, it is _r_e_l_e_a_s_e_d and the whole cycle starts
        again.  This is why you occasionally see a series of "waiting for"
        messages.  (This could maybe be optimized some, but it is still
        possible to block on yet another lock, and they you have to release
        all and wait again.  As yet, I'm not convinced the extra code
        complexity is required.)

   LLiissttiinngg LLoocckkss
        There is a command available to list the current Aegis locks.
                aegis -list locks
        Note that the project names are change numbers are _g_u_e_s_s_e_s as the
        locks are hashed over a 16-bit range, and range overlaps are possible.
        Collisions are also possible, but fortunately rarer.

   KKnnoowwnn PPrroobblleemmss
        There is a known problem with the HP/UX NFS clients.  If you see
        persistent "no locks available" error messages when _/_u_s_r_/_l_i_b_/_a_e_g_i_s is
        NFS mounted, try making the _/_u_s_r_/_l_i_b_/_a_e_g_i_s_/_l_o_c_k_f_i_l_e file world
        writable.  chmod 666 /usr/lib/aegis/lockfile There is the possibility
        of a denial of service attack (which is why the default is 0600) but
        since you are presently denied service anyway, it's academic.

CCOOMMMMAANNDDSS
        The following table shows the locks taken by the various commands.
        Note that theoretically some of the commands take too _f_e_w locks, but
        this has yet to prove to be a problem in practice.  Also, "project
        state file" and "change state file" are the same thing for branches,
        it just depends which way you are looking at them at the time.

        Command      Global      Project    Project     Ancestor     Change       User
                     State       State      Baseline    Baselines    State        State
                     File        File                                File         File
        ----------------------------------------------------------------------------------
        aeb (dev)       .           .        shared      shared     exclusive       .
        aeb (int)       .           .           .        shared     exclusive       .
        aeca            .           .           .           .       exclusive       .
        aechown         .           .           .           .       exclusive   exclusive
        aeclean         .           .           .           .       exclusive       .
        aeclone         .       exclusive       .           .       exclusive   exclusive
        aecp            .           ,           ,           ,       exclusive       .
        aecpu           .           .           .           .       exclusive       .
        aed             .           ,           ,           ,       exclusive       .
        aedb            .           .           .           .       exclusive   exclusive
        aedbu           .           .           .           .       exclusive   exclusive
        aede            .           ,           .           .       exclusive   exclusive
        aedeu           .           .           .           .       exclusive   exclusive
        aedn            .       exclusive       .           .           .           .
        aeib            .       exclusive       .           .       exclusive   exclusive
        aeibu           .       exclusive       .           .       exclusive   exclusive
        aeifail         .       exclusive       .           .       exclusive   exclusive
        aeipass         .       exclusive   exclusive       .       exclusive   exclusive
        aemv            .           ,           ,           ,       exclusive       .
        aena            .       exclusive       .           .           .           .
        aenbr           .       exclusive       .           .           .           .
        aenbru      exclusive   exclusive       .           .           .           .
        aenc            .       exclusive       .           .           .           .

        aencu           .       exclusive       .           .           .           .
        aend            .       exclusive       .           .           .           .
        aenf            .           .           .           .       exclusive       .
        aenfu           .           .           .           .       exclusive       .
        aeni            .       exclusive       .           .           .           .
        aenpa       exclusive       .           .           .           .           .
        aenpr       exclusive       .           .           .           .           .
        aenrv           .       exclusive       .           .           .           .
        aent            .       exclusive       .           .       exclusive       .
        aentu           .           .           .           .       exclusive       .
        aepa            .       exclusive       .           .           .           .
        aera            .       exclusive       .           .           .           .
        aerd            .       exclusive       .           .           .           .
        aerfail         .           .           .           .       exclusive   exclusive
        aeri            .       exclusive       .           .           .           .
        aerm            .           ,           .           .       exclusive       .
        aermu           .           .           .           .       exclusive       .
        aermpr      exclusive       .           .           .           .           .
        aerpa       exclusive       .           .           .           .           .
        aerpass         .           .           .           .       exclusive       .
        aerpu           .           .           .           .       exclusive       .
        aerrv           .       exclusive       .           .           .           .
        aet             .           .           ,           ,       exclusive       .

SSEEEE AALLSSOO
        You may wish to see the manual pages of all of the above commands.
        Many have descriptions of the locking interactions.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aemetrics(5)                                                      aemetrics(5)



NNAAMMEE
        aemetrics - metrics values file format

SSYYNNOOPPSSIISS
        _f_i_l_e_n_a_m_e,S

DDEESSCCRRIIPPTTIIOONN
        Metrics files are created at integration build time, and recorded into
        the file attributes at integration pass time.  This allows trend
        analysis and other statistics to be calculated.

CCOONNTTEENNTTSS
        metrics = [ { ... } ];
                This field is used to describe various file metrics.  It is
                committed during _a_e_i_p_a_s_s(1), when the file is added to the
                history.  The name must be given, and exactly one value.

                name = string;
                        This is the name of the metric.  This field must be
                        set.

                value = real;
                        This is the value of the metric.  This field must be
                        set.  (If you have an integer-valued metric, just use
                        integers, Aegis will cope.  If you have a string-
                        valued metric, assign integers to the enumerands.)

SSEEEE AALLSSOO
        _a_e_g_i_s(5)
                aegis file format syntax

        _a_e_m_e_a_s_u_r_e(1)
                simple file metrics

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aepattr(5)                                                          aepattr(5)



NNAAMMEE
        aepattr - project attribute file

DDEESSCCRRIIPPTTIIOONN
        The project attribute file is used to store modifiable information
        about a project.

CCOONNTTEENNTTSS
        description = string;
                This field contains a description of the project.  Large
                amounts of prose are not required; a single line is
                sufficient.

        developer_may_review = boolean;
                If this field is true, then a developer may review her own
                change.  This is probably only a good idea for projects of
                less than 3 people.  The idea is for as many people as
                possible to critically examine a change.

                Note that the _d_e_v_e_l_o_p___e_n_d___a_c_t_i_o_n field may not contradict the
                _d_e_v_e_l_o_p_e_r___m_a_y___r_e_v_i_e_w field.  If developers may not review
                their own work, then their changes may not goto directly to
                the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state (as this means much the same
                thing).

        developer_may_integrate = boolean;
                If this field is true, then a developer may integrate her own
                change.  This is probably only a good idea for projects of
                less than 3 people.  The idea is for as many people as
                possible to critically examine a change.

        reviewer_may_integrate = boolean;
                If this field is true, then a reviewer may integrate a change
                she reviewed.  This is probably only a good idea for projects
                of less than 3 people.  The idea is for as many people as
                possible to critically examine a change.

        developers_may_create_changes = boolean;
                This field is true if developers may created changes, in
                addition to administrators.  This tends to be a very useful
                thing, since developers find most of the bugs.

        forced_develop_begin_notify_command = string;
                This command is used to notify a developer that a change
                requires developing; it is issued when a project administrator
                uses an _a_e_d_b _-_U_s_e_r command to force development of a change by
                a specific user.  All of the substitutions described in
                _a_e_s_u_b(5) are available.  This field is optional.

                Executed as: the new developer.  Current directory: the
                development directory of the change for the new developer.
                Exit status: ignored.

        develop_end_notify_command = string;
                This command is used to notify that a change is ready for
                review.  It will probably use mail, or it could be an in-house
                bulletin board.  This field is optional, if not present no
                notification will be given.  This command could also be used
                to notify other management systems, such as progress and
                defect tracking.  All of the substitutions described by
                _a_e_s_u_b(5) are available.

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: ignored.

        develop_end_undo_notify_command = string;
                This command is used to notify that a change had been
                withdrawn from review for further development.  It will
                probably use mail, or it could be an in-house bulletin board.
                This field is optional, if not present no notification will be
                given.  This command could also be used to notify other
                management systems, such as progress and defect tracking.  All
                of the substitutions described by _a_e_s_u_b(5) are available.

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: ignored.

        review_begin_notify_command = string;
                This command is used to notify that a review has begun.  It
                will probably use mail, or it could be an in-house bulletin
                board.  This field is optional, if not present no notification
                will be given.  This command could also be used to notify
                other management systems, such as progress and defect
                tracking.  All of the substitutions described by _a_e_s_u_b(5) are
                available.

                Executed as: the reviewer.  Current directory: the development
                directory of the change.  Exit status: ignored.

        review_begin_undo_notify_command = string;
                This command is used to notify that a review is no longer in
                progress, the reviewer has withdrawn.  It will probably use
                mail, or it could be an in-house bulletin board.  This field
                is optional, if not present no notification will be given.
                This command could also be used to notify other management
                systems, such as progress and defect tracking.  All of the
                substitutions described by _a_e_s_u_b(5) are available.

                Executed as: the reviewer.  Current directory: the development
                directory of the change.  Exit status: ignored.

        review_pass_notify_command = string;
                This command is used to notify that a review has passed.  It
                will probably use mail, or it could be an in-house bulletin
                board.  This field is optional, if not present no notification
                will be given.  This command could also be used to notify
                other management systems, such as progress and defect
                tracking.  All of the substitutions described by _a_e_s_u_b(5) are
                available.

                Executed as: the reviewer.  Current directory: the development
                directory of the change.  Exit status: ignored.

        review_pass_undo_notify_command = string;
                This command is used to notify that a review has passed.  It
                will probably use mail, or it could be an in-house bulletin
                board.  This field is optional, if not present no notification
                will be given.  This command could also be used to notify
                other management systems, such as progress and defect
                tracking.  Defaults to the same action as the
                _d_e_v_e_l_o_p___e_n_d___n_o_t_i_f_y___c_o_m_m_a_n_d field.  All of the substitutions
                described by _a_e_s_u_b(5) are available.

                Executed as: the reviewer.  Current directory: the development
                directory of the change.  Exit status: ignored.

        review_fail_notify_command = string;
                This command is used to notify that a review has failed.  It
                will probably use mail, or it could be an in-house bulletin
                board.  This field is optional, if not present no notification
                will be given.  This command could also be used to notify
                other management systems, such as progress and defect
                tracking.  All of the substitutions described by _a_e_s_u_b(5) are
                available.

                Executed as: the reviewer.  Current directory: the development
                directory of the change.  Exit status: ignored.

        integrate_pass_notify_command = string;
                This command is used to notify that an integration has passed.
                It will probably use mail, or it could be an in-house bulletin
                board.  This field is optional, if not present no notification
                will be given.  This command could also be used to notify
                other management systems, such as progress and defect
                tracking.  All of the substitutions described by _a_e_s_u_b(5) are
                available.

                Some compilers bury absolute path names into object files and
                executables.  The renaming of the integration directory to
                become the new baseline breaks these paths.  This command is
                passed an environment variable called AEGIS_INTEGRATION_-
                DIRECTORY so that the appropriate symlink may be placed, if
                desired.

                Executed as: the project owner.  Current directory: the new
                project baseline.  Exit status: ignored.

        integrate_fail_notify_command = string;
                This command is used to notify that an integration has failed.
                It will probably use mail, or it could be an in-house bulletin
                board.  This field is optional, if not present no notification
                will be given.  This command could also be used to notify
                other management systems, such as progress and defect
                tracking.  All of the substitutions described by _a_e_s_u_b(5) are
                available.

                Executed as: the integrator.  Current directory: the
                development directory of the change.  Exit status: ignored.

        default_development_directory = string;
                The pathname of where to place new development directories.
                The pathname must be absolute.  This field is only consulted
                if the field of the same name in the user configuration file
                is not set.

        umask = integer;
                File permission mode mask.  See _u_m_a_s_k(2) for more information.
                This value will always be OR'ed with 022, because _a_e_g_i_s is
                paranoid.

        default_test_exemption = boolean;
                This field contains what to do when a change is created with
                no test exemption specified.

        minimum_change_number = integer;
                The minimum change number for _a_e_n_c_(_1_)_, if no change number is
                specified.  This allows the low-numbered change numbers to be
                used for branches later in the project.

        reuse_change_numbers = boolean;
                This controls whether the automatically selected _a_e_n_c(1)
                change numbers ``fill in'' any gaps.  Defaults to true if not
                set.

        minimum_branch_number = integer;
                The minimum branch number for _a_e_n_b_r_(_1_)_, if no branch number is
                specified.  Defaults to 1 if not set.

        skip_unlucky = boolean;
                This field may be set to true if you want to skip various
                unlucky numbers for changes, branches and tests.  Various
                traditions are avoided, both Eastern and Western.  Defaults to
                false if not set.

        compress_database = boolean;
                This field may be set to true if you want to compress the
                database on writing.  (It is always uncompressed on reading if
                necessary.)  Defaults to false if not set.

                Unless you have an exceptionally large project, coupled with
                fast CPUs and high network latency, there is probably very
                little benefit in using this feature.  (The database is
                usually less than 5% of the size of the repository.)  On slow
                networks, however, this can improve the performance of file-
                related commands.

        develop_end_action = ( ...);
                This field controls the state the change enters after a
                successful _a_e_d_e(1) action.

                _g_o_t_o___b_e_i_n_g___r_e_v_i_e_w_e_d
                        This means that the change goes from the _b_e_i_n_g___-
                        _d_e_v_e_l_o_p_e_d state to the _b_e_i_n_g___r_e_v_i_e_w_e_d state.  The
                        _a_e_r_b(1) command only sends informative email.

                _g_o_t_o___a_w_a_i_t_i_n_g___r_e_v_i_e_w
                        This means that the change goes from the _b_e_i_n_g___-
                        _d_e_v_e_l_o_p_e_d state to the _a_w_a_i_t_i_n_g___r_e_v_i_e_w state.  The
                        _a_e_r_b(1) command is now mandatory.

                _g_o_t_o___a_w_a_i_t_i_n_g___i_n_t_e_g_r_a_t_i_o_n
                        This means that the change goes from the _b_e_i_n_g___-
                        _d_e_v_e_l_o_p_e_d state into the _a_w_a_i_t_i_n_g___i_n_t_e_g_r_a_t_i_o_n state.
                        Code review is skipped entirely.  If the _d_e_v_e_l_o_p_e_r___-
                        _m_a_y___r_e_v_i_e_w is false, it is not possible to use this
                        setting.

                Note that the _d_e_v_e_l_o_p___e_n_d___a_c_t_i_o_n field may not contradict the
                _d_e_v_e_l_o_p_e_r___m_a_y___r_e_v_i_e_w field.  If developers may not review
                their own work, then their changes may not goto directly to
                the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state (as this means much the same
                thing).  A contradictory setting will be replaced with _g_o_t_o___-
                _b_e_i_n_g___r_e_v_i_e_w_e_d.

        protect_development_directory = boolean;
                This field may be used to protect the development directory
                after the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.  It does this by making it
                read-only at develop end time.  Should the change ever be
                returned to the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state, it will be made
                writable again.

                The default is false, meaning to leave the development
                directory writable while is being reviewed and integrated.
                Aegis' normal tampering detection will notice if files are
                changed, but there is no reminder to the developer that the
                change should be left alone.

                This field defaults to false, because it can sometimes be
                slow.

SSEEEE AALLSSOO
        _a_e_p_a(1) modify the attributes of a project

        _a_e_g_i_s(5)
                aegis file format syntax

        _a_e_c_a_t_t_r(5)
                change attributes file format

        _a_e_c_s_t_a_t_e(5)
                change state file format, particularly as branches are used to
                remember most project state

        _a_e_p_s_t_a_t_e(5)
                project state file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aepconf(5)                                                          aepconf(5)



NNAAMMEE
        aepconf - aegis project configuration file

SSYYNNOOPPSSIISS
        _p_r_o_j_e_c_t/baseline/aegis.conf _(_d_e_f_a_u_l_t_)
        _p_r_o_j_e_c_t/baseline/config _(_o_b_s_o_l_e_t_e_)

DDEESSCCRRIIPPTTIIOONN
        A project configuration file is used to store information about a
        project.  This file is under source control, and is one of the
        project's source files.  Developers may thus modify this file as part
        of a change.

        As of aegis.4.17, it is possible to assign any arbitrary name to the
        project configuration file or files.  See _a_e_n_f(1) for more
        information.

        This file contains a number of commands to be executed by Aegis.
        There are times when the substitutions in these commands may contain
        shell special characters, which would change the meaning of the
        commands in unintended ways.  There are two main sources of these
        problems: filenames and architecture names.  In order to have shell
        special characters in filenames, you must set the _s_h_e_l_l___s_a_f_e___f_i_l_e_n_a_m_e_s
        field (see below) to _f_a_l_s_e.  If you do this, you will need to use the
        quote substitution (see _a_e_s_u_b(5)) to quote them, so that the shell
        does not abuse them.  Other things which may need quoting include
        architecture names if you get creative, and edit numbers if unusual
        ones are generated by your history tool.

   GGeettttiinngg SSttaarrtteedd
        Because the project _c_o_n_f_i_g file is under source control like any other
        file, you must create the project _c_o_n_f_i_g file in the very first change
        of your project.  Use the
                $ aaeennff aaeeggiiss..ccoonnff
                $
        command and then editing the file to fill in the fields.  Subsequent
        Aegis commands in that change will use that file.  Once the change is
        completed (see _a_e_i_p_a_s_s(1) for more information) the file will be
        present in the baseline, and be used by all users and all changes.

        If you ever need to change one of the fields of the project _c_o_n_f_i_g
        file, you do this the same way as for any other souce file, by copying
        it into a change using the
                $ aaeeccpp aaeeggiiss..ccoonnff
                $
        command and then edit the file to make the desired changes.  While
        it's _b_e_i_n_g _d_e_v_e_l_o_p_e_d your change will use it's copy of the project
        _c_o_n_f_i_g file, but once the change is completed (see _a_e_i_p_a_s_s(1) for more
        information), it becomes the new version used by all users and
        changes.

        If you would prefer a different name for the project configuration
        file, use the _a_e_n_f _-_c_o_n_f_i_g option.  For example, the
                $ aaeennff --ccoonnffiigg pprroojjeecctt..ccoonnffiigguurraattiioonn
                $
        command would create a file called _p_r_o_j_e_c_t_._c_o_n_f_i_g_u_r_a_t_i_o_n and Aegis
        would then proceed to use it to obtain project configuration
        information for the duration of the project.  This attribute will even
        be preserved across file renames (see the _a_e_m_v(1) command).

CCOONNTTEENNTTSS
        This file contains the following fields:

        configuration_directory = string;
                This field names a directory which will be searched for
                additional configuration files.  (This directive is only legal
                or meaningful in the master project _c_o_n_f_i_g file.)

                All source files (change source files and project source
                files) present in this directory will be read in as if they
                were added to the end of the project "aegis.conf" file.

                The usual priority of files (development directory, branch
                baseline, _e_t_c, project trunk baseline) is observed when these
                files are read.

                Please note that the physical directories are never searched,
                only the Aegis concept of the change and project files is
                consulted (_i_._e_.  files created and modified in the usual way
                with _a_e_n_f(1) and _a_e_c_p(1) commands).  Placing additional files
                in the physical directories will have no effect.

                It is recommended that if you use this field at all, that your
                top level project _a_e_g_i_s_._c_o_n_f file should only contain this one
                field.  This is to avoid overly-large re-reading of this file
                when it is joined to all the others.

        build_command = string;
                This field describes how to build the project (actually, how
                to do an integration build).  This field is mandatory.  Used
                by the _a_e_b(1) command.  All of the substitutions described by
                _a_e_s_u_b(5) are available.

                Executed as: the integrator (for integration builds) or the
                developer (for development builds).  Current directory: the
                integration directory of the change (for integration builds)
                the development directory of the change (for development
                builds).  Exit status: zero is considered success, non-zero is
                a failure and a subsequent successful (exit zero) build will
                be required.

        development_build_command = string;
                This field describes how to do a development build.  If this
                field is absent, it defaults to the above.  Used by the _a_e_b(1)
                command.  All of the substitutions described by _a_e_s_u_b(5) are
                available.

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: zero is
                considered success, non-zero is a failure and a subsequent
                successful (exit zero) build will be required.

        development_directory_style = { ... };
                This field encapsulates a set of parameters controlling the
                appearance of the development directory.  It has significant
                implications for the way the DMT is used, and the directory
                appearance presented to the DMT.

                source_file_link = boolean;
                        This field is true if hard links are to be used for
                        project source files (which are not part of the
                        change) so that the work area has a complete set of
                        source files.

                        Defaults to false if not set.

                        If the host system does not have hard links, this
                        field will be ignored.

                        Maintaining the hard links can be time consuming for
                        large projects, and add quite a noticeable delay
                        before builds start doing anything.  If possible,
                        change your build system to use the _$_s_e_a_r_c_h___p_a_t_h
                        substitution instead and avoid links.

                source_file_symlink = boolean;
                        This field is true if symbolic links are to be used
                        for project source files (which are not part of the
                        change) so that the work area has a complete set of
                        source files.

                        Defaults to false if not set.  [If the obsolete
                        _c_r_e_a_t_e___s_y_m_l_i_n_k_s___b_e_f_o_r_e___b_u_i_l_d field is set, defaults to
                        the value of that field, with a warning.]

                        If (_s_o_u_r_c_e___f_i_l_e___l_i_n_k == true aanndd hard links are
                        available) this field will be ignored.  If the host
                        system does not have symbolic links, this field will
                        be ignored.

                        Maintaining the symbolic links can be time consuming
                        for large projects, and add quite a noticeable delay
                        before builds start doing anything.  If possible,
                        change your build system to use the _$_s_e_a_r_c_h___p_a_t_h
                        substitution instead and avoid symbolic links.

                source_file_copy = boolean;
                        This field is true if copies are to be used for
                        project source files (which are not part of the
                        change) so that the work area has a complete set of
                        source files.  File modification time attributes will
                        be preserved.

                        Defaults to false if not set.

                        If ((_s_o_u_r_c_e___f_i_l_e___l_i_n_k == true aanndd hard links are
                        available) OR (_s_o_u_r_c_e___f_i_l_e___s_y_m_l_i_n_k == true aanndd
                        symbolic links are available)) this field will be
                        ignored.

                        Maintaining the copies can be time consuming (and
                        space consuming) for large projects, and add quite a
                        noticeable delay before builds start doing anything.
                        If possible, change your build system to use the
                        _$_s_e_a_r_c_h___p_a_t_h substitution instead and avoid file
                        copies.

                source_file_whiteout = boolean;
                        The _s_o_u_r_c_e___f_i_l_e___w_h_i_t_e_o_u_t field mat be used to sprecify
                        the presence (true) or absence (false) of white-out
                        files, used to "cover up" files being removed by a
                        change set.  These files contain 1KB of random data,
                        intended to cause a syntax error should be build
                        reference them.

                        It is rarely necessary to explicitly set this field.
                        It defaults to false if you set any of the
                        _s_o_u_r_c_e___f_i_l_e___l_i_n_k, _s_o_u_r_c_e___f_i_l_e___s_y_m_l_i_n_k or
                        _s_o_u_r_c_e___f_i_l_e___c_o_p_y to true; it defaults to false only if
                        none of them are true.

                        Not meaningful (always false) for integration builds.

                derived_file_link = boolean;
                        This field is true if hard links are to be used for
                        non-source files which are present in the project
                        baseline(s) but which are not present in the work
                        area, so that the work area has a complete set of
                        derived files.  This allows work areas to take
                        advantage of "precompiled" object files (_e_t_c) in the
                        baseline(s).

                        Defaults to false if not set.

                        If the host system does not have hard links, this
                        field will be ignored.

                        Maintaining the links can be time consuming for large
                        projects, and add quite a noticeable delay before
                        builds start doing anything.  If possible, change your
                        build system to use the _$_s_e_a_r_c_h___p_a_t_h substitution
                        instead and avoid hard links.  Alternatively, set
                        _d_e_r_i_v_e_d___a_t___s_t_a_r_t___o_n_l_y _= _t_r_u_e_; and your work area will
                        get a "head start" but the derived files will not be
                        checked for every build, but this will occasionally
                        result in long build times after integrations.

                        See also the _i_n_t_e_g_r_a_t_e___b_e_g_i_n___e_x_c_e_p_t_i_o_n_s and _s_y_m_l_i_n_k___-
                        _e_x_c_e_p_t_i_o_n_s fields (they apply to hard links as well as
                        symbolic links).

                derived_file_symlink = boolean;
                        This field is true if symbolic links are to be used
                        for non-source files which are present in the project
                        baseline(s) but which are not present in the work
                        area, so that the work area has a complete set of
                        derived files.  This allows work areas to take
                        advantage of "precompiled" object files (etc) in the
                        baseline(s).

                        Defaults to false if not set.  [If the obsolete
                        _c_r_e_a_t_e___s_y_m_l_i_n_k_s___b_e_f_o_r_e___b_u_i_l_d field is set, defaults to
                        the value of that field, with a warning.]

                        If (_d_e_r_i_v_e_d___f_i_l_e___l_i_n_k == true aanndd hard links are
                        available) this field will be ignored.  If the host
                        system does not have symbolic links, this field will
                        be ignored.

                        Maintaining the symbolic links can be time consuming
                        for large projects, and add quite a noticeable delay
                        before builds start doing anything.  If possible,
                        change your build system to use the _$_s_e_a_r_c_h___p_a_t_h
                        substitution instead and avoid symbolic links.
                        Alternatively, set _d_e_r_i_v_e_d___a_t___s_t_a_r_t___o_n_l_y _= _t_r_u_e_; and
                        your work area will get a "head start" but the derived
                        files will not be checked for every build,
                        occasionally resulting in long build times after
                        integrations.

                        See also the _i_n_t_e_g_r_a_t_e___b_e_g_i_n___e_x_c_e_p_t_i_o_n_s and _s_y_m_l_i_n_k___-
                        _e_x_c_e_p_t_i_o_n_s fields.

                derived_file_copy = boolean;
                        This field is true if copies are to be used for non-
                        source files which are present in the project
                        baseline(s) but which are not present in the work
                        area, so that the work area has a complete set of
                        derived files.  This allows work areas to take
                        advantage of "precompiled" object files (_e_t_c) in the
                        baseline(s).

                        Defaults to false if not set.

                        If ((_d_e_r_i_v_e_d___f_i_l_e___l_i_n_k == true aanndd hard links are
                        available) oorr (_d_e_r_i_v_e_d___f_i_l_e___s_y_m_l_i_n_k == true aanndd
                        symbolic links are available)) this field will be
                        ignored.

                        Maintaining the copies can be time consuming (and
                        space consuming) for large projects, and add quite a
                        noticeable delay before builds start doing anything.
                        If possible, change your build system to use the
                        _$_s_e_a_r_c_h___p_a_t_h substitution instead and avoid symbolic
                        links.  Alternatively, set _d_e_r_i_v_e_d___a_t___s_t_a_r_t___o_n_l_y _=
                        _t_r_u_e_; and your work area will get a "head start" but
                        the derived files will not be checked for every build,
                        occasionally resulting in long build times after
                        integrations.

                        See also the integrate_begin_exceptions and
                        symlink_exceptions fields (they apply to copies as
                        well as symbolic links).

                during_build_only = boolean;
                        This field is set to true if you want the symbolic
                        links, hard links and/or copies removed again after
                        each build.  This allows the user to maintain the
                        illusion of using a search path, without actually
                        doing so.  This option is not especially efficient.

                        Defaults to false if not set.  [If the obsolete
                        _r_e_m_o_v_e___s_y_m_l_i_n_k_s___a_f_t_e_r___b_u_i_l_d field is set, defaults to
                        the value of that field, with a warning.]

                        If this field is false, the development directory will
                        be populated by the develeop begin (_a_e_d_b) command, and
                        the integratin directory will be populated by the
                        integrate begin (_a_e_i_b) command.

                derived_at_start_only = boolean;
                        This field controls whether the above fields
                        controling the appearance of derived files are acted
                        upon before every build (false) or only when the work
                        area is created (true).

                        Defaults to false if not set.

                        This field is ignored if the _d_u_r_i_n_g___b_u_i_l_d___o_n_l_y field
                        is true.

                This field can be complex.  Here are a few examples; but much,
                much more is possible.  The first example will get you a
                development directory very similar to one presented by CVS:
                        development_directory_style =
                        {
                            source_file_copy = true;
                        };
                Note that this is hugely space inefficient, and can be quite
                slow.  The second example will get you a development directory
                very similar to one presented by Tom Lord's _a_r_c_h:
                        development_directory_style =
                        {
                            source_file_link = true;
                            source_file_symlink = true;
                            source_file_copy = true;
                        };
                Ideally, however, you should use the _$_s_e_a_r_c_h___p_a_t_h substitution
                of the _b_u_i_l_d___c_o_m_m_a_n_d field.  This is because the view path
                scales better than any other method.  On the other hand, you
                need a DMT with an excellent view path implementation (and GNU
                _m_a_k_e doesn't).

        integration_directory_style = { ... };
                This field encapsulates a set of parameters controlling the
                appearance of the integration directory.  It has significant
                implications for the way the DMT is used, and the directory
                appearance presented to the DMT.

                Defaults to the value of the _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field
                if not set.  Note that the obsolete _c_r_e_a_t_e___s_y_m_l_i_n_k_s___b_e_f_o_r_e___-
                _i_n_t_e_g_r_a_t_i_o_n___b_u_i_l_d and _r_e_m_o_v_e___s_y_m_l_i_n_k_s___a_f_t_e_r___i_n_t_e_g_r_a_t_i_o_n___b_u_i_l_d
                fields affect this default (with a warning) but only if they
                are _e_x_p_l_i_c_i_t_l_y set.

                Note that the _l_i_n_k___i_n_t_e_g_r_a_t_i_o_n___d_i_r_e_c_t_o_r_y field is still
                relevant.  That field controls how the baseline is cloned to
                form the integration directory.  This field operates after
                that operation.

        build_time_adjust_notify_command = string;
                This command is run when Aegis adjusts the last-time-modified
                time-stamp on files in the integration directory.  If the
                build tool uses additional information to supplement file
                modification times, this command gives you the opportunity to
                re-sync the associated database.

                Executed as: the project owner.

                Current directory: the project baseline. Note that the
                contents of the project baseline reflect content _b_e_f_o_r_e the
                currently integrating change. In particular note that for the
                first delta in a project or branch, the baseline directory is
                empty.  If data is required from the change just completed one
                must use the _$_{_I_N_T_e_g_r_a_t_i_o_n___D_i_r_e_c_t_o_r_y_} substitution.

                Exit status: NOT ignored. Note that a failure here puts the
                change in a partial state from which recovery may be
                difficult. Best to define this command with a _s_e_t+e so that
                errors are ignored at the command level.

        build_covers_all_architectures = boolean;
                This field is set to true if the build command, when executed
                on any architecture, results in all architectures being built.
                This may be accomplished, for example, by using cross-
                compilation techniques, or Cook's ability to nominate hosts on
                which to execute each build rule.

        symlink_exceptions = [ string ];
                This field is used to list filename patterns for which
                symbolic links must not be made between the development
                directory and the baseline.  These are usually state files for
                various tools.  The patterns are matched against the whole
                filename; naming only the last filename path element will _n_o_t
                work (unless the pattern starts with ``*'').

        change_file_command = string;
                This field contains a command to be executed whenever a 'aegis
                -CoPy_file', 'aegis -New_File' 'aegis -New_Test' 'aegis
                -MoVe_file' or 'aegis -ReMove_file' command is successful.
                See also command-specific overrides.  If this field is absent,
                nothing is done.  Used by the _a_e_c_p(1), _a_e_n_v(1), _a_e_n_f(1),
                _a_e_r_m(1), and _a_e_m_v(1) commands.  All of the substitutions
                described by _a_e_s_u_b(5) are available; in addition,

                ${File_List}
                        Space separated list of files named.

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: ignored.

        change_file_undo_command = string;
                This field contains a command to be executed whenever a 'aegis
                -CoPy_file_Undo', 'aegis -MoVe_file_Undo' 'aegis
                -New_File_Undo', 'aegis -New_Test_Undo', or 'aegis
                -ReMove_file_Undo' command is successful.  Default to _c_h_a_n_g_e___-
                _f_i_l_e___c_o_m_m_a_n_d if absent.  See also command-specific overrides.
                If both fields are absent, nothing is done.  Used by the
                _a_e_c_p_u(1), _a_e_m_v_u(1), _a_e_n_f_u(1), _a_e_n_t_u(1) or _a_e_r_m_u(1), commands.
                All of the substitutions described by _a_e_s_u_b(5) are available;
                in addition,

                ${File_List}
                        Space separated list of files named.

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: ignored.

        new_file_command = string;
                Executed whenever the aegis -new_file command is run
                successfully.  Defaults to `change_file_command' if not set.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${File_List}
                        Space separated list of files named (at times, can be
                        empty).

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: ignored.

        new_test_command = string;
                Executed whenever the aegis -new_test command is run
                successfully.  Defaults to `change_file_command' if not set.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${File_List}
                        Space separated list of files named (at times, can be
                        empty).

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: ignored.

        copy_file_command = string;
                Executed whenever the aegis -copy_file command is run
                successfully.  Defaults to `change_file_command' if not set.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${File_List}
                        Space separated list of files named (at times, can be
                        empty).

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: ignored.

        remove_file_command = string;
                Executed whenever the aegis -remove_file command is run
                successfully.  Defaults to `change_file_command' if not set.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${File_List}
                        Space separated list of files named (at times, can be
                        empty).

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: ignored.

        new_file_undo_command = string;
                Executed whenever the aegis -new_file_undo command is run
                successfully.  Defaults to change_file_undo_command if not
                set.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${File_List}
                        Space separated list of files named (at times, can be
                        empty).

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: ignored.

        new_test_undo_command = string;
                Executed whenever the aegis -new_test_undo command is run
                successfully.  Defaults to change_file_undo_command if not
                set.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${File_List}
                        Space separated list of files named (at times, can be
                        empty).

                Executed as: the developer Current directory: the development
                directory of the change Exit status: ignored

        copy_file_undo_command = string;
                Executed whenever the aegis -copy_file_undo command is run
                successfully.  Defaults to change_file_undo_command if not
                set.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${File_List}
                        Space separated list of files named (at times, can be
                        empty).

                Executed as: the developer Current directory: the development
                directory of the change Exit status: ignored

        remove_file_undo_command = string;
                Executed whenever the aegis -remove_file_undo command is run
                successfully.  Defaults to change_file_undo_command if not
                set.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${File_List}
                        Space separated list of files named (at times, can be
                        empty).

                Executed as: the developer Current directory: the development
                directory of the change Exit status: ignored

        make_transparent_command = string;
                The make_transparent_command is executed whenever the aegis
                -make_transparent command is run successfully.  Defaults to
                change_file_command if not set.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${File_List}
                        Space separated list of files named (at times, can be
                        empty).

                Executed as: the developer Current directory: the development
                directory of the change Exit status: ignored

        make_transparent_undo_command = string;
                The make_transparent_undo_command is executed whenever the
                aegis -make_transparent_undo command is run successfully.
                Defaults to change_file_undo_command if not set.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${File_List}
                        Space separated list of files named (at times, can be
                        empty).

                Executed as: the developer Current directory: the development
                directory of the change Exit status: ignored

        project_file_command = string;
                This field contains a command to be executed during a
                development build before the _d_e_v_e_l_o_p_m_e_n_t _b_u_i_l_d _c_o_m_m_a_n_d above,
                when (a) it is the first build after a develop begin, or (b)
                some other change has been integrated into the baseline since
                the last build.  If this field is absent, nothing is done.
                Used by the _a_e_b(1) command.  All of the substitutions
                described by _a_e_s_u_b(5) are available.

        develop_begin_command = string;
                This field contains a command to be executed whenever a 'aegis
                -Develop_Begin' command is successful.  If this field is
                absent, nothing is done.  Used by the _a_e_d_b(1) command.  All of
                the substitutions described by _a_e_s_u_b(5) are available.

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: ignored.

        develop_begin_undo_command = string;
                This field contains a command to be executed whenever a 'aegis
                -Develop_Begin_Undo' command is successful.  If this field is
                absent, nothing is done.  Used by the _a_e_d_b_u(1) command.  All
                of the substitutions described by _a_e_s_u_b(5) are available.

                Executed as: the developer.  Current directory: wherever the
                command was executed from.  Exit status: ignored.

        integrate_begin_command = string;
                This field contains a command to be executed whenever a 'aegis
                -Integrate_Begin' command is successful.  If this field is
                absent, nothing is done.  Used by the _a_e_i_b(1) command.  All of
                the substitutions described by _a_e_s_u_b(5) are available.

                Executed as: the project owner.  Current directory: the
                integration directory.  Exit status: ignored.

        link_integration_directory = boolean;
                This flag is true if Aegis should link the files from the
                baseline into the integration directory, rather than copy them
                (the default).  This has risks, as the build script (e.g.
                _H_o_w_t_o_._c_o_o_k or _M_a_k_e_f_i_l_e, etc) must unlink targets before
                rebuilding them; if this is not done the baseline will be
                corrupted.  Used by the _a_e_i_b(1) command.

        integrate_begin_exceptions = [ string ];
                This field may be used to specify a list of file names (and
                file name patterns) which are to be omitted from the copy
                (link) of the baseline when creating the integration
                directory.  Used by the _a_e_i_b(1) command.  This field only
                applies to derived files, it does _n_o_t apply to source files.
                The patterns are matched against the whole filename; naming
                only the last filename path element will _n_o_t work (unless the
                pattern starts with ``*'').

        history_create_command = string;
                This field is used to create a new history.  The command is
                always executed as the project owner.  Used by the _a_e_i_p_a_s_s(1)
                command.

                It is strongly recommended that the _h_i_s_t_o_r_y___c_r_e_a_t_e___c_o_m_m_a_n_d and
                _h_i_s_t_o_r_y___p_u_t___c_o_m_m_a_n_d fields are identical.  If not set, the
                _h_i_s_t_o_r_y___c_r_e_a_t_e___c_o_m_m_a_n_d field defaults to the same value as the
                _h_i_s_t_o_r_y___p_u_t___c_o_m_m_a_n_d field.

                All of the substitutions described by _a_e_s_u_b(5) are available;
                in addition,

                ${Input}
                        Absolute path of the source file.

                ${History}
                        Absolute path of the history file.  This may need to
                        be reworked with the _D_i_r_n_a_m_e and _B_a_s_e_n_a_m_e
                        substitutions to yield a string suitable for the
                        history tool in question.

                See also the _h_i_s_t_o_r_y___p_u_t___t_r_a_s_h_e_s___f_i_l_e field, below.

                Executed as: the project owner.  Current directory: the base
                of the history tree.  Exit status: zero indicates success, all
                non-zero exits indicate failure (the integrate pass will
                fail).

        history_get_command = string;
                This field is used to get a file from history.  The command
                may be executed by developers.  Used by the _a_e_i_p_a_s_s(1) and
                _a_e_c_p(1) commands.  All of the substitutions described by
                _a_e_s_u_b(5) are available; in addition,

                ${History}
                        The absolute path of the history file.  This may need
                        to be reworked with the _D_i_r_n_a_m_e and _B_a_s_e_n_a_m_e
                        substitutions to yield a string suitable for the
                        history tool in question.

                ${Edit}
                        The edit number to be extracted.  It may be an
                        arbitrary string, varying on the particular history
                        tool.

                ${Output}
                        The absolute path of the destination file.

                Executed as: the developer (or the executing user, in the case
                of the -independent option).  Current directory: the base of
                the history tree Exit status: zero indicates success, all non-
                zero exits indicate failure (the _a_e_c_p will fail).

        history_put_command = string;
                This field is used to add a new change to the history.  The
                command is always executed as the project owner.  Used by the
                _a_e_i_p_a_s_s(1) command.

                It is strongly recommended that the _h_i_s_t_o_r_y___p_u_t___c_o_m_m_a_n_d and
                _h_i_s_t_o_r_y___c_r_e_a_t_e_____c_o_m_m_a_n_d fields are identical.  If not set, the
                _h_i_s_t_o_r_y___p_u_t___c_o_m_m_a_n_d field defaults to the same value as the
                _h_i_s_t_o_r_y___c_r_e_a_t_e___c_o_m_m_a_n_d field.

                All of the substitutions described by _a_e_s_u_b(5) are available;
                in addition,

                ${Input}
                        The absolute path of the source file.

                ${History}
                        The absolute path of the history file.  This may need
                        to be reworked with the _D_i_r_n_a_m_e and _B_a_s_e_n_a_m_e
                        substitutions to yield a string suitable for the
                        history tool in question.

                See also the _h_i_s_t_o_r_y___p_u_t___t_r_a_s_h_e_s___f_i_l_e field, below.

                Executed as: the project owner.  Current directory: the base
                of the history tree.  Exit status: zero indicates succes, all
                non-zero exits indicate failure (the integrate pass will
                fail).

        history_transaction_begin_command = string;
                The history_transaction_begin_command field is used to specify
                a command to be run by _a_e_i_p_a_s_s(1) before any history create or
                history put commands are run.  The default is to do nothing.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                If you need a transaction ID, use the _$_v_e_r_s_i_o_n substitution.

                Executed as: the project owner.  Current directory: the base
                of the history tree.  Exit status: zero indicates succes, all
                non-zero exits indicate failure (the integrate pass will
                fail).

        history_transaction_end_command = string;
                The history_transaction_end_command field is used to specify a
                command to be run by _a_e_i_p_a_s_s(1) after any history create or
                history put commands are run, but before any history query
                commands are run.  The default is to do nothing.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                If you need a transaction ID, use the _$_v_e_r_s_i_o_n substitution.

                Executed as: the project owner.  Current directory: the base
                of the history tree.  Exit status: zero indicates succes, all
                non-zero exits indicate failure (the integrate pass will
                fail).

        history_transaction_abort_command = string;
                The history_transaction_abort_command field is used to specify
                a command to be run by _a_e_i_p_a_s_s(1) to indicate that a
                transaction has been abandoned.  The default is to do nothing.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                If you need a transaction ID, use the _$_v_e_r_s_i_o_n substitution.

                Executed as: the project owner.  Current directory: the base
                of the history tree.  Exit status: ignored (the integrate pass
                has already failed).

        history_query_command = string;
                This field is used to query the topmost edit of a history
                file.  Result to be printed on the standard output.  This
                command may be executed by developers.  Used by the _a_e_i_p_a_s_s(1)
                and _a_e_c_p(1) commands.  All of the substitutions described by
                _a_e_s_u_b(5) are available; in addition,

                ${History}
                        The absolute path of the history file.  This may need
                        to be reworked with the _D_i_r_n_a_m_e and _B_a_s_e_n_a_m_e
                        substitutions to yield a string suitable for the
                        history tool in question.

                Executed as: the project owner.  Current directory: the base
                of the history tree.  Exit status: zero indicates succes, all
                non-zero exits indicate failure (the integrate pass will
                fail).

        history_label_command = string;
                This field contains a command to be executed whenever a
                _a_e_i_p_a_s_s(1) or _a_e_d_n(1) command is successful.  This command is
                invoked for eevveerryy file in the project.  So using it incurs a
                performance penalty.  If this field is absent, nothing is
                done.  All of the substitutions described by _a_e_s_u_b(5) are
                available; in addition,

                ${History}
                        The absolute path of the history file.

                ${Edit}
                        The edit number to be labeled.  It may be an arbitrary
                        string, varying on the particular history tool.

                ${Label}
                        The label to  be attached to the history.  When
                        executed from _a_e_i_p_a_s_s(1) this value is the same as
                        _$_{_V_e_r_s_i_o_n_}_, which may need to be reworked with the
                        _$_{_S_u_b_s_t_} substitutions to yield a string suitable for
                        the history tool in question.  When executed from
                        _a_e_d_n(1) it is set to the value passed in from the
                        command line.

                Executed as: the project owner.  Current directory: the base
                of the history tree.  Exit status: zero indicates success, all
                non-zero exits indicate failure (a warning will be issued).

                Labeling does not scale, so the use of this command is not
                encouraged.  If you have a project with 10,000 files, and a
                change modified exactly one of them, only one _h_i_s_t_o_r_y___p_u_t___-
                _c_o_m_m_a_n_d execution is required, which operates on one history
                file.  If you have labeling turned on, it will also be
                necessary to execute 10,000 _h_i_s_t_o_r_y___l_a_b_e_l___c_o_m_m_a_n_ds, to add
                information Aegis will never use.

        history_put_trashes_file = (fatal, warn, ignore);
                Many history tools (e.g. RCS) can modify the contents of the
                file when it is committed.  While there are usually options to
                turn this off, they are seldom used.  The problem is: if the
                commit changes the file, the source in the repository now no
                longer matches the object file in the repository - i.e. the
                history tool has compromised the referential integrity of the
                repository.

                fatal
                    Emit a fatal error if one or more source files are
                    modified by a _h_i_s_t_o_r_y___p_u_t___c_o_m_m_a_n_d or
                    _h_i_s_t_o_r_y___c_r_e_a_t_e___c_o_m_m_a_n_d.  This is the default.

                warn
                    Emit a warning if a source file is modified.

                ignore
                    Ignore a source file changing.  You sure better hope it
                    was only in a comment!

        history_content_limitation = (ascii_text, international_text,
        binary_capable);
                This field describes the content style which the history tool
                is capable of working with.

                ascii_text
                        The history tool can only cope with files which
                        contain printable ASCII characters, plus space, tab
                        and newline.     The file must end with a newline.
                        This is the default.

                international_text
                        The history tool can only cope with files which do not
                        contain the NUL character.  The file must end with a
                        newline.

                binary_capable
                        The history tool can cope with all files without any
                        limitation on the form of the contents.

                When a file is added to the history (by either the _h_i_s_t_o_r_y___-
                _c_r_e_a_t_e___c_o_m_m_a_n_d or the _h_i_s_t_o_r_y___p_u_t___c_o_m_m_a_n_d field) it is
                examined for conformance to this limitation.  If there is a
                problem, the file is encoded in either quoted printable for
                MIME64, whichever is smaller, before being given to the
                history tool.  This encoding is transparent, the file in the
                baseline is unchanged.

                On extract (the _h_i_s_t_o_r_y___g_e_t___c_o_m_m_a_n_d field) the encoding is
                reversed, using information attached to the change file
                information.  This is because each put could use a different
                encoding (although in practice, file contents rarely change
                that dramatically, and the same encoding is likely to be
                deduced every time).

                Please note that this field ddooeess nnoott apply to the _d_i_f_f___c_o_m_m_a_n_d
                or _m_e_r_g_e___c_o_m_m_a_n_d fields.

        diff_command = string;
                This field is used to difference of 2 files.  The command is
                always executed by developers.  Used by the _a_e_d(1) command.
                All of the substitutions described by _a_e_s_u_b(5) are available;
                in addition,

                ${ORiginal}
                        The absolute path of the original file copied into the
                        change.  Usually in the baseline, but not always.

                ${Input}
                        The absolute path of the file in the development
                        directory.

                ${Output}
                        The absolute path of the file in which to write the
                        difference listing.

                Executed as: the project owner (for integration diffs), or the
                developer (for development diffs).  Current directory: the
                integration directory (for integration diffs), or the
                development directory (for development diffs).  Exit status:
                zero indicates success, all non-zero exits indicate failure
                (the aed will fail).

        merge_command = string;
                This field is used to merge two competing edits to a file.
                The command is always executed by developers.  The current
                directory will be the development directory.  This field is
                used by the _a_e_d(1) command.  All of the substitutions
                described by _a_e_s_u_b(5) are available; in addition,

                ${ORiginal}
                        The absolute path of the original file copied into the
                        change.  Usually not in the baseline, often a
                        temporary file.

                ${Most_Recent}
                        The absolute path of the competing edit, usually in
                        the baseline.

                ${Input}
                        The absolute path of the file in the development
                        directory.  This is the ``preferred'' edit, if the
                        tool has this concept when highlighting conflicting
                        edits.

                ${Output}
                        The absolute path of the file in which to write the
                        merged result.  This will usually be the name if a
                        change source file in the development directory.

                It is important that this command does not move files around.
                (See the obsolete _d_i_f_f_3___c_o_m_m_a_n_d field, below, for some
                history.)

                Executed as: the project owner (for integration diffs), or the
                developer (for development diffs).  Current directory: the
                integration directory (for integration diffs), or the
                development directory (for development diffs).  Exit status:
                zero indicates succes, all non-zero exits indicate failure
                (the aed will fail).

        patch_diff_command = string;
                The difference of 2 files, to send around as a patch.  (This
                isn't the same as diff_command, because it's aimed at GNU
                Patch, not at humans.)  The command is always executed by
                developers.  Used by the _a_e_p_a_t_c_h(1) command.

                Defaults to "set +e; diff -c -L $index -L $index $original
                $input > $output; test $? -le 1" if not set.

                All of the substitutions described by _a_e_s_u_b(5) are available;
                in addition,

                ${ORiginal}
                        The absolute path of the original file copied into the
                        change.  Usually in the baseline, but not always.

                ${Input}
                        The absolute path of the file in the development
                        directory.

                ${Output}
                        The absolute path of the file in which to write the
                        difference listing.

                ${INDex}
                        The project-relative name of the file, for use when
                        the file name is embedded in the output.  (Optional.)

                Executed as: the project owner (for integration diffs), or the
                developer (for development diffs).  Current directory: the
                integration directory (for integration diffs), or the
                development directory (for development diffs).  Exit status:
                zero indicates succes, all non-zero exits indicate failure
                (the aed will fail).

        annotate_diff_command = string;
                The difference of 2 files, for the use of the _a_e_a_n_n_o_t_a_t_e(1)
                command.  (This isn't the same as the _d_i_f_f___c_o_m_m_a_n_d field,
                because it's aimed at _a_e_a_n_n_o_t_a_t_e(1), not at humans.)  The
                command is always executed by developers.  Used by the
                _a_e_a_n_n_o_t_a_t_e(1) command.

                Extreme care should be taken if you are considering setting
                this field, otherwise the result reported by _a_e_a_n_n_o_t_a_t_e(1) may
                bear little relation to reality.  The most useful option is
                GNU diff's ----iiggnnoorree--aallll--ssppaaccee option, which will have the
                effect of ignoring the majority of indenting and code
                formatting changes.  The ----iiggnnoorree--ccaassee option could also be
                useful for case insensitive languages such as FORTRAN or PL/1.
                Avoid options which would alter the number of lines, such as --
                --iiggnnoorree--bbllaannkk--lliinneess or ----ccoonntteexxtt as these will produce
                misleading results.

                Defaults to "set +e; diff $option $original $input > $output;
                test $? -le 1" if not set.

                All of the substitutions described by _a_e_s_u_b(5) are available;
                in addition,

                ${ORiginal}
                        The absolute path of the original file copied into the
                        change.  Usually in the baseline, but not always.

                ${Input}
                        The absolute path of the file in the development
                        directory.

                ${Output}
                        The absolute path of the file in which to write the
                        difference listing.

                ${INDex}
                        The project-relative name of the file, for use when
                        the file name is embedded in the output.  (Optional.)

                ${OPTion}
                        Extra options to be passed to the diff command, as set
                        by the _a_e_a_n_n_o_t_a_t_e(1) --ddiiffff--ooppttiioonn command line option.
                        Use with extreme care.

                Executed as: the project owner (for integration diffs), or the
                developer (for development diffs).  Current directory: the
                integration directory (for integration diffs), or the
                development directory (for development diffs).  Exit status:
                zero indicates succes, all non-zero exits indicate failure
                (the aed will fail).

        review_policy_command = string;
                This field is used to set the command to be executed by the
                _a_e_r_p_a_s_s(1) command.  This command is useful in cases where the
                enterprise has determined that more than one review is
                necessary or that the reviewer must be senior to the
                developer, _e_t_c.  Defaults to "exit 0" if not set.

                The exit status is examined.  An zero exit status (success)
                means that the change will proceed to the _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n
                state; a non-zero exit status (failure) means that the change
                requires further review state, and the _d_e_v_e_l_o_p___e_n_d___a_c_t_i_o_n is
                colsulted to determine the appropriate state (_a_w_a_i_t_i_n_g___r_e_v_i_e_w
                or _b_e_i_n_g___r_e_v_i_e_w_e_d) for the change to move to.

                All of the substitutions described by _a_e_s_u_b(5) are available.
                Of particular interest are ${Change_Developer_List} and
                ${Change_Reviewer_List} for passing the specific staff
                involved with the change.

                Executed as: the current reviewer.  Current directory: the
                development directory.  Exit status: zero indicates success,
                non-zero indicates failure.

                For example, to have a script which is a project source file
                to be used to gate the code review process, a setting such as
                the following may be used:
                        review_policy_command =
                            "$sh ${source script/reviewpolicy.sh} "
                            "-p $project -c $change "
                            "-d ${developer_list} "
                            "-r ${reviewer_list}"
                            ;
                This is only one of many ways to implement a project specific
                review policy.

        test_command = string;
                This field is used to set the command to be executed by the
                _a_e_t(1) command.  Defaults to "$shell $file_name" if not set.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${File_Name}
                        The absolute path of the test to be executed.

                ${Search_Path}
                        Colon separated list of directories to search for
                        tests and test support files.  (This is a normal
                        _a_e_s_u_b(5) substitution.)

                ${Search_Path_Executable}
                        Colon separated list of directories to search for
                        executable files and executable support files.
                        Usually it is the same as the above, _e_x_c_e_p_t during an
                        ``aet -bl'' command.

                Note that tests are source files, and thus never have the
                execute bit set.

                Executed as: the project owner (for integration tests) or the
                developer (for development tests), or the executing user (for
                -independent tests).  Current directory: the integration
                directory (for integration tests), the development directory
                (for development tests), the project baseline (for -bl tests),
                or the current directory (for -independent tests).  Exit
                status: zero indicates success, one indicates failure,
                anything else indicates "no result".

        development_test_command = string;
                This field is used to set the command to be executed by the
                _a_e_t(1) command when a change is in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
                Defaults to be the same as the _t_e_s_t___c_o_m_m_a_n_d field if not set.

                NNoottee:: It is a significantly bad idea to make tests behave
                differently in _b_e_i_n_g _d_e_v_e_l_o_p_m_e_n_t and _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d states;
                avoid this at all costs.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${File_Name}
                        The absolute path of the test to be executed.

                ${File_Name}
                        The absolute path of the test to be executed.

                ${Search_Path}
                        Colon separated list of directories to search for
                        tests and test support files.  (This is a normal
                        _a_e_s_u_b(5) substitution.)

                ${Search_Path_Executable}
                        Colon separated list of directories to search for
                        executable files and executable support files.
                        Usually it is the same as the above, _e_x_c_e_p_t during an
                        ``aet -bl'' command.

                Note that tests are source files, and thus never have the
                execute bit set.

                Executed as: the developer.  Current directory: the
                development directory (for development tests), the project
                baseline (for -bl tests).  Exit status: zero indicates
                success, one indicates failure, anything else indicates "no
                result".

        batch_test_command = string;
                This field is used to set the command to be executed by the
                _a_e_t(1) command, in preference to the _t_e_s_t___c_o_m_m_a_n_d or
                _d_e_v_e_l_o_p_m_e_n_t___t_e_s_t___c_o_m_m_a_n_d, if set.  It is capable of running
                more than one test at once.

                All of the substitutions described in _a_e_s_u_b(5) are available.
                In addition:

                ${Output}
                        This is the name of the file to be generated to hold
                        the test results.  See _a_e_t_e_s_t(5) for the format of
                        this file.
                        A space separated list of absolute paths of the tests
                        to be executed.

                ${File_Names}
                        The absolute path of the tests to be executed.

                ${File_Name}
                        The absolute path of the test to be executed.

                ${Search_Path}
                        Colon separated list of directories to search for
                        tests and test support files.  (This is a normal
                        _a_e_s_u_b(5) substitution.)

                ${Search_Path_Executable}
                        Colon separated list of directories to search for
                        executable files and executable support files.
                        Usually it is the same as the above, _e_x_c_e_p_t during an
                        ``aet -bl'' command.

                ${Current}
                        Number of first test in the batch.

                ${Total}
                        Total number of tests. If this is 0 then no progress
                        messages should be issued.

                Note that tests are source files, and thus never have the
                execute bit set.

                It is strongly recommended that you design your test scripts
                so that they may be executed by either batch or non-batch
                methods.  This permits simple migration when your environment
                changes.

                Executed as: the project owner (for integration tests) or the
                developer (for development tests), or the executing user (for
                -independent tests).  Current directory: the integration
                directory (for integration tests), the development directory
                (for development tests), the project baseline (for -bl tests),
                or the current directory (for -indenpendent tests).  Exit
                status: zero indicates succes, one indicates failure, anything
                else indicates "no result".

        architecture_discriminator_command = string;
                If this field is present it is used as a command to be
                executed in order to further identify the platform
                architecture (see below).  All of the substitutions described
                by _a_e_s_u_b(5) are available;
                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: zero
                indicates success, all non-zero exits indicate failure.

        architecture = [{ ... }];
                This field is a list of system and machine architectures on
                which each change must successfully build and test.  May be
                assigned more than once.  The structures listed have fields as
                follows:

                name = string;
                        The name of the architecture.  This name is available
                        in the _$_{_A_R_C_H_i_t_e_c_t_u_r_e_} substitution (see _a_e_s_u_b(5) for
                        more information), as well as being used internally by
                        Aegis.  You may use almost any name for your
                        architecture, but it is best to avoid shell special
                        characters and white space, because it may be
                        substituted into commands to be executed by Aegis.

                pattern = string;
                        The system and machine architecture are determined by
                        using the _u_n_a_m_e(2) system call.  The _u_n_a_m_e(2) return
                        value is assembled into a string of the form "_s_y_s_n_a_m_e--
                        _r_e_l_e_a_s_e--_v_e_r_s_i_o_n--_m_a_c_h_i_n_e", or "_s_y_s_n_a_m_e--_r_e_l_e_a_s_e--_v_e_r_s_i_o_n--
                        _m_a_c_h_i_n_e--_d_i_s_c" if _a_r_c_h_i_t_e_c_t_u_r_e___d_i_s_c_r_i_m_i_n_a_t_o_r___c_o_m_m_a_n_d is
                        used.

                        The pattern field must match this uname result string.
                        The first match found is used.  The pattern is a shell
                        file name pattern, see _s_h(1) for more information.

                        For example, the pattern _S_u_n_O_S_-_4_._1_*_-_*_-_s_u_n_4_* matches a
                        machine the author commonly uses, which returns
                        _S_u_n_O_S_-_4_._1_._3_-_8_-_s_u_n_4_m from the _u_n_a_m_e(2) system call.

                mode = (required, optional, forbidden);
                        The _m_o_d_e field is used to control how the architecture
                        information is used.

                        required
                                Architectures of thus mode will be copied into
                                changes as their required architectures when
                                the change is created.  This is the default.

                        optional
                                Architectures of thus mode will _n_o_t be copied
                                into changes as their required architectures
                                when the change is created.  However, if you
                                add them subsequently, they become required
                                _f_o_r _t_h_a_t _c_h_a_n_g_e.

                        forbidden
                                Aegis will refuse to build or test on
                                architectures of this mode.

                        When a change is created, the _r_e_q_u_i_r_e_d architecture
                        names are copied into the change's architecture list.
                        Once names are in this list, they are required for the
                        change, and the project attributes are less relevant.

                If the architecture field is not set, it defaults to
                        architecture =
                        [
                             {
                                  name = "unspecified";
                                  pattern = "*";
                                  mode = required;
                             }
                        ];

        file_template = [ { ... } ];
                The file template is consulted whenever a new file is created,
                by one of the _a_e_n_f(1) or _a_e_n_t(1) commands.  May be assigned
                more than once.  Each list item has the form:

                pattern = [ string ];
                        The name of the file, relative to the development
                        directory.  Each string is a shell file name pattern;
                        see _s_h(1) for more information.  The patterns are
                        matched against the whole filename; naming only the
                        last filename path element will _n_o_t work (unless the
                        pattern starts with ``*'').

                body_command = string;
                        Command to run to initialize the body of the file.
                        Executed as: the developer.  Current directory: the
                        development directory of the change.  Exit status:
                        ignored.

                body = string;
                        What to initialize the body of the file to.

                All of the substitutions described in _a_e_s_u_b(5) are available
                for the _b_o_d_y and _b_o_d_y___c_o_m_m_a_n_d strings.  (Only specify one of
                them.)  In addition:

                ${File_Name}
                        will be replaced by the name of the new file.

        whiteout_template = [ { ... } ];
                The file template is consulted whenever a file is removed, by
                one of the _a_e_r_m(1) or _a_e_m_v(1) commands.  It is used to place a
                ``whiteout'' entry in the development directory, in order to
                induce compile errors of the removed file is referenced during
                the build.  Each list item has the form:

                pattern = [ string ];
                        The name of the file, relative to the development
                        directory.  Each string is a shell file name pattern;
                        see _s_h(1) for more information.  The patterns are
                        matched against the whole filename; naming only the
                        last filename path element will _n_o_t work (unless the
                        pattern starts with ``*'').

                body = string;
                        What to initialize the body of the file to.  If not
                        present, no whiteout file will be created; if the
                        empty string, a zero-length whiteout file will be
                        created.

                All of the substitutions described in _a_e_s_u_b(5) are available
                for the body string.  In addition:

                ${File_Name}
                        will be replaced by the name of the removed file.

                If the name of the file being removed does not match any of
                the filename patterns, a file consisting of 1KB of very ugly
                garbage will be generated.  The idea is that it will produce a
                syntax error for most languages if you try to run it, compile
                it, or include it.

        maximum_filename_length = integer;
                This field is used to limit the length of filenames.  All new
                files may not have path components longer than this.  Existing
                files are not affected.  The last component must also allow
                for the ",D" suffix of difference files.  Where this value is
                larger than the file system allows, the file system limit will
                be imposed.  Defaults to 255 if not set.  Legal values range
                from 9 to 255.

                The file name lengths of project files will be checked at
                develop end if the project _a_e_g_i_s_._c_o_n_f file is in the change.
                See _a_e_d_e _(_1_) for more information.

        posix_filename_charset = boolean;
                This field may be used to limit the characters allowed in
                filenames to only those explicitly allowed by POSIX.  Defaults
                to false if not set.

                For a filename to be portable across conforming
                implementations of IEEE Std 1003.1-1988, it shall consist only
                of alphanumeric characters, dot, hyphen or underscore.  Hyphen
                shall not be used as the first character of a portable
                filename.

                If this field is false, all characters are allowed except non-
                printing characters, space characters and leading hyphens.

        dos_filename_required = boolean;
                This field may be used to limit filenames so that they conform
                to the DOS 8+3 filename limits and to the DOS filename
                character set.  Also denies filenames which look like devices
                (AUX, _e_t_c).  Defaults to false if not set.  This field is used
                in combination with the other filename fields, it does not
                replace them.

        windows_filename_required = boolean;
                This field may be used to limit filenames so that they conform
                to the Windows98 and WindowsNT filename limits and character
                set.  Also denies filenames which look like devices (AUX,
                _e_t_c).  Defaults to false if not set.  This field is used in
                combination with the other filename fields, it does not
                replace them.

        shell_safe_filenames = boolean;
                This field may be used to limit filenames so that they may not
                contain shell special characters.  If you do not set this to
                true, you will need to use the ${quote} substitution around
                filenames in commands, or risk unexpected errors.  This field
                defaults to true if not set.

        filename_pattern_accept = [ string ];
                This field is used to specify a list of patterns of acceptable
                filenames.  The patterns are matched against each filename
                path element.  The patterns are constructed from the usual
                shell filename wildcards.  Defaults to "*" if not set.

        filename_pattern_reject = [ string ];
                This field is used to specify a list of patterns of
                unacceptable filenames.  The patterns are matched against each
                filename path element.  The patterns are constructed from the
                usual shell filename wildcards.  Defaults to "*,D" if not set.
                The pattern "*,D" is always appended.  Where the
                _f_i_l_e_n_a_m_e___p_a_t_t_e_r_n___a_c_c_e_p_t and filename_pattern_reject fields
                conflict, the reject takes precedence.

        new_test_filename = string;
                This field is used to form the filename of new tests, where
                the filename is not specified on the aent command line.
                Defaults to "test/${zpad $hundred 2}/t${zpad $number 4}${left
                $type 1}.sh" if not set.

                All of the substitutions defined in _a_e_s_u_b(5) are available.
                The following three substitutions are also available:

                $Hundred
                        The test number divided by 100, optional

                $Number The test number, mandatory

                $Type   The test type: "automatic" or "manual", optional

        development_directory_template = string;
                This field is used to determine the name of the development
                directory at develop begin.  All of the substitutions defined
                in _a_e_s_u_b(5) are available.  The following substitutions is
                also available:

                Default_Development_Directory
                        The directory within which the development directory
                        is to be created.

                Magic   A single letter, starting from ``C'', which can be
                        inserted.  This must be used, as it allows Aegis to
                        try different names should there be a conflict.

                If not set, defaults to "$ddd/${left $p ${expr ${namemax $ddd}
                - ${length .$magic$c}}}.$magic$c".

                For DOS compatibility (8+3 filenames), a useful setting is
                "$ddd/${downcase ${left ${id $p} 8}.$magic${right 0$c 2}}".
                This ensures that the filename is always a valid 8.3 filename,
                that it is always lowercase, and it translates any punctuation
                in the project name into underscores.

        metrics_filename_pattern = string;
                This field is used to form the name of the metrics file, given
                a source file.  All of the substitutions defined in _a_e_s_u_b(5)
                are available.  The following substitutions is also available:

                File_Name
                        The absolute pathname of the source file.

                Defaults to "$filename,S" if not set.

        trojan_horse_suspect = [ string ];
                This list of filename patterns is consulted by aedist
                --receive when it is checking for files which could be used to
                host Trojan horse attacks.  This will be different for
                different projects, so you will need to update this yourself.
                The patterns are matched against the whole filename; naming
                only the last filename path element will _n_o_t work (unless the
                pattern starts with ``*'').

        project_specific = [ { ... } ];
                This is a list of name and value pairs for use within the
                ${project-specific} substitution (see _a_e_s_u_b(5) for more
                information).  May be assigned more than once.  The sub-fields
                are

                name = string;
                        The name of the value.  By convention, names which
                        start with an upper-case letter will appear in
                        listings, and lower-case will not.  Attribute names
                        are case-insensitive.

                value = string;
                        The value to be substituted.

                There are almost no limitations on the strings which may
                appear in either of these fields.

                When commands are executed by Aegis, it ensures that the
                AEGIS_PROJECT, AEGIS_CHANGE, AEGIS_ARCH, LINES and COLS
                environment variables are set appropriately.  The project
                configuration file's _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field is also consulted,
                looking for value's whose name starts with "setenv:" and sets
                the corresponding environment variable.  All of the
                substitutions described by _a_e_s_u_b(5) are available.  For
                example: specifying a PATH and a SEARCH_PATH to be used for
                all commands may be set as follows:
                        project_specific =
                        [
                          {
                            name = "setenv:PATH";
                            value = "/usr/bin:/bin";
                          },
                          {
                            name = "setenv:SEARCH_PATH";
                            value = "${search_path}";
                          },
                        ];
                As many environment variables as desired may be specified in
                this way.

        build_time_adjust = (...);
                This field controls the adjustment of file modification times
                at the end of integrate-pass.  File times are adjusted so that
                development directories are, in the main, out of date with
                respect to the baseline.  The idea is that, at the very least,
                programs need to be relinked so that _a_e_t _-_r_e_g does not give
                false negatives.

                Combining this with the _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d (above) can
                alleviate the vast majority of file modification time
                inconsistencies experienced as a result of a project
                integration and the subsequent changes in the baseline's file
                modification times.

                Unless you are a masochist, do not set this field.  Leave it
                as the default.

                adjust_and_sleep
                        Causes the file times to be adjusted, and if the file
                        times would extend into the future, aeipass will sleep
                        until that time has passed.  This is the default.

                adjust_only
                        Causes the file times to be adjusted.  If the file
                        time extend into the future, a warning is issued.

                dont_adjust
                        File modification times are not adjusted.  This is a
                        really bad idea.  Really.  Make sure that, at the very
                        minimum, _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d touches all of the
                        change's files, otherwise the build problems which
                        ensue are going to take you weeks to track down and
                        lose you mucho productivity.  You have been warned.

                See also the _b_u_i_l_d___t_i_m_e___a_d_j_u_s_t___n_o_t_i_f_y___c_o_m_m_a_n_d field.

        signed_off_by = boolean;
                If this field is set each _a_e_d_b(1), _a_e_c_h_o_w_n(1), _a_e_d_e(1) and
                _a_e_r_p_a_s_s(1) will append a Signed-off-by line to the change
                description.  This field should only be set to true for open
                source projects.

                For a description of Signed-off-by see
                http://www.ussg.iu.edu/hypermail/linux/kernel/0405.2/1301.html
                and
                http://www.osdl.org/newsroom/press_releases/2004/2004_05_24_dco.html

OOBBSSOOLLEETTEE FFIIEELLDDSS
        There are some obsolete fields in the file.  They are provided for
        backwards compatibility only, and should not be used.

        diff3_command = string;
                This field is used to difference 3 files.  The command is
                always executed by developers.  Used by the _a_e_d(1) command.
                All of the substitutions described by _a_e_s_u_b(5) are available;
                in addition,

                ${ORiginal}
                        The absolute path of the original file copied into the
                        change.  Usually not in the baseline.

                ${Most_Recent}
                        The absolute path of the competing edit, usually in
                        the baseline.

                ${Input}
                        The absolute path of the file in the development
                        directory.

                ${Output}
                        The absolute path of the file in which to write the
                        difference listing.

                Executed as: the project owner (for integration diffs), or the
                developer (for development diffs).  Current directory: the
                integration directory (for integration diffs), or the
                development directory (for development diffs).  Exit status:
                zero indicates success, all non-zero exits indicate failure
                (the aed will fail).

                The problem with this field was that the default usage placed
                the merged source in a strange place.  And subsequent _a_e_d(1)
                commands would over-write it.  This meant that merges would be
                lost, causing a number of nasty problems.  Some sites overcame
                this by adding ``mv'' commands to put the output back where
                the input came from, but this meant that Aegis' commentary was
                misleading.  Use the ``merge_command'' field instead.  It is
                almost identical, but Aegis will move the files around for you
                - so you get the good behavior by default (no lost merges) and
                the error message is consistent.

        create_symlinks_before_build = boolean;
                This flag is true if Aegis should create symlinks from the
                development directory to the baseline for all files in the
                baseline not in the development directory immediately before a
                development_build_command is issued.  Usually used to trick
                dumb DMTs into believing the development directory contains an
                entire copy of the project, though sometimes the DMT is smart
                enough, the tools it must work with are not.  Symlinks in the
                development directory which point to nonexistent files will be
                removed.

                Defaults to false if not set.

        create_symlinks_before_integration_build = boolean;
                This flag is true if Aegis should create symlinks from the
                integration directory to the ancestral baseline for all files
                in the ancestral not in the integration directory immediately
                before a build_command is issued.  Usually used to trick dumb
                DMTs into believing the integration directory contains an
                entire copy of the project, though sometimes the DMT is smart
                enough, the tools it must work with are not.  Symlinks in the
                integration directory which point to nonexistent files will be
                removed.

                Defaults to the same value as _c_r_e_a_t_e___s_y_m_l_i_n_k_s___b_e_f_o_r_e___b_u_i_l_d if
                not set.

        remove_symlinks_after_build = boolean;
                This flag is true if Aegis should remove symlinks which point
                from the development directory to the baseline directory
                immediately after a development_build_command is issued.  Only
                consulted if the _c_r_e_a_t_e___s_y_m_l_i_n_k_s___b_e_f_o_r_e___b_u_i_l_d field is true,
                for the purpose of reversing the actions of the _c_r_e_a_t_e___-
                _s_y_m_l_i_n_k_s___b_e_f_o_r_e___b_u_i_l_d field.

                Defaults to false if not set.

        remove_symlinks_after_integration_build = boolean;
                This flag is true if Aegis should remove symlinks which point
                from the integration directory to the ancestral baseline
                directory immediately after a build_command is issued.  Only
                consulted if the _c_r_e_a_t_e___s_y_m_l_i_n_k_s___b_e_f_o_r_e___i_n_t_e_g_r_a_t_i_o_n___b_u_i_l_d
                field is true, for the purpose of reversing the actions of the
                _c_r_e_a_t_e___s_y_m_l_i_n_k_s___b_e_f_o_r_e___i_n_t_e_g_r_a_t_i_o_n___b_u_i_l_d field.

                Defaults to ttrruuee if not set.  This default is intentional.  It
                is important that there are no symlinks in the (new) baseline,
                because they could go stale between integrations.  If you set
                this field to false, _c_a_v_e_a_t _e_m_p_t_o_r.

SSEEEE AALLSSOO
        _a_e_b(1)  build a change

        _a_e_c_p(1) copy a file into a change

        _a_e_c_p_u(1)
                reverse action of aecp

        _a_e_d(1)  find differences between a change and the baseline

        _a_e_d_e(1) end development of a change

        _a_e_r_p_a_s_s(1)
                pass a review of a change

        _a_e_i_b(1) begin integration of a change

        _a_e_i_p_a_s_s(1)
                pass integration of a change

        _a_e_m_v(1) rename a file as part of a change

        _a_e_n_f(1) add new files to be created by a change

        _a_e_n_f_u(1)
                remove new files from a change

        _a_e_n_t(1) add a new test to be created by a change

        _a_e_n_t_u(1)
                remove new tests from a change

        _a_e_t(1)  run tests

        _a_e_g_i_s(5)
                aegis file format syntax

        _a_e_s_u_b(5)
                available command substitutions

        _a_e_t_e_s_t(5)
                batch test results file

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aepstate(5)                                                        aepstate(5)



NNAAMMEE
        aepstate - project state file

SSYYNNOOPPSSIISS
        _p_r_o_j_e_c_t/info/state

DDEESSCCRRIIPPTTIIOONN
        The _p_r_o_j_e_c_t/info/state file is used to store state information about a
        project.

        This file is maintained by aaeeggiiss and thus should not be edited by
        humans.

CCOONNTTEENNTTSS
        next_test_number = integer;
                Each test is numbered uniquely across all branches of the
                project.  The name is of the form _t_[_0_-_9_]_[_0_-_9_]_[_0_-_9_]_[_0_-_9_]_[_a_m_]_._s_h
                ('a' for automatic and 'm' for manual.)

   AAllmmoosstt OObbssoolleettee FFiieellddss
        The following fields are obsolete.  They will persist until the next
        _a_e_n_r_l_s(1), and the new project so generated will use them to define
        its default branching.

        version_major = integer;
                The major version number of this release of the project.
                Always one or more.

        version_minor = integer;
                The minor version number of this release of the project.
                Always zero or more.

   OObbssoolleettee FFiieellddss
        The following fields are obsolete.  They are only present in projects
        which have yet to be converted to the new branch format.  When _A_e_g_i_s
        sees them, they will be moved into the "trunk" transaction.

        description = string;
                This field contains a description of the project.  Large
                amounts of prose are not required; a single line is
                sufficient.

        owner_name = string;
                This field is ignored.

        group_name = string;
                This field is ignored.

        developer_may_review = boolean;
                If this field is true, then a developer may review her own
                change.  This is probably only a good idea for projects of
                less than 3 people.  The idea is for as many people as
                possible to critically examine a change.

        developer_may_integrate = boolean;
                If this field is true, then a developer may integrate her own
                change.  This is probably only a good idea for projects of
                less than 3 people.  The idea is for as many people as
                possible to critically examine a change.

        reviewer_may_integrate = boolean;
                If this field is true, then a reviewer may integrate a change
                she reviewed.  This is probably only a good idea for projects
                of less than 3 people.  The idea is for as many people as
                possible to critically examine a change.

        developers_may_create_changes = boolean;
                This field is true if developers may created changes, in
                addition to administrators.  This tends to be a very useful
                thing, since developers find most of the bugs.

        forced_develop_begin_notify_command = string;
                This command is used to notify a developer that a change
                requires developing; it is issued when a project administrator
                uses an _a_e_d_b _-_U_s_e_r command to force development of a change by
                a specific user.  All of the substitutions described in
                _a_e_s_u_b(5) are available.  This field is optional.

                Executed as: the new developer.  Current directory: the
                development directory of the change for the new developer.
                Exit status: ignored.

        develop_end_notify_command = string;
                This command is used to notify that a change is ready for
                review.  It will probably use mail, or it could be an in-house
                bulletin board.  This field is optional, if not present no
                notification will be given.  This command could also be used
                to notify other management systems, such as progress and
                defect tracking.  All of the substitutions described by
                _a_e_s_u_b(5) are available.

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: ignored.

        develop_end_undo_notify_command = string;
                This command is used to notify that a change had been
                withdrawn from review for further development.  It will
                probably use mail, or it could be an in-house bulletin board.
                This field is optional, if not present no notification will be
                given.  This command could also be used to notify other
                management systems, such as progress and defect tracking.  All
                of the substitutions described by _a_e_s_u_b(5) are available.

                Executed as: the developer.  Current directory: the
                development directory of the change.  Exit status: ignored.

        review_pass_notify_command = string;
                This command is used to notify that a review has passed.  It
                will probably use mail, or it could be an in-house bulletin
                board.  This field is optional, if not present no notification
                will be given.  This command could also be used to notify
                other management systems, such as progress and defect
                tracking.  All of the substitutions described by _a_e_s_u_b(5) are
                available.

                Executed as: the reviewer.  Current directory: the development
                directory of the change.  Exit status: ignored.

        review_pass_undo_notify_command = string;
                This command is used to notify that a review has passed.  It
                will probably use mail, or it could be an in-house bulletin
                board.  This field is optional, if not present no notification
                will be given.  This command could also be used to notify
                other management systems, such as progress and defect
                tracking.  Defaults to the same action as the
                _d_e_v_e_l_o_p___e_n_d___n_o_t_i_f_y___c_o_m_m_a_n_d field.  All of the substitutions
                described by _a_e_s_u_b(5) are available.

        review_fail_notify_command = string;
                This command is used to notify that a review has failed.  It
                will probably use mail, or it could be an in-house bulletin
                board.  This field is optional, if not present no notification
                will be given.  This command could also be used to notify
                other management systems, such as progress and defect
                tracking.  All of the substitutions described by _a_e_s_u_b(5) are
                available.

                Executed as: the reviewer.  Current directory: the development
                directory of the change.  Exit status: ignored.

        integrate_pass_notify_command = string;
                This command is used to notify that an integration has passed.
                It will probably use mail, or it could be an in-house bulletin
                board.  This field is optional, if not present no notification
                will be given.  This command could also be used to notify
                other management systems, such as progress and defect
                tracking.  All of the substitutions described by _a_e_s_u_b(5) are
                available.

                Some compilers bury absolute path names into object files and
                executables.  The renaming of the integration directory to
                become the new baseline breaks these paths.  This command is
                passed an environment variable called AEGIS_INTEGRATION_-
                DIRECTORY so that the appropriate symlink may be placed, if
                desired.

                Executed as: the project owner.  Current directory: the new
                project baseline.  Exit status: ignored.

        integrate_fail_notify_command = string;
                This command is used to notify that an integration has failed.
                It will probably use mail, or it could be an in-house bulletin
                board.  This field is optional, if not present no notification
                will be given.  This command could also be used to notify
                other management systems, such as progress and defect
                tracking.  All of the substitutions described by _a_e_s_u_b(5) are
                available.

                Executed as: the integrator.  Current directory: the
                development directory of the change.  Exit status: ignored.

        default_development_directory = string;
                The pathname of where to place new development directories.
                The pathname must be absolute.  This field is only consulted
                if the field of the same name in the user configuration file
                is not set.

        umask = integer;
                File permission mode mask.  See _u_m_a_s_k(2) for more information.
                This value will always be OR'ed with 022, because _a_e_g_i_s is
                paranoid.

        default_test_exemption = boolean;
                This field contains what to do when a change is created with
                no test exemption specified.

        copyright_years = [ integer ];
                This field contains a list of copyright years, for use in
                copyright notices, etc.  It is updated each integrate_begin,
                if necessary, to include the current year.  Available as the
                ${Copyright_Years} substitution, and included in the version
                listing.

        next_change_number = integer;
                Changes are numbered sequentially from one.  This field
                records the next unused change number.

        next_delta_number = integer;
                Deltas are numbered sequentially from one.  This field records
                the next unused delta number.

        src = [ { ... } ];
                If you are writing a report, see _a_e_f_s_t_a_t_e(5) for the current
                documentation for this field.  This field is a list of files
                in the project.  Each list item has the form:

                file_name = string;
                        The name of the file, relative to the baseline.

                usage = (source, config, build, test, manual_test);
                        What the file is for.

                edit_number = string;
                        The edit number of the file.

                locked_by = integer;
                        The change which locked this file.
                        Caveat: this field is redundant, you can figure it out
                        by scanning all of he change files.  Having it here is
                        very convenient, even though it means multiple
                        updates.

                about_to_be_created_by = integer;
                        The change which is about to create this file for the
                        first time.  Same caveat as above.

                deleted_by = integer;
                        The change which last deleted this file.  We never
                        throw them away, because (a) it may be created again,
                        and more important (b) we need it to recreate earlier
                        deltas.

        history = [{ ... }];
                This field contains a history of integrations for the project.
                Updated by each successful 'aegis -Integrate_Pass' command.

                delta_number = integer;
                        The delta number of the integration.

                change_number = integer;
                        The number of the change which was integrated.

                name = [ string ];
                        The names by which this delta is known.

        change = [integer];
                The list of changes which have been created to date.

        administrator = [string];
                The list of administrators of the project.

        developer = [string];
                The list of developers of the project.

        reviewer = [string];
                The list of reviewers of the project.

        integrator = [string];
                The list of integrators of the project.

        currently_integrating_change = integer;
                The change currently being integrated.  Only one change
                (within a project) may be integrated at a time.  Only set when
                an integration is in progress.

        version_major = integer;
                The major version number of this release of the project.
                Always one or more.

        version_minor = integer;
                The minor version number of this release of the project.
                Always zero or more.

        version_previous = string;
                The version number this project was derived from.  This is of
                most use when producing "patch" files.

WWRRIITTIINNGG RREEPPOORRTT SSCCRRIIPPTTSS
        When attempting to access these fields from within the report
        generator, you need a code fragment similar to the following:
                auto ps;
                ps = project[project_name()].state;
        All of the fields mentioned in the man page can now be accessed as
        members of the ps variable.

        When you access the _b_r_a_n_c_h field, you obtain access to the change
        state of the branch.  Even the trunk has one of these, it just doesn't
        have a number, and it is perpetually being developed.

        When you index the _b_r_a_n_c_h_._c_h_a_n_g_e field by a change number, you obtain
        access to the change state of that change.

        When you index the _b_r_a_n_c_h_._s_r_c field by a filename string, you may
        obtain access the the relevant project file state (see _a_e_f_s_t_a_t_e(5) for
        more information).

        In addition to the above fields, the report generator inserts a _n_a_m_e
        field containing the project name, and a _d_i_r_e_c_t_o_r_y field containing
        the project directory path.

SSEEEE AALLSSOO
        _a_e_n_p_r(1)
                create a new project

        _a_e_g_i_s(5)
                aegis file format syntax

        _a_e_p_a_t_t_r(5)
                project attributes file format

        _a_e_c_s_t_a_t_e(5)
                change state file

        _a_e_f_s_t_a_t_e(5)
                file state file

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aer(5)                                                                  aer(5)



NNAAMMEE
        aer - report script language definition

DDEESSCCRRIIPPTTIIOONN
        This manual entry describes the report generator script language used
        by the _a_e_r(1) command.  The language resembles C, with a touch of _a_w_k
        and _p_e_r_l for flavour.  It also closely resembles the appearance of
        aegis' database files.

        This language grew out of the need to have a general purpose
        programming language to describe reports, and yet be as familiar as
        possible to the people who will be using it.

WWOORRDDSS AANNDD SSYYMMBBOOLLSS
        This section describes the various words and symbols understood by the
        language.

   NNaammeess
        A name is a contiguous set of alphanumeric characters, including
        underscore (_).  It must not start with a digit.  Names may be of any
        length.  Names are case sensitive, so uppercase and lowercase letters
        are unique.

        Here are some examples of names

                            +-----------------------------+
                            | print       sqrt       if   |
                            |how_long   UpperCase   dig57 |
                            +-----------------------------+
        Some words are _r_e_s_e_r_v_e_d as keywords.  These are the words which appear
        in bboolldd in the statement descriptions, below.

   IInntteeggeerr CCoonnssttaannttss
        An integer constant may be decimal, any sequence of digits.  Constants
        may be octal, any sequence of octal digits starting with a zero.
        Constant may be hexadecimal, any sequence of hexadecimal digits,
        starting with a 0x prefix.  These are represented by the internal long
        type, so significance is limited.

        Here are some examples of integer constants:

                       +---------------------------------------+
                       |        43            015       0xbeEf |
                       |2147483647   017777777777   0x7FFFFFFF |
                       +---------------------------------------+
   FFllooaattiinngg PPooiinntt CCoonnssttaannttss
        A floating point constant has an integer part, a fraction part and an
        exponent part.

        Here are some examples of floating point constants:

                             +---------------------------+
                             |1.2e3   4.2e+1   1.628e-94 |
                             |0.567      5e6         .67 |
                             +---------------------------+
   SSttrriinngg CCoonnssttaannttss
        A string constant is represented as characters within double quotes
        (").  All characters in the script file are required to be printable,
        so special characters are represented by _e_s_c_a_p_e _s_e_q_u_e_n_c_e_s_.  These
        escape sequences are:

                            +-----------------------------+
                            |\"     the " character       |
                            |\\     the \ character       |
                            |\n     Newline               |
                            |\f     Form Feed             |
                            |\r     Carriage Return       |
                            |\b     Backspace             |
                            |\t     Horizontal Tab        |
                            |\_n_n_n   octal character value |
                            +-----------------------------+
        Here are some examples of string constants:

                 +---------------------------------------------------+
                 |"Hello, World!"     "Go away"            ""        |
                 |   "The End0      "slosh is \\"   "Say \"Please\"" |
                 +---------------------------------------------------+
   SSyymmbboollss
        The non-alphanumeric characters are used to represent symbols, usually
        expression operators or statement terminators.  The symbols used
        include:

                             +--------------------------+
                             | !    !=   !~    ##   ##= |
                             | %    %=    &    &&   &=  |
                             | (    )     *    **   **= |
                             |*=    +    ++    +=    ,  |
                             | -    --   -=    .     /  |
                             |/=    :     ;    <    <<  |
                             |<<=   <=    =    ==    >  |
                             |>=    >>   >>=   ?     [  |
                             | ]    ^    ^=    {     |  |
                             ||=    ||    }    ~    ~~  |
                             +--------------------------+
   WWhhiittee SSppaaccee
        White space serves to separate words and symbols, and has no other
        significance.  The language is free-form.  White space includes the
        SPACE, TAB, FF, and NEWLINE characters.

   CCoommmmeennttss
        Comments are delimited by /* and */ pairs, and are treated as a single
        white space character.

SSTTAATTEEMMEENNTTSS
        Statement serve to control the flow of execution of the program, or
        the existence of variables.

   TThhee EExxpprreessssiioonn SSttaatteemmeenntt
        The commonest statement consists of an expression terminated by a
        semicolon.  The expression is evaluated, and any result is discarded.

        Examples of this statement include
                x = 42;
                print("Hello, World!0);

   TThhee IIff SSttaatteemmeenntt
        The _i_f statement is used to conditionally execute portions of code.
        Examples if the _i_f statement include:
                if (x == 42)
                     x = 1;
                if (x * x < 1)
                     print("no");
                else
                     print("yes");

   TThhee FFoorr SSttaatteemmeenntt
        The _f_o_r statement has two forms.  The first form is described as
                for (_e_x_p_r_1; _e_x_p_r_2; _e_x_p_r_3)
                     _s_t_m_t
        The _e_x_p_r_1 is done before the loop begins.  The _e_x_p_r_2 controls, the
        loop; if it does not evaluate to true the loop terminates.  The loop
        body is the _s_t_m_t.  The loop increment is done by the _e_x_p_r_3, and the
        the test is performed again.

        Each of the expressions is optional; any or all may be omitted.

        Here is an example of a _f_o_r loop:
                for (j = 0; j < 10; ++j)
                     print(j);

        The second form of the _f_o_r statement looks like this:
                for (name in keys(passwd))
                     print(name, passwd[name].pw_comment);

   TThhee BBrreeaakk SSttaatteemmeenntt
        The _b_r_e_a_k statement is used to break out of a loop.

        Here is an example of a _b_r_e_a_k statement:
                for (j = 0; ; j = 2 * j + 4)
                {
                     print(j);
                     if (j >= 0x800)
                          break;
                }
        The _b_r_e_a_k statement works within all loop statements.

   TThhee CCoonnttiinnuuee SSttaatteemmeenntt
        The _c_o_n_t_i_n_u_e statement is used to terminate the loop body and start
        another repetition.

        Here is an example of a _c_o_n_t_i_n_u_e statement:
                for (j = 0; j < 1000; j = 2 * j + 4)
                {
                     if (j < 42)
                          continue;
                     print(j);
                }
        The _c_o_n_t_i_n_u_e statement works within all loop statements.

   TThhee WWhhiillee SSttaatteemmeenntt
        The _w_h_i_l_e statement is another loop construct.  The condition is
        evaluated before the loop body.
                line = 0;
                while (line < 7)
                {
                     print("");
                     ++line;
                }

   TThhee DDoo SSttaatteemmeenntt
        The _d_o statement is another loop construct.  The condition is evaluate
        after the loop body.
                do
                     print("yuck");
                while
                     (line++ < 7);

   TThhee CCoommppoouunndd SSttaatteemmeenntt
        The _c_o_m_p_o_u_n_d statement is a way of grouping other statements together.
        It is enclosed in curly braces.
                if ( lines < 7)
                {
                     print("This\n");;
                     print("could\n");;
                     print("have\n");;
                     print("been\n");;
                     print("seven\n");;
                     print("blank\n");;
                     print("lines.\n");;
                }

   TThhee LLooccaall SSttaatteemmeenntt
        The _a_u_t_o statement is used to declare variables and initialize them to
        be nul.
                auto x, y, z;
                x = 42;
        All user-defined variables must be declared before they are used.

   TThhee NNuullll SSttaatteemmeenntt
        The _n_u_l_l statement does nothing.  It consists of a single semicolon.
        It is most often seen as a loop body.
                for (n = 0, bit = 1; n < bit_num; ++n, bit <<= 1)
                     ;

   TThhee TTrryy CCaattcchh SSttaatteemmeenntt
        The _t_r_y _c_a_t_c_h statement is used to catch errors which would usually
        cause the report to fail.
                try
                     _s_t_a_t_e_m_e_n_t_1
                catch (_v_a_r_i_a_b_l_e)
                     _s_t_a_t_e_m_e_n_t_2
        The first statement is executed.  If no error occurs, nothing else is
        done.  If an error occurs in the execution of the first statement the
        firsdt statement execution is terminated and then the given variable
        is set to a description of the error and the second statement is
        executed.

EEXXPPRREESSSSIIOONNSS
        Expressions are much the same as in C, using the same operators.  The
        following table describes operator precedence and associativity:


        [ ]     subscripting                _v_a_l_u_e [ _e_x_p_r ]
        ( )     function call               _e_x_p_r ( _e_x_p_r___l_i_s_t )
        ( )     grouping                    ( _e_x_p_r )


        ++      post increment              _l_v_a_l_u_e ++
        ++      pre increment               ++_l_v_a_l_u_e
        --      post decrement              _l_v_a_l_u_e --
        --      pre decrement               --_l_v_a_l_u_e
        ~       compliment                  ~ _e_x_p_r
        !       not                         ! _e_x_p_r
        -       unary minus                 - _e_x_p_r
        +       unary plus                  + _e_x_p_r


        **      exponentiation              _e_x_p_r ** _e_x_p_r


        *       multiply                    _e_x_p_r * _e_x_p_r
        /       divide                      _e_x_p_r / _e_x_p_r
        %       modulo (remainder)          _e_x_p_r % _e_x_p_r
        ~~      matches                     _e_x_p_r ~~ _e_x_p_r
        !~      does not match              _e_x_p_r !~ _e_x_p_r
        in      list member                 _e_x_p_r in _e_x_p_r


        +       addition (plus)             _e_x_p_r + _e_x_p_r
        -       subtraction (minus)         _e_x_p_r - _e_x_p_r
        ##      list and string join        _e_x_p_r ## _e_x_p_r


        <<      shift left                  _e_x_p_r << _e_x_p_r
        >>      shift right                 _e_x_p_r >> _e_x_p_r


        <       less than                   _e_x_p_r < _e_x_p_r
        <=      less than or equal          _e_x_p_r <= _e_x_p_r
        >       greater than                _e_x_p_r > _e_x_p_r
        >=      greater than or equal       _e_x_p_r >= _e_x_p_r


        ==      equal                       _e_x_p_r == _e_x_p_r
        !=      not equal                   _e_x_p_r != _e_x_p_r


        &       bitwise AND                 _e_x_p_r & _e_x_p_r


        ^       bitwise exclusive OR        _e_x_p_r ^ _e_x_p_r


        |       bitwise inclusive OR        _e_x_p_r | _e_x_p_r


        ? :     arithmetic if               _e_x_p_r ? _e_x_p_r : _e_x_p_r


        =       simple assignment           _e_x_p_r = _e_x_p_r
        *=      multiply and assign         _e_x_p_r *= _e_x_p_r
        /=      divide and assign           _e_x_p_r /= _e_x_p_r
        %=      modulo and assign           _e_x_p_r %= _e_x_p_r
        +=      add and assign              _e_x_p_r += _e_x_p_r
        -=      subtract and assign         _e_x_p_r -= _e_x_p_r
        <<=     shift left and assign       _e_x_p_r <<= _e_x_p_r
        >>=     shift right and assign      _e_x_p_r >>= _e_x_p_r
        &=      AND and assign              _e_x_p_r &= _e_x_p_r
        ^=      exclusive OR and assign     _e_x_p_r ^= _e_x_p_r
        |=      inclusive OR and assign     _e_x_p_r |= _e_x_p_r


        ,       comma (sequencing)          _e_x_p_r , _e_x_p_r

        Most of these operators behave as they do in C, but some of these
        operators will require some explanation.

   EExxppoonneennttiiaattiioonn
        The ** operator raises the left argument to the right'th power.  It is
        right associative.

   MMaattcchh
        The ~~ operator compares two strings.  It returns a number between 0.0
        and 1.0.  Zero means completely different, one means identical.  Case
        is significant.

   NNoott MMaattcchh
        The !~ is used to compare two strings, and returns the opposite of the
        ~~ operator; one if completely different, and zero if identical.

   SSttrriinngg JJooiinn
        The ## operator is used to join two strings together.

TTYYPPEESS
        There are several types used within the report language.

        array   Values of this type contain other values, indexed by a string.
                If you attempt to index by an arithmetic type, it will be
                silently converted to a string.  Use the _k_e_y_s function to
                determine all of the keys; use the _c_o_u_n_t function to determine
                how many entries an array has.  The type of an array element
                is not restricted, only the index must be a string.

        boolean This type has two values: true and false.  These value arise
                from the boolean operators described earlier.

        integer This type is represented by the _l_o_n_g C type.  It has a limited
                range of values (usually -2e9 to 2e9 approximately).  If used
                in a string context, it will be silently converted to a
                string.  For exact control of the format, used the _s_p_r_i_n_t_f
                function.

        list    Values of this type contain a list of other values.  The type
                of these values is not restricted.  The array index operator
                (e[e]) may be used to access list elements; indexes start at
                zero (0).

        string  Values of this type are an arbitrary string of C characters,
                except the NUL character ( ).  Strings may be of any length.

        struct  Values of this type contain additional values.  These values
                are accessed using the "dot" operator.  These values may also
                be treated as if they were arrays.

        real    This type is represented the the _d_o_u_b_l_e C type.  If used in a
                string context, it will be silently converted to a string.
                For exact control of the format, used the _s_p_r_i_n_t_f function.

FFUUNNCCTTIIOONNSS
        There are a number of built-in functions.

        basename
                This function is used to extract the last element from a file
                path.

        capitalize
                This function converts it argument to a capitalized string in
                Title Case.

        ceil    This function is used to round a number to an integer, towards
                positive infinity.

        change_number
                This function is used to determine the change number.  It may
                be set by the --CChhaannggee command line option, or it may default.
                The return value is an integer.

        change_number_set
                This function maybe used to determine if the change number was
                set by the --CChhaannggee command line option.  The return value is a
                boolean.

        columns This function is used to define the report columns.  Each
                argument is a structure containing some or all of the
                following fields:

                      left      the left margin, counting characters
                                from 0 on the left
                      right     the right margin, plus one
                      width     the width in characters, defaults to 7
                                if right not specified
                      padding   white space between columns, defaults to
                                1 if not set
                      title     the title for this column, separate
                                multiple lines with \n
                The columns must be defined before the _p_r_i_n_t function is used.

        count   This function is used to count the number of elements in a
                list or array.

        dirname This function is used to extract all but the last element from
                a file path.

        downcase
                This functions converts its argument to lower case.

        eject   This function is used to start a new page of output.

        floor   This function is used to round a number to an integer, towards
                negative infinity.

        getenv  This function is used to get the value of an environment
                variable.  Will return the empty string if not set.

        gettime This function is used to parse a string to produce a time.  It
                understands a variety of different date formats.

        getuid  This function takes no arguments, and returns the user ID of
                the process which invoked the report generator. The return
                value is an integer.

        keys    This function may be given an array or a list as argument.  It
                returns a list of keys which may be used to index the
                argument.  Most often seen in for loops.

        length  This function is used to find the length of a string.

        mktime  This a synonym for the _g_e_t_t_i_m_e function.

        mtime   This function may be used to obtain the modification time of a
                file.

        need    This function is used to insert a page break into the report
                if the required number of lines is not available before the
                end of page.  If sufficient lines are available, only a single
                blank line will be inserted.  The return value is void.

        now     This function takes no arguments, and returns the current
                time.

        page_length
                This function may be used to determine the length of the
                output page in lines.  The return value is an integer.

        page_width
                This function may be used to determine the width of the output
                page in columns.  The return value is an integer.

        print   This function is used to print into the defined columns.
                Columns will wrap around.

        project_name
                This function is used to determine the project name.  It may
                be set by the --PPrroojjeecctt command line option, or it may default.
                The return value is a string.

        project_name_set
                This function maybe used to determine if the project name was
                set by the --PPrroojjeecctt command line option.  The return value is
                a boolean.

        quote_html
                This function quotes its argument string to insulate HTML
                special characters; these include ``less than'' (<),
                ``ampersand'' (&) and non-printing characters.  This is most
                often used to generate suitable text for web pages.

        quote_tcl
                This function quotes its argument string to insulate TCL
                special characters; these include ``[]'' and non-printing
                characters.  This is most often used to generate suitable text
                for TCL interface scripts.

        quote_url
                This function quotes its argument string to insulate URL
                special characters; these include ``?+#:&='' and non-printing
                characters.  This is most often used to generate suitable text
                for web pages.

        round   This function is used to round a number to an integer, towards
                the closest integer.

        sort    This function must be given a list as argument.  The values
                are sorted into ascending order.  A new list is returned.

        split   This function is used to split a string into a list of
                strings.  The first argument is the string to split, the
                second argument is the character to split around.

        sprintf This function is used to build strings.  It is similar to the
                _s_p_r_i_n_t_f(3) function.

        strftime
                This function is used to format times as strings.  The first
                argument is the format string, the second argument is a time.
                See the _s_t_r_f_t_i_m_e(3) man page for more the format specifiers.

        subst   This function is used to substitute strings by regular
                expression.  The first argument is the pattern to match, the
                second argument is the substitution pattern, the third
                argument is the input string to be substituted.  The option
                fourth argument is the number of substitutions to perform; the
                default is as many as possible.

        substr  This function is used to extract substrings from strings.  The
                first argument is a string, the second argument is the
                starting position, starting from 0, and the third argument is
                the length.

        terse   This function may be used to determine of the --TTEERRssee command
                line option was used.  The return type is a boolean.

        title   This function is used to set the title of the report.  It
                takes at most two arguments, one for each available title
                line.

        trunc   This function is used to round a number to an integer, towards
                zero.

        typeof  This function is used to determine the type of a value.  The
                return type is a string containing the name of the type, as
                described in the

        unquote_url
                This function will remove URL quoting from the argument
                string.  URL quoting takes the form of a percent sign (%)
                followed by two hex digits.  This is replaced by a single
                character with the value represented by the hex digits.

        upcase  This functions converts its argument to upper case.

        working_days
                This function is used to determine the number of working days
                between two times.

        wrap    This function is used to wrap a string into a list of strings.
                The first argument is the wring to wrap, the second argument
                is the maxmium width of the output strings.

        wrap_html
                This function is used to wrap a string into a list of strings.
                The first argument is the wring to wrap, the second argument
                is the maxmium width of the output strings.  This is very
                similar to the _w_r_a_p functions, except thatit inserts HTML
                paragraph breaks <p> or line breaks <br> to reflect the
                newlines within the string (2 or 1, respectively).  _T_Y_P_E_S
                section.

VVAARRIIAABBLLEESS
        There are a number of built-in variables.

        arg     This variable is a list containing the arguments passed on the
                _a_e_r(1) command line.

        change
                There is a special type of variable created by using an
                expression similar to _p_r_o_j_e_c_t_[_p_r_o_j_e_c_t___n_a_m_e_(_)_]_._s_t_a_t_e_._c_h_a_n_g_e_[_n_]
                which contains all of the fields described in aecstate_(_5_)_,
                _p_l_u_s _s_o_m_e _e_x_t_r_a_s_:

                _c_h_a_n_g_e  Branches have a change array, just like _p_r_o_j_e_c_t below.

                change_number
                        The number of the change.

                config  This gives access to all of the fields described in
                        _a_e_p_c_o_n_f_(_5_)_.

                _p_r_o_j_e_c_t___n_a_m_e
                        The name of the project containing the change.

                src     This gives access to the change files, and when
                        indexed by file name, yields a value conataining
                        fields as described in _a_e_f_s_t_a_t_e(5), for the _s_r_c field.

        group   This variable is an array containing all of the entries in the
                _/_e_t_c_/_g_r_o_u_p file.  Each entry is a structure with fields as
                documented in the _g_r_o_u_p(5) manual entry.  The _g_r___m_e_m element
                is a list of strings.  This array may be indexed by either a
                string, treated as a group name, or by an integer, treated as
                a GID.

        passwd  This variable is an array containing all of the entries in the
                _/_e_t_c_/_p_a_s_s_w_d file.  Each entry is a structure with fields as
                documented in the _p_a_s_s_w_d(5) manual entry.  This array may be
                indexed by either a string, treated as a user name, or by an
                integer, treated as a uid.

        project This variable is an array containing one entry for each aegis
                project, indexed by name.  Each array element is a structure,
                containing

                      name        the project name
                      directory   the root of the project directory tree
                      state       the project state
                The project state contains the fields documented in the
                _a_e_p_s_t_a_t_e(5) manual entry.  Except: the _c_h_a_n_g_e field is not a
                list of change numbers, it is an array indexed by change
                number of change states, as documented in the _a_e_c_s_t_a_t_e(5)
                manual entry.  (See _c_h_a_n_g_e, above.)

        user    This variable is an array containing the _._a_e_g_i_s_r_c file of each
                user.  Each entry is a structure with fields as documented in
                the _a_e_u_c_o_n_f(5) manual entry.  This array may be indexed by
                either a string, treated as a user name, or by an integer,
                treated as a uid.  Files which are unreadable or absent will
                generate an error, so you need to wrap accesses in a try/catch
                statement.  (Note: count() and keys() functions think the
                array is empty; if you want a list of users, consult the
                passwd array.)

FFIILLEESS
        The reports are kept in the _/_u_s_r_/_s_h_a_r_e_/_a_e_g_i_s_/_r_e_p_o_r_t directory.  The
        reports are associated with a name by the
        _/_u_s_r_/_s_h_a_r_e_/_a_e_g_i_s_/_r_e_p_o_r_t_._i_n_d_e_x file.  Their names use the command line
        argument abbreviation scheme, so that report names may be abbreviated.

SSEEEE AALLSSOO
        _a_e_r(1)  report generator

        _a_e_c_s_t_a_t_e(5)
                change state description

        _a_e_p_s_t_a_t_e(5)
                project state description

        _a_e_r_p_t_i_d_x(5)
                report index file format

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aerptidx(5)                                                        aerptidx(5)



NNAAMMEE
        aerptidx - report index file format

SSYYNNOOPPSSIISS
        /usr/share/aegis/report.index
        /usr/share/aegis/report.local

DDEESSCCRRIIPPTTIIOONN
        The report index file is used to store pointers to report scripts, and
        descriptions of the reports.

        When searching for a report, the _a_e_r(1) command searches down the
        _A_E_G_I_S___P_A_T_H looking for _r_e_p_o_r_t_._i_n_d_e_x files, and searching them for the
        report named.

CCOONNTTEENNTTSS
        where = [{ ... }];
                This field is a table relating report name to file name.  The
                structure is as follows:

                name = string;
                        The name of a report.  The command line argument
                        naming scheme is used, to provide abbreviatable names.

                description = string;
                        A brief description of the report.  It should not be
                        very long, one or two lines at most.

                filename = string;
                        The name of the file containing the report script.  If
                        a relative path is given, it will be interpreted to be
                        relative to the directory containing the _r_e_p_o_r_t_._i_n_d_e_x
                        file.

SSEEEE AALLSSOO
        _a_e_r(1)  report generator

        _a_e_g_i_s(5)
                aegis file format syntax

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aesub(5)                                                              aesub(5)



NNAAMMEE
        aesub - available command substitutions

DDEESSCCRRIIPPTTIIOONN
        When other programs are invoked by the _a_e_g_i_s program, it is usually
        via a command string in a configuration file.  This section describes
        the format of these command strings.

GGEENNEERRAALL FFOORRMM
        The command strings are very similar to shell variables.  An example
        will illustrate this:
                build_command =
                     "cook project=${project} change=${change}";
        In this command definition, the "${project}" part is a substitution:
        the name of the project will be substituted in the command at this
        point.

        Substitutions may take several forms:

        $name
                This is the same as saying "${name}".  The name must start
                with an alphabetic, and be followed by zero or more
                alphanumerics.

        ${name}
                The name in this form may contain any non-blank characters,
                and it may be subject to substitution.

        ${name _a_r_g...}
                The name and the arguments in this form may contain any non-
                blank characters, and it may be subject to further
                substitution.  Within the braces ({{ and }}) pairs of single
                quote characters (''_b_l_a_h _b_l_a_h'') may be used to insulate spaces
                and other special characters, or you may use the back quote
                (\\) to escape a single character.

        $$
                This is replaced by a single $ character.  It avoid RCS
                expansions, you can also use ${$}.

        %%
                This is replaced by a single % character.  Percent (%%)
                followed by anything else is illegal.

        $#...\n This is a comment, usually found in template files read in
                using the ${read_file} substitution.  It consumes all
                characters up to and including the next newline.  (See also
                ${comment}, below.)

        As another example, the _d_i_r_n_a_m_e substitution is replaced by the
        directory name of the argument, rather like the _d_i_r_n_a_m_e(1) command.
        In the command
                history_query_command =
                     "get -t -g ${Dirname $History}/s.${Basename $History}";
        the _D_i_r_n_a_m_e and _B_a_s_e_n_a_m_e substitutions are used to construct a
        suitable path to the SCCS file in the history directory.

AABBBBRREEVVIIAATTIIOONNSS
        The names of the various substitutions may be abbreviated.  In the
        above examples, and in the lists which follow, the minimum
        abbreviation is the uppercase letters.  All substitution name are case
        insensitive.

        The above example could be abbreviated to
                history_query_command =
                     "get -t -g ${d $h}/s.${b $h}";

        Ambiguous abbreviations will result in a fatal error message.

SSUUBBSSTTIITTUUTTIIOONNSS
        There are many substitutions which are always understood, and some
        which are specific to the command being substituted.  Specific entries
        will be defined in the relevant manual section.

        The following lists contains those substitutions which are always
        understood:

        Add_Path_Suffix
                This substitution may be used to add a suffix to each element
                of a colon-separated path list.  The first argument is the
                suffix to use, the second and subsequent arguments are the
                colon-separated paths to work on.  The result is a single
                colon separated path.  Often used in combination with the
                ${search_path} substitution, below.

        Administrator_List
                Space separated list of the project's administrators.  Takes
                an optional argument in the same form as the _u_s_e_r
                substitution.

        ARCHitecture
                This substitution is replaced by the architecture name
                appropriate for the current execution environment.  Requires
                no arguments.  See the _a_r_c_h_i_t_e_c_t_u_r_e field of _a_e_p_c_o_n_f(5) for
                more information.  When used in commands, you may need to
                surround this substitution with the _q_u_o_t_e substitution (see
                below), if any of your architecture names contain shell
                special characters.

        BaseLine
                Absolute path of the the project's baseline.

        Basename
                This substitution takes one argument, a pathname.  The value
                of the substitution will be the last element of the pathname.
                This is similar to the _b_a_s_e_n_a_m_e(1) command.

        BAse_RElative
                This substitution takes at least one pathname.  The value of
                the substitution is the base-relative filenames, with any
                change-specific or project baseline specific leading path
                removed.  The file does not have to be a project source file.
                (This is almost the inverse of the $source substitution,
                below.)

        BINary_DIRectory
                The absolute path of Aegis' architecture-specific binary
                (executables) directory.  This corresponds to the
                ``_._/_c_o_n_f_i_g_u_r_e _-_b_i_n_d_i_r'' option when Aegis was built.  This is
                where most of the Aegis executable programs are installed.

        CAPitalize
                This substitution takes at least one argument.  The value of
                the substitution will be the arguments with the first letter
                of each word forced to upper case and the rest forced to lower
                case.

        Change
                This substitution provides various information about the
                change, based on the argument it is given.

                attribute
                        This substitution takes an additional argument, the
                        name of a change attribute (see _a_e_c_a(1) and _a_e_c_a_t_t_r(5)
                        for more information).  This returns the value listed
                        in the change attributes, or the empty string if the
                        change does not have the named attribute.

                cause   This returns the cause of the change.

                date _f_o_r_m_a_t
                        This returns the completion date of the change.  See
                        _D_A_T_E section for additional arguments.

                delta   This returns the delta number of the change.  Only
                        valid for completed changes.

                delta_uuid
                        This returns the delta UUID of the change, assigned on
                        integrate pass, a globally unique identifier for the
                        state of the project when this change was integrated
                        (different for all repositories).  Only valid for
                        _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d and _c_o_m_p_l_e_t_e_d _c_h_a_n_g_e_s_.

                _d_e_s_c_r_i_p_t_i_o_n
                        This returns the brief description of the change.

                developer
                        This returns the name of the developer of the change.

                development_directory
                        This returns the development directory of the change.

                integrator
                        This returns the name of the integrator of the change.

                integration_directory
                        This returns the integration directory of the change.

                number  This returns the number of the change.  (This is the
                        default if no argument is given.)

                reviewer
                        This returns the name of the reviewer of the change.

                state   This returns the state of the change.

                uuid    This returns the UUID of the change.

                version This returns the version of the change.

        Change_Attribute
                This substitution takes exactly one argument.  This argument
                is a name of a change attribute (see _a_e_c_a(1) and _a_e_c_a_t_t_r(5)
                for more information).  This returns the value listed in the
                change attributes, or the empty string if the change does not
                have the named attribute.

        Change_Files
                This is replaced by a space separated list of change file
                names.  There are several qualifying arguments you can give to
                this substitution:

                _a_c_t_i_o_n  You may give one or more file actions (e.g. _m_o_d_i_f_y).
                        Only files with one of the actions will be returned.
                        By default, all file actions are returned.

                _t_y_p_e    You may give one or more file types (e.g. _s_o_u_r_c_e).
                        Only files with one of the types will be returned.  By
                        default, all file types are returned.

                not     Inverts the sense of operations.  For example
                        _$_{_c_h_a_n_g_e___f_i_l_e_s _n_o_t _r_e_m_o_v_e_} will return the names of
                        all change files not being removed.

                quote   This does not affect which file are selected, but it
                        causes the file names to be quoted if they contain
                        shell meta-characters.

                If you specify both actions and types, only files both
                qualifiers will be returned.  For example _$_{_c_h_a_n_g_e___f_i_l_e_s
                _m_o_d_i_f_y _t_e_s_t_} will return only the names of automatic test
                files which are being modified.

        Change_Developer_List
                Space separated list of all the change's developers.  Note
                that this is different than the Developer_List substitution.

        Change_Reviewer_List
                Space separated list of the change's reviewers since the last
                _d_e_v_e_l_o_p _e_n_d.  Note that this is different than the Reviewer_-
                List substitution.  Bt using the _r_e_v_i_e_w___p_o_l_i_c_y___c_o_m_m_a_n_d field
                of the project configuration file this value can have more
                than one reviewer, because this allows a project to require a
                change to need to be reviewed more than once before it can be
                integrated.

        COMment
                Inserts exactly nothing; any and all arguments are ignored.
                Another form of comment is ``$#'' which extends to the end of
                the current line.

        Copyright_Years
                Inserts a comma separated list of copyright years from the
                project attributes.  This list of years is maintained by _a_e_g_i_s
                at integrate begin, and so is only guaranteed to be up-to-date
                in the'_b_e_i_n_g _i_n_t_e_g_r_a_t_e_d' state.  Do not use this substitution
                in new file templates, it is not guaranteed to be up-to-date
                in the '_b_e_i_n_g _d_e_v_e_l_o_p_e_d' state; use the ${date %Y}
                substitution in new file templates.

                This list contains spaces, so if you use it to build commands,
                you will probably need to quote, it as well.

        DATa_DIRectory
                The absolute path of Aegis' architecture-neutral library
                directory.  This corresponds to the ``_._/_c_o_n_f_i_g_u_r_e _-_d_a_t_a_d_i_r''
                option when Aegis was built.  This is where most of the
                scripts included with Aegis are installed.

        DAte
                With no arguments, the output is the current date.  If there
                are arguments, they form a format string.  This is similar to
                the _d_a_t_e(1) command on many UNIX systems.  For a description
                of the date formats, see the _D_A_T_E section, below.

        DELta
                The delta number of the change.  This is only available when
                the change is in the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state or the _c_o_m_p_l_e_t_e_d
                state.

        DEVeloper
                The name of the developer.  Takes an optional argument in the
                same form as the _u_s_e_r substitution.

        DEVeloper_List
                Space separated list of the project's developers.  Takes an
                optional argument in the same form as the _u_s_e_r substitution.
                Note that this is different than the Change_DeveloperList
                substitution.

        Development_Directory
                The absolute path of the change's development directory.  Only
                available when the change is between the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state
                and the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state.

        DIFF
                The absolute path of the diff command, as discovered when
                Aegis was built.  It tries to locate GNU Diff at build time to
                provide maximum functionality.

        Dirname
                This substitution takes at least one argument, a pathname.
                The value of the substitution will be everything but the last
                element of the pathname.  This is similar to the _d_i_r_n_a_m_e(1)
                command.

        Dirname_RELative
                This substitution takes at least one argument, a pathname.
                The value of the substitution will be everything but the last
                element of the pathname.  This is similar to the _d_i_r_n_a_m_e
                substitution, except that if there are no directory
                components, it returns dot (``.'').

        DownCase
                This substitution takes at least one argument.  The value of
                the substitution will be the argument with any upper case
                letters mapped to lower case.

        EMail_Address
                This substitution takes one or more user names as arguments.
                It replaces them with email addresses.  (It is an error if any
                user name is unknown.)

                This substitution takes options.  You may specify one or more
                of them immediately after the substitution name.

                --CCoommmmaa  This option may be used to specify that the email
                        addresses are to be separated by commas.

                --QQuuoottee  This option may be used to specify that the email
                        addresses are to be quoted to insulate shell special
                        characters.

        ENVironment
                This substitution takes at least one argument.  The value of
                the substitution is the value of the corresponding environment
                variable, or empty of undefined.

        ERrno
                This substitution takes no arguments.  The value of the
                substitution will be the value if the _e_r_r_n_o variable provided
                by the system, as mapped through the _s_t_r_e_r_r_o_r function.  Thus
                you may give the users informative system error messages.

        EXpression
                This substitution evaluates simple arithmetic expressions.
                Addition, subtraction, division, multiplication, modulo and
                negation are understood.  The 6 basic comparison operators are
                available.  The usual C syntax and precedence are used.  The
                arguments must constitute a valid expression, white space and
                word boundaries are ignored.

        History_Directory
                This substitution takes zero arguments.  It is replaced by the
                absolute path of the history directory of the project.

        IDentifier
                This substitution takes at least one argument.  The value of
                the substitution will be the argument with all characters but
                alpha numerics mapped into an underscore (_), so as to form a
                legal C identifier.

        INTegration_Directory
                The absolute path of the change's integration directory.  Only
                available when the change is in the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state.

        INTegrator
                The name of the change's integrator.  Only available when the
                change is in the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state or the _c_o_m_p_l_e_t_e_d
                state.  Takes an optional argument in the same form as the
                _u_s_e_r substitution.

        INTegrator_List
                Space separated list of the project's integrators.  Takes an
                optional argument in the same form as the _u_s_e_r substitution.

        LEFt    This substitution extracts the left hand side of strings.  It
                takes two arguments: the first is the string, the second is
                the number of characters.

        LENgth  This substitution determines the length of strings, the result
                is a number.  It takes one argument: the string to be
                measured.

        LIBrary
                The absolute path of Aegis' library directory.  This
                corresponds to the ``_._/_c_o_n_f_i_g_u_r_e _-_d_a_t_a_d_i_r'' option when Aegis
                was built.  This substitution is deprecated - please use
                ${datadir} instead.

        LIBrary_DIRectory
                The absolute path of Aegis' architecture-specific library
                directory.  This corresponds to the ``_._/_c_o_n_f_i_g_u_r_e _-_l_i_b_d_i_r''
                option when Aegis was built.

        Name_Maximum
                This substitution is used to get the maximum file name length
                within a file system.  It takes at least one argument: the
                name of a directory within the file system.  Frequently used
                with ${left} to crop filenames to the file system maximum.

        PERL    This function requires zero arguments.  It is replaced by the
                absolute path of a Perl interpreter.

        PLural
                This function requires 2 or 3 arguments.  The first argument
                is evaluated as a number, if it is plural (not equal to 1) the
                second argument is the result, otherwise the third argument is
                the result (or empty if not given).  This is mostly used to
                pluralize sentences in Germainic error messages.

        PLural_Forms
                The _p_l_u_r_a_l___f_o_r_m_s substitution is similar to the _$_{_p_l_u_r_a_l_}
                substitution, except that it reads and understands the Plural-
                Forms: header in the message catalogue.  This means that it
                understands a greater range of pluralization mechanisms than
                the simple _$_{_p_l_u_r_a_l_} substitution.  (For a description of the
                Plural-Forms: header, see the GNU Gettext manual.)

                The first argument is the number.  Second is the singular form
                (corresponding to the Plural-Forms: expression evaluating to
                zero), the third and subsequent arguments are the various
                plural forms (corresponding to the Plural-Forms: expression
                evaluating to 1, 2, 3, _e_t_c.

                The Plural-Forms: expression is required evaluate to less than
                nplurals.  If it does not, the second arguement (the singular
                form) is used.  If there are too few arguments to this
                substitution, the second argument (the singular form) is again
                used.

                Note that in the default case (used for English and other
                Germanic languages), the arguments are the _r_e_v_e_r_s_e of those
                expected by the _$_{_p_l_u_r_a_l_} substitution.

        Project
                This substitution provides various information about the
                project, based on the argument it is given.

                name    This returns the name of the project.  (This is the
                        default if no argument is given.)

                description
                        This returns the description of the project (the one
                        which appears in the project listing).

                trunk_name
                        This returns the name of the trunk of the project
                        (i.e. no branch numbers included).

                trunk_description
                        This returns the description of the trunk of the
                        project.

        Project_Specific
                This substitution takes exactly one argument.  This argument
                is a name to be found in the project configuration file's
                _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field (see _a_e_p_c_o_n_f(5) for more information).
                This returns the value listed in the project configuration
                file.

        QUote
                This substitution may be used to quote shell special
                characters.  If no quoting is required, not quotes will be
                inserted.  This is used to insulate shell special characters
                in filenames when forming commands.

        Read_File
                Read a file and substitute the contents of the file.  Requires
                exactly one argument, the pathname of the file to be read.  If
                the pathname is a project source file, you will need to use
                the _s_o_u_r_c_e substitution to resolve the path.  It is a fatal
                error if the file does not exist, or is not readable.  It is a
                fatal error if the pathname is not absolute (because the
                current directory is undefined).

        Read_File_Simple
                Read a file and without substituting the contents of the file.
                Requires exactly one argument, the pathname of the file to be
                read.  If the pathname is a project source file, you will need
                to use the _s_o_u_r_c_e substitution to resolve the path.  It is a
                fatal error if the file does not exist, or is not readable.
                It is a fatal error if the pathname is not absolute (because
                the current directory is undefined).

        Reviewer
                The name of the change's reviewer.  Only available when the
                change is between the _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n state and the
                _c_o_m_p_l_e_t_e_d state.  Takes an optional argument in the same form
                as the _u_s_e_r substitution.

        Reviewer_List
                Space separated list of the project's reviewers.  Takes an
                optional argument in the same form as the _u_s_e_r substitution.
                Note that this is different than the Change_Reviewer_List
                substitution.

        RIght   This substitution extracts the right hand side of strings.  It
                takes two arguments: the first is the string, the second is
                the number of characters.

        Search_Path
                The Search_Path substitution is replaced by a colon separated
                list of absolute paths to search when building a change, it
                will point from a change to its branch and so on up to the
                project trunk.

        Search_Path_Executable
                The Search_Path_Executable substitution is usually the same as
                the Search_Path substitution.  However, during an ``aegis
                -Test -BaseLine'' command, it contains the baseline as the
                first element, rather then the development directory or the
                integration directory.  This is of most use when looking for
                executables and executable support files while running tests.

        SHell
                The absolute path of a Bourne shell which understands
                functions.  Requires exactly zero arguments.

        Source
                Resolve the argument filename into a pathname.  It is an error
                if the file is not a source file.  An optional second argument
                may be "Absolute" or "Relative", and may be abbreviated.
                Relative will attempt to provide a development-directory-
                relative pathname whenever possible, absolute will always
                result in an absolute path.  The default is "Relative".  (For
                the inverse mapping, see _$_{_B_A_s_e___R_E_l_a_t_i_v_e_}, above.)

        SPLit   This substitution may be used to split strings are specified
                separators.  The first argument is the separator character to
                be used, subsequent arguments are strings to be split.  The
                result is the collection is split strings of the second a
                follwoing arguments, separated by spaces.

        STate
                The state the current change is in.  It is an error if the
                substitution does not refer to a change.

        SUBSTitute
                Regular expression substitution.  The first argument is the
                pattern to match, the second argument is the replacement
                string.  The third and subsequent arguments are modified as
                specified by the first two arguments.  The search is not
                anchored, and the replacement will happen as many times as
                possible.  Use ``^'' to match the beginning, and ``$'' to
                match the end.

        SUBSTRing
                This substitution extracts a substring from the middle of
                strings.  It takes three arguments: the first is the string,
                the second is the star character (counting from zero), the
                third is the number of characters.

        SWitch
                Select amongst a set of values.  The first argument is
                expected to be a number.  If the number is zero, the second
                argument is used; if the number is one, the third argument is
                used; etc.  If the number is negative, or exceeds the
                available arguments, the last argument is used.

        Trim_DIRectory
                This substitution takes one or two arguments.  If given one
                argument, one directory component (if present) is removed from
                the argument, which is assumed to be a file name.  If two
                arguments are present, the first is a directory count; at most
                this many directory components (if present) will be removed.
                The base file name is always left.

        Trim_EXTension
                This substitution takes one argument.  Any file name extension
                (a dot characters and the characters following) will be
                removed from the final filename section of the argument.

        UNSplit This substitution may be used to reverse the effects of the
                _s_p_l_i_t substitution.  The first arguments is a seaparator
                character, the second and following arguments are strings to
                be joined together using the separator character.  The result
                is a single string.

        UpCase
                This substitution takes at least one argument.  The value of
                the substitution will be the argument with any lower case
                letters mapped to upper case.

        USer
                This substitution provides various information about the user
                who executed the command, based on the argument it is given.

                login   The login name of the user.  (This is the default if
                        no argument is given.)

                name    The full name of the user.

                email   The email address of the user.

                quoted_email
                        The email address of the user, quoted to avoid shell
                        special characters.

                home    The home directory of the user.

        Version
                The version of the change.  If the change is in the _b_e_i_n_g
                _i_n_t_e_g_r_a_t_e_d state or the _c_o_m_p_l_e_t_e_d state, the version will be
                of the form "_a.._b..DD_d_d_d", where "a" is the project's major
                version number, "b" is the project's minor version number, and
                "ddd" is the change's delta number.  If the change is in any
                other state, the version will be of the form "_a.._b..CC_c_c_c", where
                "ccc" is the change number.

                delta_uuid
                        This variant gives the change's delta-UUID assigned at
                        integrate pass.  Only valid for _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d and
                        _c_o_m_p_l_e_t_e_d changes.

        Zero_Pad
                This substitution is used to zero pad a string on the left.
                It takes two arguments: the first is the string to be padded,
                the second is the minimum string width.

DDAATTEE
        This section describes the format specifiers accepted by the date
        substitution.  These are the same specifiers as defined by the ANSI C
        standard for the strftime function.

        %%      The percent character (%)

        %a      the abbreviated weekday name

        %A      the full weekday name

        %b      the abbreviated month name

        %B      the full month name

        %c      the date and time

        %d      the day of the month, zero padded

        %H      the hour of the 24-hour day

        %I      the hour of the 12-hour day

        %j      the day number of year, zero padded, one based

        %m      the month of the year, zero padded, one based

        %M      the minute of the hour, zero padded

        %p      meridian indicator, AM or PM as appropriate

        %S      the second of the minute

        %U      the Sunday week of the year

        %w      the day of the week, Sunday is 0

        %W      the Monday week of the year

        %x      the date, as _m_m_m _d_d _y_y_y_y

        %X      the time, as _h_h_:_m_m_:_s_s

        %y      the year of the century

        %Y      the year including the century

        %Z      time zone abbreviation

        Using an undefined format specifier will produce random results,
        depending on the version of UNIX you are on.

SSEEEE AALLSSOO
        aaeessuubb(1)
                Substitute and print strings.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aetest(5)                                                            aetest(5)



NNAAMMEE
        aetest - test results file format

DDEESSCCRRIIPPTTIIOONN
        The default configuration of the _t_e_s_t___c_o_m_m_a_n_d and _d_e_v_e_l_o_p_m_e_n_t___t_e_s_t___-
        _c_o_m_m_a_n_d commands of the project _c_o_n_f_i_g file (see _a_e_p_c_o_n_f(5) for more
        information) is for the test commands to test a single test file and a
        single architecture at a time.  On some systems, this is not
        efficient.

        When configured to run multiple simultaneous tests, or multiple
        simultaneous architectures, a file of the format described here is
        used to communicate the test results back to Aegis.

CCOONNTTEENNTTSS
        Use a separate row for each unique filename and architecture
        combination.

        test_result = [ { ... } ];
                All the fields are mandatory.

                file_name = string;
                        This is the name of the file being tested.  Use the
                        same filename as was given to the test command.

                exit_status = integer;
                        This is the exit status returned by the test.

                architecture = string;
                        This is the architecture which the test was run on.
                        Defaults to the architecture of the current system if
                        not set.  (Try to avoid setting this field unless you
                        have a very clever multi-architecture test system.)

SSEEEE AALLSSOO
        _a_e_t(1)  run tests

        _a_e_g_i_s(5)
                aegis file format syntax

        _a_e_p_c_o_n_f(5)
                Project configuration file format.

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aeuconf(5)                                                          aeuconf(5)



NNAAMMEE
        aeuconf - user configuration file

SSYYNNOOPPSSIISS
        _$_A_E_G_I_S___F_L_A_G_S
        _$_H_O_M_E/.aegisrc
        _/_u_s_r_/_s_h_a_r_e_/_a_e_g_i_s_/_a_e_g_i_s_r_c
        _/_u_s_r_/_l_i_b_/_a_e_g_i_s_/_a_e_g_i_s_r_c

DDEESSCCRRIIPPTTIIOONN
        A user configuration file is used to hold user defaults.  This file is
        created and edited by the user.  This file is only ever read by aegis,
        it is never written.

        The sources of user preferences are scanned in the order given above.
        Earlier sources have higher priority.

   AAEEGGIISS__FFLLAAGGSS
        This environment variable has the same format.  It is read first, and
        over-rides the _._a_e_g_i_s_r_c file contents.  This is intended to be used
        within the tests distributed with aegis, but can also be of use within
        some shell scripts.  It contains session specific preferences.

   _$_H_O_M_E/.aegisrc
        This file contains user specific preferences.

   _/_u_s_r_/_s_h_a_r_e_/_a_e_g_i_s_/_a_e_g_i_s_r_c
        This file contains architecture-neutral preferences.

   _/_u_s_r_/_l_i_b_/_a_e_g_i_s_/_a_e_g_i_s_r_c
        This file contains architecture-specific preferences.

CCOONNTTEENNTTSS
        The file contains the following fields:

        default_development_directory = string;
                The pathname of where to place new development directories.
                The pathname may be relative, in which case it is relative to
                _$_H_O_M_E.  The default is the field of the same name in the
                project attributes, or _$_H_O_M_E neither is set.

        default_project_directory = string;
                The pathname of where to place new project directories.  The
                pathname may be relative.  If this path is relative, it is
                relative to _$_H_O_M_E.  The default is _$_H_O_M_E.

        delete_file_preference = (no_keep, interactive, keep);
                All of the commands which delete files will consult this field
                to determine if the file should be deleted.  Defaults to
                _n_o___k_e_e_p if not set.

        default_project_name = string;
                The name of a project.

        default_change_number = integer;
                The number of a change.

        Please note that the _d_e_f_a_u_l_t___p_r_o_j_e_c_t___n_a_m_e field and the
        _d_e_f_a_u_l_t___c_h_a_n_g_e___n_u_m_b_e_r field are unrelated.  Specifying both does not
        mean that single change within that single project, they have nothing
        to do with each other.

        diff_preference = (automatic_merge, no_merge, only_merge);
                The _a_e_d_(_1_) command will consult this field to determine what
                to do:

                nnoo__mmeerrggee
                        means only diff the files, even if some have out of
                        date versions.

                oonnllyy__mmeerrggee
                        means merge those files with out of date versions, and
                        do not do anything else, even if they need to be
                        diffed.

                aauuttoommaattiicc__mmeerrggee
                        means to do _o_n_l_y___m_e_r_g_e if any source files require
                        merging, otherwise do _n_o___m_e_r_g_e.  It never combines
                        merges and differences in the same pass.

                The corresponding command line options to the _a_e_d(1) command
                take precedence, this field is only consulted if you do not
                give a corresponding command line argument.  Defaults to
                _a_u_t_o_m_a_t_i_c___m_e_r_g_e if not set.

        pager_preference = (foreground, never);
                This field is consulted for listings and help.  The standard
                output is only piped to a pager if the command is run in the
                foreground and the standard output is directed at a terminal.

                foreground
                        The standard output will be piped through the command
                        given in the PAGER environment variable (or _m_o_r_e if
                        not set).

                never   The standard output will not be redirected.

                This field defaults to _f_o_r_e_g_r_o_u_n_d if not set.

        persevere_preference = (all, stop);
                This field is consulted by the _a_e_t(1) command, to determine if
                it should run all tests, or stop after the first failure.
                This field defaults to _a_l_l if not set.

        log_file_preference = (snuggle, append, replace, never);
                This field controls the behavior of the log file.  It usually
                defaults to _s_n_u_g_g_l_e if not set, although some commands may
                default it to _a_p_p_e_n_d.  When the log file is in use, the output
                continues to be sent to the screen if the process is in the
                foreground and the standard output is a terminal.

                never   Do not redirect the output to a log file.

                replace Replace any log file that is present, create a new one
                        if none already exists.

                append  Append the log to the end of any existing log file,
                        create a new one if none already exists.

                snuggle Append the log to the end of any existing log file if
                        that log file was last modified less than 30 seconds
                        ago, otherwise replace any existing log file; create a
                        new one if none already exists.  This option allows
                        runs of aegis commands to produce a meaningful log
                        file.

        lock_wait_preference = (always, background, never);
                This field is consulted by all commands which wait for locks.

                always  The "always" setting says that all commands should
                        always wait for locks.  This is the default.

                background
                        The "background" setting says that background commands
                        should always wait for locks, and foreground commands
                        will not.

                never   The "never" setting says that no command should ever
                        wait for locks.  If the command would wait, it will
                        exit with status 1.

                This user preference can be over-ridden by the --wwaaiitt and
                --nnoowwaaiitt command line options.

        symbolic_link_preference = (verify, assume);
                This field is consulted by _a_e_b(1) when the project
                configuration file specifies
                _c_r_e_a_t_e___s_y_m_b_o_l_i_c___l_i_n_k_s___b_e_f_o_r_e___b_u_i_l_d as true.  The verification
                of the links can be quite time consuming; if you are confident
                that they are already correct (say, from a recent build run)
                you may wish to assume they are correct and not verify them
                repeatedly.

                verify  This setting says to always verify the symbolic links
                        to the baseline.  This is the default.

                assume  This setting says to always assume the links are
                        correct, unless there has been a recent integration.

                This user preference can be over-ridden by the
                --VVeerriiffyy__SSyymmbboolliicc__LLiinnkkss and --AAssssuummee__SSyymmbboolliicc__LLiinnkkss command line
                options.

        relative_filename_preference = (current, base);
                This field is consulted by most commands which accept
                filenames on the command line.  It controls whether relative
                filenames are relative to the current directory (this is the
                default), or relative to the base of the project source tree.

                current This setting says to interpret relative filenames
                        against the current directory.

                base    This setting says to interpret relative filenames
                        against the base of the source tree.

                This user preference can be over-ridden by the --BBAAssee__RREEllaattiivvee
                and --CCUUrrrreenntt__RREEllaattiivvee command line options.

        email_address = string;
                This field may be used to set the preferred email address.  If
                not set, defaults to `whoami`@`cat /etc/mailname` if not set,
                and if _/_e_t_c_/_m_a_i_l_n_a_m_e exists.  Otherwise, defaults to
                `whoami`@`hostname` if not set, which is usually not what is
                required, particularly if you are behind a firewall.

        whiteout_preference = (always, never);
                All of the commands which cause a change to remove files will
                consult this field to determine if the file should be have a
                dummy "whiteout" file put in the development directory.
                Defaults to ``always'' if not set.

        editor_command = string;
                This command is used to edit a file, if the editing is being
                done in the background.  Defaults to the EDITOR environment
                variable if not set, or "ed" if not set.

        visual_command = string;
                This command is used to edit a file, if the editing is being
                done in the foreground.  Defaults to the VISUAL environment
                variable if not set, or to the EDITOR environment variable if
                not set, or "vi" if not set.

        pager_command = string;
                This is the command used to paginate report and listing
                output.  Defaults to the PAGER environment variable if not
                set, or to "more" if not set.

SSEEEE AALLSSOO
        _a_e_g_i_s(5)
                aegis file format syntax

        _a_e_d(1)  difference and merge files

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



aeustate(5)                                                        aeustate(5)



NNAAMMEE
        aeustate - user state file

SSYYNNOOPPSSIISS
        /var/lib/aegis/user/_u_s_e_r_-_n_a_m_e

DDEESSCCRRIIPPTTIIOONN
        A user state file is used to store information about a user.  These
        file are created and maintained by aegis.  These file should not be
        edited by humans.

CCOONNTTEENNTTSS
        own = [{ ... }];
                This field is a list of change the user is currently working
                on, within project.  The changes are in either the
                _b_e_i_n_g___d_e_v_e_l_o_p_e_d or _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d state.  The structure of
                this field is as follows:

                project = string;
                        The name of a project.

                change = [integer];
                        The changes this user is working on in the project.

SSEEEE AALLSSOO
        _a_e_g_i_s(5)
                aegis file format syntax

CCOOPPYYRRIIGGHHTT
        aegis version 4.20
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005 Peter Miller; All rights reserved.

        The aegis program comes with ABSOLUTELY NO WARRANTY; for details use
        the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.  This is free software and you
        are welcome to redistribute it under certain conditions; for details
        use the '_a_e_g_i_s _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command.

AAUUTTHHOORR
        Peter Miller   E-Mail:   millerp@canb.auug.org.au
        /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/



Table of Contents(Aegis)                              Table of Contents(Aegis)



          The README File  . . . . . . . . . . . . . . . . . . . . . . . .   0
              Windows NT . . . . . . . . . . . . . . . . . . . . . . . . .   3
          Release Notes  . . . . . . . . . . . . . . . . . . . . . . . . .   5
          How to Build the Sources . . . . . . . . . . . . . . . . . . . .  41
              Windows NT . . . . . . . . . . . . . . . . . . . . . . . . .  48
aegis(1)  project change supervisor  . . . . . . . . . . . . . . . . . . .  51
ae-cvs-ci(1)                                                               checkin a change set to CVS 61
ae-sccs-put(1)                                                             put file version into SCCS 61
ae_c(1)   set change number  . . . . . . . . . . . . . . . . . . . . . . .  62
ae_p(1)   set project name . . . . . . . . . . . . . . . . . . . . . . . .  63
aeannotate(1)                                                              annotated source file listing 64
aeb(1)    build a change . . . . . . . . . . . . . . . . . . . . . . . . .  66
aebuffy(1)                                                                 watch for changes 70
aeca(1)   modify the attributes of a change  . . . . . . . . . . . . . . .  71
aecd(1)   change directory . . . . . . . . . . . . . . . . . . . . . . . .  74
aechown(1)                                                                 set change owner 76
aeclean(1)                                                                 clean files from development directory 78
aeclone(1)                                                                 make an exact copy of a change 80
aecomp(1) compare two changes  . . . . . . . . . . . . . . . . . . . . . .  83
aecomplete(1)                                                              command completion 83
aecp(1)   copy a file into a change  . . . . . . . . . . . . . . . . . . .  84
aecpu(1)  reverse action of aecp . . . . . . . . . . . . . . . . . . . . .  88
aecvsserver(1)                                                             serve  CVS  client  protocol  against Aegis
projects .                                                                 90
aed(1)    difference a change  . . . . . . . . . . . . . . . . . . . . . .  90
aedb(1)   begin development of a change  . . . . . . . . . . . . . . . . .  93
aedbu(1)  undo the effects of aedb . . . . . . . . . . . . . . . . . . . .  96
aede(1)   complete development of a change . . . . . . . . . . . . . . . .  97
aedeu(1)  recall a change for further development  . . . . . . . . . . . .  98
aediff(1) file differences between deltas  . . . . . . . . . . . . . . . . 100
aedist(1) remotely distribute a change . . . . . . . . . . . . . . . . . . 101
aedn(1)   assign a symbolic name to a project delta  . . . . . . . . . . . 105
aeedit(1) edit a change's files  . . . . . . . . . . . . . . . . . . . . . 105
aefa(1)   modify the attributes of a file  . . . . . . . . . . . . . . . . 106
aefind    search for files in directory hierarchy  . . . . . . . . . . . . 107
aefp(1)   calculate file fingerprint . . . . . . . . . . . . . . . . . . . 110
aeget(1)  Aegis CGI file access  . . . . . . . . . . . . . . . . . . . . . 111
aegis.cgi(1)                                                               Aegis web interface script 111
aeib(1)   begin integrating a change . . . . . . . . . . . . . . . . . . . 112
aeibu(1)  reverse the aeib command . . . . . . . . . . . . . . . . . . . . 114
aeifail(1)                                                                 fail a change integration 115
aeimport(1)                                                                import foreign repository into Aegis 116
aeintegratq(1)                                                             integrate changes into projects 118
aeipass(1)                                                                 pass a change integration 120
ael(1)    list interesting things  . . . . . . . . . . . . . . . . . . . . 123
aelic(1)  GNU General Public License . . . . . . . . . . . . . . . . . . . 125
aels(1)   annotated directory listing  . . . . . . . . . . . . . . . . . . 129
aemeasure(1)                                                               simple file metrics 131
aemt(1)   make branch file transparent . . . . . . . . . . . . . . . . . . 133
aemtu(1)  no longer make branch file transparent . . . . . . . . . . . . . 135
aemv(1)   rename one or more files as part of a change . . . . . . . . . . 138
aemvu(1)  undo the rename a file as part of a change . . . . . . . . . . . 142
aena(1)   add a new administrator to a project . . . . . . . . . . . . . . 146
aenbr(1)  create a new branch  . . . . . . . . . . . . . . . . . . . . . . 148
aenbru(1) remove a branch  . . . . . . . . . . . . . . . . . . . . . . . . 149
aenc(1)   add a new change to a project  . . . . . . . . . . . . . . . . . 150
aencu(1)  remove a change  . . . . . . . . . . . . . . . . . . . . . . . . 152
aend(1)   add new developers to a project  . . . . . . . . . . . . . . . . 154
aenf(1)   add new files to be created by a change  . . . . . . . . . . . . 155
aenfu(1)  remove new files from a change . . . . . . . . . . . . . . . . . 158
aeni(1)   add new integrators to a project . . . . . . . . . . . . . . . . 160
aenpa(1)  create a new project alias . . . . . . . . . . . . . . . . . . . 160
aenpr(1)  create a new project . . . . . . . . . . . . . . . . . . . . . . 161
aenrls(1) create a new project from an  old-style  project
. . . . .                                                                  163
aenrv(1)  add new reviewers to a project . . . . . . . . . . . . . . . . . 165
aent(1)   add a new test to a change . . . . . . . . . . . . . . . . . . . 166
aentu(1)  remove new tests from a change . . . . . . . . . . . . . . . . . 169
aepa(1)   modify the attributes of a project . . . . . . . . . . . . . . . 171
aepatch(1)                                                                 send and receive changes as patches 172
aepromptcmd(1)                                                             change prompt color by change state 174
aer(1)    report generator . . . . . . . . . . . . . . . . . . . . . . . . 174
aera(1)   remove administrators from a project . . . . . . . . . . . . . . 175
aerb(1)   begin a change review  . . . . . . . . . . . . . . . . . . . . . 176
aerbu(1)  stop reviewing a change  . . . . . . . . . . . . . . . . . . . . 177
aerd(1)   remove developers from a project . . . . . . . . . . . . . . . . 178
aerect    draw a rectangle . . . . . . . . . . . . . . . . . . . . . . . . 179
aerfail(1)                                                                 fail a change review 179
aeri(1)   remove integrators from a project  . . . . . . . . . . . . . . . 180
aerm(1)   add files to be deleted to a change  . . . . . . . . . . . . . . 181
aermpr(1) remove project . . . . . . . . . . . . . . . . . . . . . . . . . 183
aermu(1)  remove files to be deleted from a change . . . . . . . . . . . . 184
aerpa(1)  remove a project alias . . . . . . . . . . . . . . . . . . . . . 185
aerpass(1)                                                                 pass a change review 186
aerpu(1)  rescind a change review pass . . . . . . . . . . . . . . . . . . 187
aerrv(1)  remove reviewers from a project  . . . . . . . . . . . . . . . . 188
aesub(1)  substitute and echo strings  . . . . . . . . . . . . . . . . . . 189
aet(1)    run tests  . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
aetar(1)  remotely distribute a change via tar . . . . . . . . . . . . . . 192
aev(1)    version information  . . . . . . . . . . . . . . . . . . . . . . 194
aexml(1)  Aegis database to XML  . . . . . . . . . . . . . . . . . . . . . 194
tkaeca(1) GUI interface for aeca, using TCL/TK . . . . . . . . . . . . . . 195
tkaegis(1)                                                                 GUI interface for Aegis, using TCL/TK 195
tkaenc(1) GUI interface for aenc, using TCL/TK . . . . . . . . . . . . . . 196
tkaeca(1) GUI interface for aeca, using TCL/TK . . . . . . . . . . . . . . 197
tkaer(1)  GUI  tool  for reviewing Aegis change sets, using
TCL/TK  .                                                                  197
aecattr(5)                                                                 change attributes file format 198
aecstate(5)                                                                change state file format 198
aedir(5)  directory structures . . . . . . . . . . . . . . . . . . . . . . 202
aefattr(5)                                                                 file attribute file format 202
aefstate(5)                                                                file state file format 203
aegis(5)  file format  . . . . . . . . . . . . . . . . . . . . . . . . . . 204
aegstate(5)                                                                global state file format 205
aelock(5)  how locking works, and which commands use  them
. . . . .                                                                  205
aemetrics(5)                                                               metrics values file format 206
aepattr(5)                                                                 project attribute file format 206
aepconf(5)                                                                 project configuration file format 207
aepstate(5)                                                                project state file format 215
aer(5)    report script language definition  . . . . . . . . . . . . . . . 217
aerptidx(5)                                                                report index file format 220
aesub(5)  available command substitutions  . . . . . . . . . . . . . . . . 220
aetest(5) test results file format . . . . . . . . . . . . . . . . . . . . 223
aeuconf(5)                                                                 user configuration file format 224
aeustate(5)                                                                user state file 225



Permuted Index(Aegis)                                    Permuted Index(Aegis)



aeget(1)         111      aeget - Aegis CGI file   access
aecpu(1)          88     aegis -CoPy file Undo -   action of aecp
                                         reverse
aena(1)          146    aegis -New Administrator   add a new administrator
                                               -   to a project
aenc(1)          150         aegis -New Change -   add a new change to a
                                                   project
aent(1)          166           aegis -New Test -   add a new test to a
                                                   change
aerm(1)          181        aegis -ReMove file -   add files to be deleted
                                                   to a change
aend(1)          154      aegis -New Developer -   add new developers to a
                                                   project
aenf(1)          155           aegis -New File -   add new files to be
                                                   created by a change
aeni(1)          160     aegis -New Integrator -   add new integrators to a
                                                   project
aenrv(1)         165       aegis -New ReViewer -   add new reviewers to a
                                                   project
aena(1)          146                  aegis -New   Administrator - add a new
                                                   administrator to a
                                                   project
aera(1)          175               aegis -Remove   Administrator - remove
                                                   administrators from a
                                                   project
aera(1)          175               aegis -Remove   administrators from a
                          Administrator - remove   project
aena(1)          146    aegis -New Administrator   administrator to a
                                     - add a new   project
aeannotate(1)     64                               aeannotate - annotated
                                                   source file listing
aecattr(5)       198                               aecattr - aegis change
                                                   attributes file
tkaeca(1)        197   aegis - GUI interface for   aeca, using TCL/TK
tkaepa(1)              aegis - GUI interface for   aeca, using TCL/TK
aecomplete(1)     83                               aecomplete - command
                                                   completion
aecpu(1)          88     aegis -CoPy file Undo -   aecp
                               reverse action of
ae_c(1)           62                               ae c - set change number
aecstate(5)      198                               aecstate - aegis change
                                                   state file
ae-cvs-ci(1)      61                               ae-cvs-ci - checkin a
                                                   change set to CVS
aecvsserver(1)    90                               aecvsserver - serve CVS
                                                   client protocol against
                                                   Aegis projects
aedbu(1)          96   aegis -Develop Begin Undo   aedb
                           - undo the effects of
aediff(1)        100                               aediff - file differences
                                                   between deltas
aedir(5)         202                               aedir - aegis directory
                                                   structures
aedist(1)        101                               aedist - remotely
                                                   distribute a change
aeedit(1)        105                               aeedit - edit a change's
                                                   files
aefattr(5)       202                               aefattr - aegis file
                                                   attribute file format
aefstate(5)      203                               aefstate - aegis file
                                                   state file
aeget(1)         111                               aeget - Aegis CGI file
                                                   access
aeget(1)         111                     aeget -   Aegis CGI file access
tkaer(1)         197        aegis - GUI tool for   Aegis change sets, using
                                       reviewing   TCL/TK
aexml(1)         194                     aexml -   Aegis database to XML
aecvsserver(1)    90     aecvsserver - serve CVS   Aegis projects
                         client protocol against
tkaegis(1)       195   aegis - GUI interface for   Aegis, using TCL/TK
aegis.cgi(1)     111                 aegis.cgi -   Aegis web interface
                                                   script
aegstate(5)      205                               aegstate - aegis state
                                                   file
aeibu(1)         114      aegis -Integrate Begin   aeib command
                              Undo - reverse the
aemeasure(1)     131                               aemeasure - simple file
                                                   metrics
aemetrics(5)     206                               aemetrics - metrics
                                                   values file format
tkaenc(1)        196   aegis - GUI interface for   aenc, using TCL/TK
aepattr(5)       206                               aepattr - project
                                                   attribute file
aepconf(5)       207                               aepconf - aegis project
                                                   configuration file
aepromptcmd(1)   174                               aepromptcmd - change
                                                   prompt color by change
                                                   state
ae_p(1)           63                               ae p - set project name
aepstate(5)      215                               aepstate - project state
                                                   file
aerect(1)                                          aerect - draw a rectangle
aerptidx(5)      220                               aerptidx - report index
                                                   file format
aer(5)           217                               aer - report script
                                                   language definition


aesub(5)         220                               aesub - available command
                                                   substitutions
aesub(1)         189                               aesub - substitute and
                                                   echo strings
aetar(1)         192                               aetar - remotely
                                                   distribute a change via
                                                   tar
aetest(5)        223                               aetest - test results
                                                   file format
aeuconf(5)       224                               aeuconf - user
                                                   configuration file
aeustate(5)      225                               aeustate - user state
                                                   file
aexml(1)         194                               aexml - Aegis database to
                                                   XML
aecvsserver(1)    90     aecvsserver - serve CVS   against Aegis projects
                                 client protocol
aenpa(1)         160    aegis -New Project Alias   alias
                          - create a new project
aerpa(1)         185       aegis -Remove Project   alias
                        Alias - remove a project
aenpa(1)         160          aegis -New Project   Alias - create a new
                                                   project alias
aerpa(1)         185       aegis -Remove Project   Alias - remove a project
                                                   alias
aeclone(1)        80         aegis -clone - make   an exact copy of a change
aels(1)          129                     aegis -   annotated directory
                                                   listing
aeannotate(1)     64                aeannotate -   annotated source file
                                                   listing
aenrls(1)        163        aegis -New ReLeaSe -   an old-style project.
                       create a new project from
aedn(1)          105         aegis -DELta NAme -   assign a symbolic name to
                                                   a project delta
aepattr(5)       206           aepattr - project   attribute file
aefattr(5)       202        aefattr - aegis file   attribute file format
aecattr(5)       198      aecattr - aegis change   attributes file
aeca(1)           71               aegis -Change   Attributes - modify the
                                                   attributes of a change
aefa(1)          106                 aegis -File   ATtributes - modify the
                                                   attributes of a file
aepa(1)          171              aegis -Project   Attributes - modify the
                                                   attributes of a project
aeca(1)           71    aegis -Change Attributes   attributes of a change
                                    - modify the
aefa(1)          106    aegis -File ATtributes -   attributes of a file
                                      modify the
aepa(1)          171   aegis -Project Attributes   attributes of a project
                                    - modify the
aesub(5)         220                     aesub -   available command
                                                   substitutions
aed(1)            90    aegis -DIFFerence - find   baseline
                           differences between a
                                  change and the
aerb(1)          176       aegis -Review Begin -   begin a change review
aerb(1)          176               aegis -Review   Begin - begin a change
                                                   review
aedb(1)           93              aegis -Develop   Begin - begin development
                                                   of a change
aeib(1)          112            aegis -Integrate   Begin - begin integrating
                                                   a change
aedb(1)           93      aegis -Develop Begin -   begin development of a
                                                   change
aeib(1)          112    aegis -Integrate Begin -   begin integrating a
                                                   change
aeibu(1)         114            aegis -Integrate   Begin Undo - reverse the
                                                   aeib command
aerbu(1)         177               aegis -Review   Begin Undo - stop
                                                   reviewing a change
aedbu(1)          96              aegis -Develop   Begin Undo - undo the
                                                   effects of aedb
aed(1)            90    aegis -DIFFerence - find   between a change and the
                                     differences   baseline
aediff(1)        100   aediff - file differences   between deltas
aenbr(1)         148         aegis -New BRanch -   branch
                                    create a new
aenbru(1)        149    aegis -New BRanch Undo -   branch
                                        remove a
aenbr(1)         148                  aegis -New   BRanch - create a new
                                                   branch
aemt(1)          133   aegis -Make Transparent -   branch file transparent
                                            make
aemtu(1)         135     aegis -Make Transparent   branch file transparent
                           Undo - no longer make
aenbru(1)        149                  aegis -New   BRanch Undo - remove a
                                                   branch
aeb(1)            66              aegis -Build -   build a change
aeb(1)            66                     aegis -   Build - build a change
aefp(1)          110                     aegis -   calculate file
                                                   fingerprint
aegis.cgi(1)     111                      aegis.   cgi - Aegis web interface
                                                   script
aeget(1)         111               aeget - Aegis   CGI file access
aedist(1)        101           aedist - remotely   change
                                    distribute a
aeb(1)            66      aegis -Build - build a   change
aeca(1)           71    aegis -Change Attributes   change
                         - modify the attributes
                                            of a
aeclone(1)        80      aegis -clone - make an   change
                                 exact copy of a
aecp(1)           84   aegis -CoPy file - copy a   change
                                     file into a
aedb(1)           93      aegis -Develop Begin -   change
                          begin development of a
aede(1)           97        aegis -Develop End -   change
                       complete development of a
aeib(1)          112    aegis -Integrate Begin -   change
                             begin integrating a
aemv(1)          138   aegis -MoVe file - rename   change
                       one or more files as part
                                            of a


aemvu(1)         142     aegis -MoVe file Undo -   change
                       undo the rename a file as
                                       part of a
aenf(1)          155   aegis -New File - add new   change
                        files to be created by a
aenfu(1)         158      aegis -New File Undo -   change
                         remove new files from a
aent(1)          166     aegis -New Test - add a   change
                                   new test to a
aentu(1)         169      aegis -New Test Undo -   change
                         remove new tests from a
aerm(1)          181    aegis -ReMove file - add   change
                        files to be deleted to a
aermu(1)         184   aegis -ReMove file Undo -   change
                              remove files to be
                                  deleted from a
aerbu(1)         177    aegis -Review Begin Undo   change
                              - stop reviewing a
aenc(1)          150                  aegis -New   Change - add a new change
                                                   to a project
aed(1)            90    aegis -DIFFerence - find   change and the baseline
                           differences between a
aecattr(5)       198             aecattr - aegis   change attributes file
aeca(1)           71                     aegis -   Change Attributes -
                                                   modify the attributes of
                                                   a change
aecd(1)           74   aegis -Change Directory -   change directory
aecd(1)           74                     aegis -   Change Directory - change
                                                   directory
aedeu(1)          98   aegis -Develop End Undo -   change for further
                                        recall a   development
aencu(1)         152    aegis -New Change Undo -   change from a project
                                    remove a new
aeifail(1)       115     aegis -Integrate Fail -   change integration
                                          fail a
aeipass(1)       120     aegis -Integrate Pass -   change integration
                                          pass a
ae_c(1)           62                  ae c - set   change number
aechown(1)        76   aegis -Change Owner - set   change owner
aechown(1)        76                     aegis -   Change Owner - set change
                                                   owner
aepromptcmd(1)   174               aepromptcmd -   change prompt color by
                                                   change state
aerb(1)          176       aegis -Review Begin -   change review
                                         begin a
aerfail(1)       179   aegis -Review FAIL - fail   change review
                                               a
aerpass(1)       186   aegis -Review PASS - pass   change review
                                               a
aerpu(1)         187   aegis -Review Pass Undo -   change review pass
                                       rescind a
aecomp(1)         83         aegis - compare two   changes
aebuffy(1)        70           aegis - watch for   changes
aepatch(1)       172    aegis - send and receive   changes as patches
tkaer(1)         197        aegis - GUI tool for   change sets, using TCL/TK
                                 reviewing Aegis
ae-cvs-ci(1)      61       ae-cvs-ci - checkin a   change set to CVS
aeedit(1)        105             aeedit - edit a   change's files
aeintegratq(1)   118           aegis - integrate   changes into projects
aepromptcmd(1)   174        aepromptcmd - change   change state
                                 prompt color by
aecstate(5)      198            aecstate - aegis   change state file
aegis(1)          51             aegis - project   change supervisor
aenc(1)          150   aegis -New Change - add a   change to a project
                                             new
aencu(1)         152                  aegis -New   Change Undo - remove a
                                                   new change from a project
aetar(1)         192            aetar - remotely   change via tar
                                    distribute a
ae-cvs-ci(1)      61                 ae-cvs-ci -   checkin a change set to
                                                   CVS
ae-cvs-ci(1)      61                     ae-cvs-   ci - checkin a change set
                                                   to CVS
aeclean(1)        78                     aegis -   CLEan - clean files from
                                                   development directory
aeclean(1)        78              aegis -CLEan -   clean files from
                                                   development directory
aecvsserver(1)    90     aecvsserver - serve CVS   client protocol against
                                                   Aegis projects
aeclone(1)        80                     aegis -   clone - make an exact
                                                   copy of a change
aepromptcmd(1)   174        aepromptcmd - change   color by change state
                                          prompt
aeibu(1)         114      aegis -Integrate Begin   command
                         Undo - reverse the aeib
aecomplete(1)     83                aecomplete -   command completion
aesub(5)         220           aesub - available   command substitutions
aelock(5)        205   aegis locks - how locking   commands use them
                                works, and which
aecomp(1)         83                     aegis -   compare two changes
aede(1)           97        aegis -Develop End -   complete development of a
                                                   change
aecomplete(1)     83        aecomplete - command   completion
aepconf(5)       207     aepconf - aegis project   configuration file
aeuconf(5)       224              aeuconf - user   configuration file
aecp(1)           84          aegis -CoPy file -   copy a file into a change
aecp(1)           84                     aegis -   CoPy file - copy a file
                                                   into a change
aecpu(1)          88                     aegis -   CoPy file Undo - reverse
                                                   action of aecp
aeclone(1)        80      aegis -clone - make an   copy of a change
                                           exact
aenbr(1)         148         aegis -New BRanch -   create a new branch
aenpr(1)         161        aegis -New PRoject -   create a new project
aenpa(1)         160    aegis -New Project Alias   create a new project
                                               -   alias
aenrls(1)        163        aegis -New ReLeaSe -   create a new project from
                                                   an old-style project.
aenf(1)          155   aegis -New File - add new   created by a change
                                     files to be
ae_c(1)           62                          ae   c - set change number
ae-cvs-ci(1)      61       ae-cvs-ci - checkin a   CVS
                                   change set to

ae-cvs-ci(1)      61                         ae-   cvs-ci - checkin a change
                                                   set to CVS
aecvsserver(1)    90         aecvsserver - serve   CVS client protocol
                                                   against Aegis projects
aexml(1)         194               aexml - Aegis   database to XML
aer(5)           217         aer - report script   definition
                                        language
aermu(1)         184   aegis -ReMove file Undo -   deleted from a change
                              remove files to be
aerm(1)          181    aegis -ReMove file - add   deleted to a change
                                     files to be
aedn(1)          105         aegis -DELta NAme -   delta
                       assign a symbolic name to
                                       a project
aedn(1)          105                     aegis -   DELta NAme - assign a
                                                   symbolic name to a
                                                   project delta
aediff(1)        100   aediff - file differences   deltas
                                         between
aedb(1)           93                     aegis -   Develop Begin - begin
                                                   development of a change
aedbu(1)          96                     aegis -   Develop Begin Undo - undo
                                                   the effects of aedb
aede(1)           97                     aegis -   Develop End - complete
                                                   development of a change
aedeu(1)          98                     aegis -   Develop End Undo - recall
                                                   a change for further
                                                   development
aend(1)          154                  aegis -New   Developer - add new
                                                   developers to a project
aerd(1)          178               aegis -Remove   Developer - remove
                                                   developers from a project
aerd(1)          178   aegis -Remove Developer -   developers from a project
                                          remove
aend(1)          154      aegis -New Developer -   developers to a project
                                         add new
aedeu(1)          98   aegis -Develop End Undo -   development
                             recall a change for
                                         further
aeclean(1)        78        aegis -CLEan - clean   development directory
                                      files from
aedb(1)           93      aegis -Develop Begin -   development of a change
                                           begin
aede(1)           97        aegis -Develop End -   development of a change
                                        complete
aed(1)            90                     aegis -   DIFFerence - find
                                                   differences between a
                                                   change and the baseline
aed(1)            90    aegis -DIFFerence - find   differences between a
                                                   change and the baseline
aediff(1)        100               aediff - file   differences between
                                                   deltas
aecd(1)           74   aegis -Change Directory -   directory
                                          change
aeclean(1)        78        aegis -CLEan - clean   directory
                          files from development
aecd(1)           74               aegis -Change   Directory - change
                                                   directory
aefind(1)               aegis - search for files   directory hierarchy
                                              in
aels(1)          129           aegis - annotated   directory listing
aedir(5)         202               aedir - aegis   directory structures
aedist(1)        101           aedist - remotely   distribute a change
aetar(1)         192            aetar - remotely   distribute a change via
                                                   tar
aerect(1)                               aerect -   draw a rectangle
aesub(1)         189      aesub - substitute and   echo strings
aeedit(1)        105                    aeedit -   edit a change's files
aedbu(1)          96   aegis -Develop Begin Undo   effects of aedb
                                      - undo the
aede(1)           97              aegis -Develop   End - complete
                                                   development of a change
aedeu(1)          98              aegis -Develop   End Undo - recall a
                                                   change for further
                                                   development
aeclone(1)        80      aegis -clone - make an   exact copy of a change
aeifail(1)       115     aegis -Integrate Fail -   fail a change integration
aerfail(1)       179        aegis -Review FAIL -   fail a change review
aeifail(1)       115            aegis -Integrate   Fail - fail a change
                                                   integration
aerfail(1)       179               aegis -Review   FAIL - fail a change
                                                   review
aecattr(5)       198      aecattr - aegis change   file
                                      attributes
aecstate(5)      198     aecstate - aegis change   file
                                           state
aefstate(5)      203       aefstate - aegis file   file
                                           state
aefa(1)          106    aegis -File ATtributes -   file
                        modify the attributes of
                                               a
aegstate(5)      205      aegstate - aegis state   file
aepattr(5)       206           aepattr - project   file
                                       attribute
aepconf(5)       207     aepconf - aegis project   file
                                   configuration
aepstate(5)      215    aepstate - project state   file
aeuconf(5)       224              aeuconf - user   file
                                   configuration
aeustate(5)      225       aeustate - user state   file
aeget(1)         111           aeget - Aegis CGI   file access
aerm(1)          181               aegis -ReMove   file - add files to be
                                                   deleted to a change
aenf(1)          155                  aegis -New   File - add new files to
                                                   be created by a change
aemvu(1)         142     aegis -MoVe file Undo -   file as part of a change
                               undo the rename a
aefattr(5)       202             aefattr - aegis   file attribute file
                                                   format
aefa(1)          106                     aegis -   File ATtributes - modify
                                                   the attributes of a file
aecp(1)           84                 aegis -CoPy   file - copy a file into a
                                                   change

aediff(1)        100                    aediff -   file differences between
                                                   deltas
aefp(1)          110           aegis - calculate   file fingerprint
aefattr(5)       202        aefattr - aegis file   file format
                                       attribute
aegis(5)         204                     aegis -   file format
aemetrics(5)     206         aemetrics - metrics   file format
                                          values
aerptidx(5)      220     aerptidx - report index   file format
aetest(5)        223       aetest - test results   file format
aecp(1)           84   aegis -CoPy file - copy a   file into a change
aeannotate(1)     64      aeannotate - annotated   file listing
                                          source
aemeasure(1)     131          aemeasure - simple   file metrics
aemv(1)          138                 aegis -MoVe   file - rename one or more
                                                   files as part of a change
aeedit(1)        105    aeedit - edit a change's   files
aemv(1)          138   aegis -MoVe file - rename   files as part of a change
                                     one or more
aenfu(1)         158      aegis -New File Undo -   files from a change
                                      remove new
aeclean(1)        78        aegis -CLEan - clean   files from development
                                                   directory
aefind(1)                     aegis - search for   files in directory
                                                   hierarchy
aefstate(5)      203            aefstate - aegis   file state file
aenf(1)          155   aegis -New File - add new   files to be created by a
                                                   change
aermu(1)         184   aegis -ReMove file Undo -   files to be deleted from
                                          remove   a change
aerm(1)          181    aegis -ReMove file - add   files to be deleted to a
                                                   change
aemt(1)          133   aegis -Make Transparent -   file transparent
                                     make branch
aemtu(1)         135     aegis -Make Transparent   file transparent
                           Undo - no longer make
                                          branch
aermu(1)         184               aegis -ReMove   file Undo - remove files
                                                   to be deleted from a
                                                   change
aenfu(1)         158                  aegis -New   File Undo - remove new
                                                   files from a change
aecpu(1)          88                 aegis -CoPy   file Undo - reverse
                                                   action of aecp
aemvu(1)         142                 aegis -MoVe   file Undo - undo the
                                                   rename a file as part of
                                                   a change
aed(1)            90         aegis -DIFFerence -   find differences between
                                                   a change and the baseline
aefp(1)          110      aegis - calculate file   fingerprint
tkaeca(1)        197       aegis - GUI interface   for aeca, using TCL/TK
tkaepa(1)                  aegis - GUI interface   for aeca, using TCL/TK
tkaegis(1)       195       aegis - GUI interface   for Aegis, using TCL/TK
tkaenc(1)        196       aegis - GUI interface   for aenc, using TCL/TK
aebuffy(1)        70               aegis - watch   for changes
aeimport(1)      116              aegis - import   foreign repository into
aefind(1)                         aegis - search   for files in directory
                                                   hierarchy
aedeu(1)          98   aegis -Develop End Undo -   for further development
                                 recall a change
aefattr(5)       202        aefattr - aegis file   format
                                  attribute file
aegis(5)         204                aegis - file   format
aemetrics(5)     206         aemetrics - metrics   format
                                     values file
aerptidx(5)      220     aerptidx - report index   format
                                            file
aetest(5)        223       aetest - test results   format
                                            file
tkaer(1)         197            aegis - GUI tool   for reviewing Aegis
                                                   change sets, using TCL/TK
aenfu(1)         158      aegis -New File Undo -   from a change
                                remove new files
aentu(1)         169      aegis -New Test Undo -   from a change
                                remove new tests
aermu(1)         184   aegis -ReMove file Undo -   from a change
                              remove files to be
                                         deleted
aenrls(1)        163        aegis -New ReLeaSe -   from an old-style
                            create a new project   project.
aencu(1)         152    aegis -New Change Undo -   from a project
                             remove a new change
aera(1)          175               aegis -Remove   from a project
                          Administrator - remove
                                  administrators
aerd(1)          178   aegis -Remove Developer -   from a project
                               remove developers
aeri(1)          180    aegis -Remove Integrator   from a project
                            - remove integrators
aerrv(1)         188    aegis -Remove ReViewer -   from a project
                                remove reviewers
aeclean(1)        78        aegis -CLEan - clean   from development
                                           files   directory
aedeu(1)          98   aegis -Develop End Undo -   further development
                             recall a change for
aer(1)           174      aegis -RePorT - report   generator
aev(1)           194            aegis -VERSion -   give version information
tkaeca(1)        197                     aegis -   GUI interface for aeca,
                                                   using TCL/TK
tkaepa(1)                                aegis -   GUI interface for aeca,
                                                   using TCL/TK
tkaegis(1)       195                     aegis -   GUI interface for Aegis,
                                                   using TCL/TK
tkaenc(1)        196                     aegis -   GUI interface for aenc,
                                                   using TCL/TK
tkaer(1)         197                     aegis -   GUI tool for reviewing
                                                   Aegis change sets, using
                                                   TCL/TK
aefind(1)               aegis - search for files   hierarchy
                                    in directory
aelock(5)        205               aegis locks -   how locking works, and
                                                   which commands use them


aeimport(1)      116                     aegis -   import foreign repository
                                                   into
aerptidx(5)      220           aerptidx - report   index file format
aefind(1)               aegis - search for files   in directory hierarchy
aev(1)           194       aegis -VERSion - give   information
                                         version
aeib(1)          112                     aegis -   Integrate Begin - begin
                                                   integrating a change
aeibu(1)         114                     aegis -   Integrate Begin Undo -
                                                   reverse the aeib command
aeintegratq(1)   118                     aegis -   integrate changes into
                                                   projects
aeifail(1)       115                     aegis -   Integrate Fail - fail a
                                                   change integration
aeipass(1)       120                     aegis -   Integrate Pass - pass a
                                                   change integration
aeib(1)          112    aegis -Integrate Begin -   integrating a change
                                           begin
aeifail(1)       115     aegis -Integrate Fail -   integration
                                   fail a change
aeipass(1)       120     aegis -Integrate Pass -   integration
                                   pass a change
aeni(1)          160                  aegis -New   Integrator - add new
                                                   integrators to a project
aeri(1)          180               aegis -Remove   Integrator - remove
                                                   integrators from a
                                                   project
aeri(1)          180    aegis -Remove Integrator   integrators from a
                                        - remove   project
aeni(1)          160     aegis -New Integrator -   integrators to a project
                                         add new
ael(1)           123          aegis -List - list   interesting things
                                      (possibly)
tkaeca(1)        197                 aegis - GUI   interface for aeca, using
                                                   TCL/TK
tkaepa(1)                            aegis - GUI   interface for aeca, using
                                                   TCL/TK
tkaegis(1)       195                 aegis - GUI   interface for Aegis,
                                                   using TCL/TK
tkaenc(1)        196                 aegis - GUI   interface for aenc, using
                                                   TCL/TK
aegis.cgi(1)     111       aegis.cgi - Aegis web   interface script
aeimport(1)      116      aegis - import foreign   into
                                      repository
aecp(1)           84   aegis -CoPy file - copy a   into a change
                                            file
aeintegratq(1)   118   aegis - integrate changes   into projects
aer(5)           217         aer - report script   language definition
aeannotate(1)     64      aeannotate - annotated   listing
                                     source file
aels(1)          129           aegis - annotated   listing
                                       directory
ael(1)           123                     aegis -   List - list (possibly)
                                                   interesting things
ael(1)           123               aegis -List -   list (possibly)
                                                   interesting things
aelock(5)        205           aegis locks - how   locking works, and which
                                                   commands use them
aelock(5)        205                       aegis   locks - how locking
                                                   works, and which commands
                                                   use them
aemtu(1)         135     aegis -Make Transparent   longer make branch file
                                       Undo - no   transparent
aeclone(1)        80              aegis -clone -   make an exact copy of a
                                                   change
aemt(1)          133   aegis -Make Transparent -   make branch file
                                                   transparent
aemtu(1)         135     aegis -Make Transparent   make branch file
                                Undo - no longer   transparent
aemt(1)          133                     aegis -   Make Transparent - make
                                                   branch file transparent
aemtu(1)         135                     aegis -   Make Transparent Undo -
                                                   no longer make branch
                                                   file transparent
aemeasure(1)     131     aemeasure - simple file   metrics
aemetrics(5)     206                 aemetrics -   metrics values file
                                                   format
aeca(1)           71    aegis -Change Attributes   modify the attributes of
                                               -   a change
aefa(1)          106    aegis -File ATtributes -   modify the attributes of
                                                   a file
aepa(1)          171   aegis -Project Attributes   modify the attributes of
                                               -   a project
aemv(1)          138   aegis -MoVe file - rename   more files as part of a
                                          one or   change
aemv(1)          138                     aegis -   MoVe file - rename one or
                                                   more files as part of a
                                                   change
aemvu(1)         142                     aegis -   MoVe file Undo - undo the
                                                   rename a file as part of
                                                   a change
ae_p(1)           63          ae p - set project   name
aedn(1)          105                aegis -DELta   NAme - assign a symbolic
                                                   name to a project delta
aedn(1)          105         aegis -DELta NAme -   name to a project delta
                               assign a symbolic
aena(1)          146                     aegis -   New Administrator - add a
                                                   new administrator to a
                                                   project
aena(1)          146    aegis -New Administrator   new administrator to a
                                         - add a   project
aenbr(1)         148         aegis -New BRanch -   new branch
                                        create a
aenbr(1)         148                     aegis -   New BRanch - create a new
                                                   branch
aenbru(1)        149                     aegis -   New BRanch Undo - remove
                                                   a branch
aenc(1)          150                     aegis -   New Change - add a new
                                                   change to a project
aencu(1)         152    aegis -New Change Undo -   new change from a project
                                        remove a
aenc(1)          150   aegis -New Change - add a   new change to a project


aencu(1)         152                     aegis -   New Change Undo - remove
                                                   a new change from a
                                                   project
aend(1)          154                     aegis -   New Developer - add new
                                                   developers to a project
aend(1)          154      aegis -New Developer -   new developers to a
                                             add   project
aenf(1)          155                     aegis -   New File - add new files
                                                   to be created by a change
aenfu(1)         158      aegis -New File Undo -   new files from a change
                                          remove
aenf(1)          155       aegis -New File - add   new files to be created
                                                   by a change
aenfu(1)         158                     aegis -   New File Undo - remove
                                                   new files from a change
aeni(1)          160                     aegis -   New Integrator - add new
                                                   integrators to a project
aeni(1)          160     aegis -New Integrator -   new integrators to a
                                             add   project
aenpr(1)         161        aegis -New PRoject -   new project
                                        create a
aenpa(1)         160    aegis -New Project Alias   new project alias
                                      - create a
aenpa(1)         160                     aegis -   New Project Alias -
                                                   create a new project
                                                   alias
aenpr(1)         161                     aegis -   New PRoject - create a
                                                   new project
aenrls(1)        163        aegis -New ReLeaSe -   new project from an old-
                                        create a   style project.
aenrls(1)        163                     aegis -   New ReLeaSe - create a
                                                   new project from an old-
                                                   style project.
aenrv(1)         165                     aegis -   New ReViewer - add new
                                                   reviewers to a project
aenrv(1)         165   aegis -New ReViewer - add   new reviewers to a
                                                   project
aent(1)          166                     aegis -   New Test - add a new test
                                                   to a change
aentu(1)         169      aegis -New Test Undo -   new tests from a change
                                          remove
aent(1)          166     aegis -New Test - add a   new test to a change
aentu(1)         169                     aegis -   New Test Undo - remove
                                                   new tests from a change
aemtu(1)         135     aegis -Make Transparent   no longer make branch
                                          Undo -   file transparent
ae_c(1)           62           ae c - set change   number
aenrls(1)        163        aegis -New ReLeaSe -   old-style project.
                       create a new project from
                                              an
aemv(1)          138   aegis -MoVe file - rename   one or more files as part
                                                   of a change
aemv(1)          138   aegis -MoVe file - rename   or more files as part of
                                             one   a change
aechown(1)        76   aegis -Change Owner - set   owner
                                          change
aechown(1)        76               aegis -Change   Owner - set change owner
aemv(1)          138   aegis -MoVe file - rename   part of a change
                            one or more files as
aemvu(1)         142     aegis -MoVe file Undo -   part of a change
                       undo the rename a file as
aerpu(1)         187   aegis -Review Pass Undo -   pass
                         rescind a change review
aeipass(1)       120     aegis -Integrate Pass -   pass a change integration
aerpass(1)       186        aegis -Review PASS -   pass a change review
aeipass(1)       120            aegis -Integrate   Pass - pass a change
                                                   integration
aerpass(1)       186               aegis -Review   PASS - pass a change
                                                   review
aerpu(1)         187               aegis -Review   Pass Undo - rescind a
                                                   change review pass
aepatch(1)       172    aegis - send and receive   patches
                                      changes as
ael(1)           123        aegis -List - list (   possibly) interesting
                                                   things
aena(1)          146    aegis -New Administrator   project
                       - add a new administrator
                                            to a
aenc(1)          150   aegis -New Change - add a   project
                                 new change to a
aencu(1)         152    aegis -New Change Undo -   project
                        remove a new change from
                                               a
aend(1)          154      aegis -New Developer -   project
                         add new developers to a
aeni(1)          160     aegis -New Integrator -   project
                        add new integrators to a
aenpr(1)         161        aegis -New PRoject -   project
                                    create a new
aenrls(1)        163        aegis -New ReLeaSe -   project.
                       create a new project from
                                    an old-style
aenrv(1)         165   aegis -New ReViewer - add   project
                              new reviewers to a
aepa(1)          171   aegis -Project Attributes   project
                         - modify the attributes
                                            of a
aera(1)          175               aegis -Remove   project
                          Administrator - remove
                           administrators from a
aerd(1)          178   aegis -Remove Developer -   project
                        remove developers from a
aeri(1)          180    aegis -Remove Integrator   project
                       - remove integrators from
                                               a
aermpr(1)        183     aegis -ReMove PRoject -   project
                                          remove
aerrv(1)         188    aegis -Remove ReViewer -   project
                         remove reviewers from a
aenpa(1)         160    aegis -New Project Alias   project alias
                                  - create a new
aerpa(1)         185       aegis -Remove Project   project alias
                                Alias - remove a

aenpa(1)         160                  aegis -New   Project Alias - create a
                                                   new project alias
aerpa(1)         185               aegis -Remove   Project Alias - remove a
                                                   project alias
aepattr(5)       206                   aepattr -   project attribute file
aepa(1)          171                     aegis -   Project Attributes -
                                                   modify the attributes of
                                                   a project
aegis(1)          51                     aegis -   project change supervisor
aepconf(5)       207             aepconf - aegis   project configuration
                                                   file
aenpr(1)         161                  aegis -New   PRoject - create a new
                                                   project
aedn(1)          105         aegis -DELta NAme -   project delta
                       assign a symbolic name to
                                               a
aenrls(1)        163        aegis -New ReLeaSe -   project from an old-style
                                    create a new   project.
ae_p(1)           63                  ae p - set   project name
aermpr(1)        183               aegis -ReMove   PRoject - remove project
aecvsserver(1)    90     aecvsserver - serve CVS   projects
                         client protocol against
                                           Aegis
aeintegratq(1)   118   aegis - integrate changes   projects
                                            into
aepstate(5)      215                  aepstate -   project state file
aepromptcmd(1)   174        aepromptcmd - change   prompt color by change
                                                   state
aecvsserver(1)    90     aecvsserver - serve CVS   protocol against Aegis
                                          client   projects
ae_p(1)           63                          ae   p - set project name
ae-sccs-put(1)    61                     aegis -   put sccs version
aedeu(1)          98   aegis -Develop End Undo -   recall a change for
                                                   further development
aepatch(1)       172            aegis - send and   receive changes as
                                                   patches
aerect(1)                        aerect - draw a   rectangle
aenrls(1)        163                  aegis -New   ReLeaSe - create a new
                                                   project from an old-style
                                                   project.
aedist(1)        101                    aedist -   remotely distribute a
                                                   change
aetar(1)         192                     aetar -   remotely distribute a
                                                   change via tar
aenbru(1)        149    aegis -New BRanch Undo -   remove a branch
aera(1)          175                     aegis -   Remove Administrator -
                                                   remove administrators
                                                   from a project
aera(1)          175               aegis -Remove   remove administrators
                                 Administrator -   from a project
aencu(1)         152    aegis -New Change Undo -   remove a new change from
                                                   a project
aerpa(1)         185       aegis -Remove Project   remove a project alias
                                         Alias -
aerd(1)          178                     aegis -   Remove Developer - remove
                                                   developers from a project
aerd(1)          178   aegis -Remove Developer -   remove developers from a
                                                   project
aerm(1)          181                     aegis -   ReMove file - add files
                                                   to be deleted to a change
aermu(1)         184   aegis -ReMove file Undo -   remove files to be
                                                   deleted from a change
aermu(1)         184                     aegis -   ReMove file Undo - remove
                                                   files to be deleted from
                                                   a change
aeri(1)          180                     aegis -   Remove Integrator -
                                                   remove integrators from a
                                                   project
aeri(1)          180    aegis -Remove Integrator   remove integrators from a
                                               -   project
aenfu(1)         158      aegis -New File Undo -   remove new files from a
                                                   change
aentu(1)         169      aegis -New Test Undo -   remove new tests from a
                                                   change
aermpr(1)        183     aegis -ReMove PRoject -   remove project
aerpa(1)         185                     aegis -   Remove Project Alias -
                                                   remove a project alias
aermpr(1)        183                     aegis -   ReMove PRoject - remove
                                                   project
aerrv(1)         188                     aegis -   Remove ReViewer - remove
                                                   reviewers from a project
aerrv(1)         188    aegis -Remove ReViewer -   remove reviewers from a
                                                   project
aemvu(1)         142     aegis -MoVe file Undo -   rename a file as part of
                                        undo the   a change
aemv(1)          138          aegis -MoVe file -   rename one or more files
                                                   as part of a change
aer(1)           174             aegis -RePorT -   report generator
aerptidx(5)      220                  aerptidx -   report index file format
aer(1)           174                     aegis -   RePorT - report generator
aer(5)           217                       aer -   report script language
                                                   definition
aeimport(1)      116      aegis - import foreign   repository into
aerpu(1)         187   aegis -Review Pass Undo -   rescind a change review
                                                   pass
aetest(5)        223               aetest - test   results file format
aecpu(1)          88     aegis -CoPy file Undo -   reverse action of aecp
aeibu(1)         114      aegis -Integrate Begin   reverse the aeib command
                                          Undo -
aerb(1)          176       aegis -Review Begin -   review
                                  begin a change
aerfail(1)       179   aegis -Review FAIL - fail   review
                                        a change
aerpass(1)       186   aegis -Review PASS - pass   review
                                        a change
aerb(1)          176                     aegis -   Review Begin - begin a
                                                   change review
aerbu(1)         177                     aegis -   Review Begin Undo - stop
                                                   reviewing a change
aenrv(1)         165                  aegis -New   ReViewer - add new
                                                   reviewers to a project
aerrv(1)         188               aegis -Remove   ReViewer - remove
                                                   reviewers from a project

aerrv(1)         188    aegis -Remove ReViewer -   reviewers from a project
                                          remove
aenrv(1)         165   aegis -New ReViewer - add   reviewers to a project
                                             new
aerfail(1)       179                     aegis -   Review FAIL - fail a
                                                   change review
aerbu(1)         177    aegis -Review Begin Undo   reviewing a change
                                          - stop
tkaer(1)         197        aegis - GUI tool for   reviewing Aegis change
                                                   sets, using TCL/TK
aerpu(1)         187   aegis -Review Pass Undo -   review pass
                                rescind a change
aerpass(1)       186                     aegis -   Review PASS - pass a
                                                   change review
aerpu(1)         187                     aegis -   Review Pass Undo -
                                                   rescind a change review
                                                   pass
aet(1)           189               aegis -Test -   run tests
ae-sccs-put(1)    61                 aegis - put   sccs version
aegis.cgi(1)     111       aegis.cgi - Aegis web   script
                                       interface
aer(5)           217                aer - report   script language
                                                   definition
aefind(1)                                aegis -   search for files in
                                                   directory hierarchy
aepatch(1)       172                     aegis -   send and receive changes
                                                   as patches
aecvsserver(1)    90               aecvsserver -   serve CVS client protocol
                                                   against Aegis projects
ae_c(1)           62                      ae c -   set change number
aechown(1)        76       aegis -Change Owner -   set change owner
ae_p(1)           63                      ae p -   set project name
tkaer(1)         197        aegis - GUI tool for   sets, using TCL/TK
                          reviewing Aegis change
ae-cvs-ci(1)      61       ae-cvs-ci - checkin a   set to CVS
                                          change
aeedit(1)        105     aeedit - edit a change'   s files
aemeasure(1)     131                 aemeasure -   simple file metrics
aeannotate(1)     64      aeannotate - annotated   source file listing
aepromptcmd(1)   174        aepromptcmd - change   state
                          prompt color by change
aecstate(5)      198     aecstate - aegis change   state file
aefstate(5)      203       aefstate - aegis file   state file
aegstate(5)      205            aegstate - aegis   state file
aepstate(5)      215          aepstate - project   state file
aeustate(5)      225             aeustate - user   state file
aerbu(1)         177    aegis -Review Begin Undo   stop reviewing a change
                                               -
aesub(1)         189      aesub - substitute and   strings
                                            echo
aedir(5)         202     aedir - aegis directory   structures
aenrls(1)        163        aegis -New ReLeaSe -   style project.
                       create a new project from
                                         an old-
aesub(1)         189                     aesub -   substitute and echo
                                                   strings
aesub(5)         220   aesub - available command   substitutions
aegis(1)          51      aegis - project change   supervisor
aedn(1)          105         aegis -DELta NAme -   symbolic name to a
                                        assign a   project delta
aetar(1)         192            aetar - remotely   tar
                         distribute a change via
tkaeca(1)        197   aegis - GUI interface for   TCL/TK
                                     aeca, using
tkaepa(1)              aegis - GUI interface for   TCL/TK
                                     aeca, using
tkaegis(1)       195   aegis - GUI interface for   TCL/TK
                                    Aegis, using
tkaenc(1)        196   aegis - GUI interface for   TCL/TK
                                     aenc, using
tkaer(1)         197        aegis - GUI tool for   TCL/TK
                          reviewing Aegis change
                                     sets, using
aent(1)          166                  aegis -New   Test - add a new test to
                                                   a change
aetest(5)        223                    aetest -   test results file format
aet(1)           189                     aegis -   Test - run tests
aet(1)           189           aegis -Test - run   tests
aentu(1)         169      aegis -New Test Undo -   tests from a change
                                      remove new
aent(1)          166     aegis -New Test - add a   test to a change
                                             new
aentu(1)         169                  aegis -New   Test Undo - remove new
                                                   tests from a change
aelock(5)        205   aegis locks - how locking   them
                       works, and which commands
                                             use
ael(1)           123          aegis -List - list   things
                          (possibly) interesting
tkaeca(1)        197   aegis - GUI interface for   TK
                                aeca, using TCL/
tkaepa(1)              aegis - GUI interface for   TK
                                aeca, using TCL/
tkaegis(1)       195   aegis - GUI interface for   TK
                               Aegis, using TCL/
tkaenc(1)        196   aegis - GUI interface for   TK
                                aenc, using TCL/
tkaer(1)         197        aegis - GUI tool for   TK
                          reviewing Aegis change
                                sets, using TCL/
tkaer(1)         197                 aegis - GUI   tool for reviewing Aegis
                                                   change sets, using TCL/TK
aemt(1)          133   aegis -Make Transparent -   transparent
                                make branch file
aemtu(1)         135     aegis -Make Transparent   transparent
                           Undo - no longer make
                                     branch file
aemt(1)          133                 aegis -Make   Transparent - make branch
                                                   file transparent
aemtu(1)         135                 aegis -Make   Transparent Undo - no
                                                   longer make branch file
                                                   transparent
aecomp(1)         83             aegis - compare   two changes

aemtu(1)         135     aegis -Make Transparent   Undo - no longer make
                                                   branch file transparent
aedeu(1)          98          aegis -Develop End   Undo - recall a change
                                                   for further development
aenbru(1)        149           aegis -New BRanch   Undo - remove a branch
aencu(1)         152           aegis -New Change   Undo - remove a new
                                                   change from a project
aermu(1)         184          aegis -ReMove file   Undo - remove files to be
                                                   deleted from a change
aenfu(1)         158             aegis -New File   Undo - remove new files
                                                   from a change
aentu(1)         169             aegis -New Test   Undo - remove new tests
                                                   from a change
aerpu(1)         187          aegis -Review Pass   Undo - rescind a change
                                                   review pass
aecpu(1)          88            aegis -CoPy file   Undo - reverse action of
                                                   aecp
aeibu(1)         114      aegis -Integrate Begin   Undo - reverse the aeib
                                                   command
aerbu(1)         177         aegis -Review Begin   Undo - stop reviewing a
                                                   change
aedbu(1)          96   aegis -Develop Begin Undo   undo the effects of aedb
                                               -
aemvu(1)         142     aegis -MoVe file Undo -   undo the rename a file as
                                                   part of a change
aedbu(1)          96        aegis -Develop Begin   Undo - undo the effects
                                                   of aedb
aemvu(1)         142            aegis -MoVe file   Undo - undo the rename a
                                                   file as part of a change
aeuconf(5)       224                   aeuconf -   user configuration file
aeustate(5)      225                  aeustate -   user state file
aelock(5)        205   aegis locks - how locking   use them
                       works, and which commands
tkaeca(1)        197   aegis - GUI interface for   using TCL/TK
                                           aeca,
tkaepa(1)              aegis - GUI interface for   using TCL/TK
                                           aeca,
tkaegis(1)       195   aegis - GUI interface for   using TCL/TK
                                          Aegis,
tkaenc(1)        196   aegis - GUI interface for   using TCL/TK
                                           aenc,
tkaer(1)         197        aegis - GUI tool for   using TCL/TK
                          reviewing Aegis change
                                           sets,
aemetrics(5)     206         aemetrics - metrics   values file format
ae-sccs-put(1)    61            aegis - put sccs   version
aev(1)           194                     aegis -   VERSion - give version
                                                   information
aev(1)           194       aegis -VERSion - give   version information
aetar(1)         192            aetar - remotely   via tar
                             distribute a change
aebuffy(1)        70                     aegis -   watch for changes
aegis.cgi(1)     111           aegis.cgi - Aegis   web interface script
aelock(5)        205   aegis locks - how locking   which commands use them
                                      works, and
aelock(5)        205   aegis locks - how locking   works, and which commands
                                                   use them
aexml(1)         194   aexml - Aegis database to   XML



Reference Manual                     Aegis                             -cmxcvi
