.













                              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 3.28
and was prepared 30 August 2001.






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 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-
dation,  Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
























                                                                0





Read Me(Aegis)                                     Read Me(Aegis)


RNNeAAaMMdEE Me(Aegis)                                     Read Me(Aegis)
        aegis - project change supervisor
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
        1998, 1999, 2000, 2001 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'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.3.28.README   # Description, from tar file
                File:   aegis.3.28.lsm      # Description, in LSM format
                File:   aegis.3.28.ae       # the complete source, aedist format
                File:   aegis.3.28.spec     # RedHat package specification
                File:   aegis.3.28.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.3.28.README   # Description, from tar file
                File:   aegis.3.28.lsm      # Description, in LSM format
                File:   aegis.3.28.spec     # RedHat package specification
                File:   aegis.3.28.ae       # the complete source, aedist format
                File:   aegis.3.28.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@canb.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, send an email message
        to
                majordomo@canb.auug.org.au
        with a message body containing the single line
                subscribe aegis-users
        If you have an address which is not readily derived from
        your mail headers (majordomo is only a Perl program,
        after all) you will need to use a message of the form:
                subscribe aegis-users _a_d_d_r_e_s_s
        where _a_d_d_r_e_s_s is an email address to which you want
        messages sent.

   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.  A
        number of features have been added to _A_e_g_i_s with this
        release.  A few of them are detailed here:

   VVeerrssiioonn 33..2288
        * 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

        * The web interface has been improved.  It should result
        in better save file locations being suggested for 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


















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



        * 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












        * 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


















        * 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













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











        * 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
        * The way the Apache config 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
        * 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





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













        * 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
        * 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
        * 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
        * 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
        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
        * 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
        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 _c_o_n_f_i_g 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.












































Reference Manual              Aegis                            28





Build(Aegis)                                         Build(Aegis)


BNNuAAiMMlEEd(Aegis)                                         Build(Aegis)
        aegis - project change supervisor
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
        1998, 1999, 2000, 2001 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 defence.

SSPPAACCEE RREEQQUUIIRREEMMEENNTTSS
        You will need up to 15MB to unpack and build the _a_e_g_i_s
        program.  (This is the worst case seen so far, most
        systems have binaries about 60% as big as this, 10MB 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.

   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.cdrom.com/pub/infozip/zlib/ for download.)
        This is essential, becaise Aegis will not build.  without
        it.  (NNoottee:: tthhiiss iiss nnoott tthhee ssaammee tthhiinngg aass zlibcc wwhhiicchh
        ddooeess ssoommeetthhiinngg ccoommpplleetteellyy ddiiffffeerreenntt..))

        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
                _._._._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
                _._._._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,
                % ./configure --quiet
                %

        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.

        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.

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

        _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
                _._._._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CF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
                _._._._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 _/_u_s_r_/_l_o_c_a_l.
        Watch the output... it should now find your installed
        packages correctly.

   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.

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.

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 not been installed.

        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.cdrom.com/pub/infozip/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

        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
        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.
                # 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.  (This may be in a different place, if you
        specified a --prefix option.)

        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.

        If you have a Web server, and the aegis.cgi was
        installed, you can set its _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.

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 _3_._2_8
                _._._.
                %
        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 gave groff, there should be a PostScript copy
        at the archive site.  It is a known flaw that the User
        Guide is incomplete, it is something the author is
        working on "at this moment".

        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_-_3_._2_8_._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$$


















































Reference Manual              Aegis                            44





aegis(1)                                                 aegis(1)


aNNeAAgMMiEEs(1)                                                 aegis(1)
       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.

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

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.

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

       --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 all listings.
       These options may appear anywhere on the command line
       following the function selectors.

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

       The following options are available to _m_o_s_t functions.
       These options may appear anywhere on the command line
       following the function selectors.

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

       --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_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 timestamps.  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.

       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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/












Reference Manual              Aegis                            52





ae-sccs-put(1)                                     ae-sccs-put(1)


aNNeAA-MMsEEccs-put(1)                                     ae-sccs-put(1)
       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 insluate 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.

CCOOPPYYRRIIGGHHTT
       ae-sccs-put version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/



























































Reference Manual              Aegis                            54





ae_c(1)                                                   ae_c(1)


aNNeAA_MMcEE(1)                                                   ae_c(1)
       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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/























Reference Manual              Aegis                            55





ae_p(1)                                                   ae_p(1)


aNNeAA_MMpEE(1)                                                   ae_p(1)
       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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
























Reference Manual              Aegis                            56





aegis -Build(1)                                   aegis -Build(1)


aNNeAAgMMiEEs -Build(1)                                   aegis -Build(1)
       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 _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 _c_o_n_f_i_g file was deleted, any diff registration
       will also be canceled.

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 _a_e_g_i_s.  (It becomes multi-
       level when aegis' branching functionality is used.)  To
       allow these tools to be used, _a_e_g_i_s 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
       Two boolean fields of the project _c_o_n_f_i_g file control the
       behavior of this feature.  They are 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 and _r_e_m_o_v_e___s_y_m_l_i_n_k_s___a_f_t_e_r___b_u_i_l_d fields.  See
       _a_e_p_c_o_n_f(5) for more information.

       If both fields are set to _t_r_u_e, 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.

       If only 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 set to
       _t_r_u_e (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 development 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.)  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 _c_o_n_f_i_g 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
       _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 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.

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

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

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

       --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 a scan for up-
               to-date symbolic links before and after the build.
               This is the default.  See also the
               ``symbolic_links_preference'' field of _a_e_u_c_o_n_f(5).
               This option is not meaningful if symbolic links
               are not being used.

       --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 no scan for up-
               to-date symbolic links before and after the build,
               this is useful when you have just done a build and
               you know they are already up-to-date.  See also
               the ``symbolic_links_preference'' field of
               _a_e_u_c_o_n_f(5).  This option is not meaningful if
               symbolic links are not being used.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/



























































Reference Manual              Aegis                            63





aebuffy(1)                                             aebuffy(1)


aNNeAAbMMuEEffy(1)                                             aebuffy(1)
       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 integrate dby 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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/






















Reference Manual              Aegis                            64





aegis -Change_Attributes(1)           aegis -Change_Attributes(1)


aNNeAAgMMiEEs -Change_Attributes(1)           aegis -Change_Attributes(1)
       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 --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

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.

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

       --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
               cange 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.
               Warning: tries to be well behaved when faced with
               errors, the temporary file is left in your home
               directory.  This 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_D_I_T_O_R environment variable is consulted
               for the name of the editor to use; it is a fatal
               error if it is not set.

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

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

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_p_a(5) modify the attributes of a project

       _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_u_c_o_n_f(5)
               user configuration file format

CCOOPPYYRRIIGGHHTT
       aegis version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/








Reference Manual              Aegis                            67





aegis -Change_Directory(1)             aegis -Change_Directory(1)


aNNeAAgMMiEEs -Change_Directory(1)             aegis -Change_Directory(1)
       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.

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

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/































Reference Manual              Aegis                            70





aegis -Change_Owner(1)                     aegis -Change_Owner(1)


aNNeAAgMMiEEs -Change_Owner(1)                     aegis -Change_Owner(1)
       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.

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

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

CCOOPPYYRRIIGGHHTT
       aegis version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/








































Reference Manual              Aegis                            74





aegis -CLEan(1)                                   aegis -CLEan(1)


aNNeAAgMMiEEs -CLEan(1)                                   aegis -CLEan(1)
       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 config 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 _a_e_g_i_s.  (It becomes multi-
       level when aegis' branching functionality is used.)  To
       allow these tools to be used, _a_e_g_i_s 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
       Two boolean fields of the project _c_o_n_f_i_g file control the
       behavior of this feature.  They are 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 and _r_e_m_o_v_e___s_y_m_l_i_n_k_s___a_f_t_e_r___b_u_i_l_d fields.  See
       _a_e_p_c_o_n_f(5) for more information.

       If both fields are set to _t_r_u_e, 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.

       If only 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 set to
       _t_r_u_e (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 development 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.)  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 _c_o_n_f_i_g 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
       _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 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.

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

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

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

CCOOPPYYRRIIGGHHTT
       aegis version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/










Reference Manual              Aegis                            78





aegis -clone(1)                                   aegis -clone(1)


aNNeAAgMMiEEs -clone(1)                                   aegis -clone(1)
       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.

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.

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

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/













































Reference Manual              Aegis                            84





aecomp(1)                                               aecomp(1)


aNNeAAcMMoEEmp(1)                                               aecomp(1)
       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) and then
       modified a change and subsequently 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>
























Reference Manual              Aegis                            85





aegis -CoPy_file(1)                           aegis -CoPy_file(1)


aNNeAAgMMiEEs -CoPy_file(1)                           aegis -CoPy_file(1)
       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.

   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 _c_o_n_f_i_g 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.

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.

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

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

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

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/







Reference Manual              Aegis                            91





aegis -CoPy_file_Undo(1)                 aegis -CoPy_file_Undo(1)


aNNeAAgMMiEEs -CoPy_file_Undo(1)                 aegis -CoPy_file_Undo(1)
       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.

   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.


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

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

SSEEEE AALLSSOO
       _a_e_c_p(1) copy files into 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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/























Reference Manual              Aegis                            95





aegis -DIFFerence(1)                         aegis -DIFFerence(1)


aNNeAAgMMiEEs -DIFFerence(1)                         aegis -DIFFerence(1)
       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 _c_o_n_f_i_g file (see
       _a_e_p_c_o_n_f(5) for more information).

       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.

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 _c_o_n_f_i_g file (see _a_e_p_c_o_n_f(5) for more information).

       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 difference output in the _,_D files contains the result
       of the merge.  You should edit them, to make sure the
       automatic merge has produced sensible results, and then
       rename them to be the corresponding source file.

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

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.

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

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/

Reference Manual              Aegis                           100





aegis -Develop_Begin(1)                   aegis -Develop_Begin(1)


aNNeAAgMMiEEs -Develop_Begin(1)                   aegis -Develop_Begin(1)
       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.

       The _d_e_v_e_l_o_p___b_e_g_i_n___c_o_m_m_a_n_d in the project config 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 _a_e_g_i_s.  (It becomes multi-
       level when aegis' branching functionality is used.)  To
       allow these tools to be used, _a_e_g_i_s 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
       Two boolean fields of the project _c_o_n_f_i_g file control the
       behavior of this feature.  They are 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 and _r_e_m_o_v_e___s_y_m_l_i_n_k_s___a_f_t_e_r___b_u_i_l_d fields.  See
       _a_e_p_c_o_n_f(5) for more information.

       If both fields are set to _t_r_u_e, 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.

       If only 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 set to
       _t_r_u_e (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 development 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.)  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 _c_o_n_f_i_g 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
       _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 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.

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
















































Reference Manual              Aegis                           106





aegis -Develop_Begin_Undo(1)         aegis -Develop_Begin_Undo(1)


aNNeAAgMMiEEs -Develop_Begin_Undo(1)         aegis -Develop_Begin_Undo(1)
       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.

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/













Reference Manual              Aegis                           109





aegis -Develop_End(1)                       aegis -Develop_End(1)


aNNeAAgMMiEEs -Develop_End(1)                       aegis -Develop_End(1)
       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 _c_o_n_f_i_g 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.

       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.

       The change is no longer considered assigned to the
       developer.

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/














































Reference Manual              Aegis                           113





aegis -Develop_End_Undo(1)             aegis -Develop_End_Undo(1)


aNNeAAgMMiEEs -Develop_End_Undo(1)             aegis -Develop_End_Undo(1)
       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.

       The files are changed back to being owned by the current
       user, and cease to be read-only.

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

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






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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/




































Reference Manual              Aegis                           116





aedist(1)                                               aedist(1)


aNNeAAdMMiEEst(1)                                               aedist(1)
       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 --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.  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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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.

       --NNoott__EEnnttiirree__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.

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


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

       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.

   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.

       --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 config files,
         shell scripts, code generators, _e_t_c here to specify
         files in addition to the config 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)).

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.

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

CCOOPPYYRRIIGGHHTT
       aedist version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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.
       Florian Xhumari   <Florian.Xhumari@inria.fr>   On the need for pull interfaces.
       Graham Wheeler    <gram@cdsec.com>             HTTP pull interfacing.


Reference Manual              Aegis                           122





aegis -DELta_NAme(1)                         aegis -DELta_NAme(1)


aNNeAAgMMiEEs -DELta_NAme(1)                         aegis -DELta_NAme(1)
       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 _d_e_l_t_a___n_u_m_b_e_r [ _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 number on the command line is 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.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/



























































Reference Manual              Aegis                           125





aefind(1)                                               aefind(1)


aNNeAAfMMiEEnd(1)                                               aefind(1)
       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.

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

       --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.  By default, relative file names are
               used, 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.

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

CCOOPPYYRRIIGGHHTT
       aefind version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/









Reference Manual              Aegis                           133





aefp(1)                                                   aefp(1)


aNNeAAfMMpEE(1)                                                   aefp(1)
       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.

CCOOPPYYRRIIGGHHTT
       aefp version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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.






































Reference Manual              Aegis                           136





aegis -Integrate_Begin(1)               aegis -Integrate_Begin(1)


aNNeAAgMMiEEs -Integrate_Begin(1)               aegis -Integrate_Begin(1)
       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.

       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immi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 _c_o_n_f_i_g
       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.

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

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

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_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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/























Reference Manual              Aegis                           140





aegis -Integrate_Begin_Undo(1)     aegis -Integrate_Begin_Undo(1)


aNNeAAgMMiEEs -Integrate_Begin_Undo(1)     aegis -Integrate_Begin_Undo(1)
       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.

       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.

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/



























Reference Manual              Aegis                           143





aegis -Integrate_Fail(1)                 aegis -Integrate_Fail(1)


aNNeAAgMMiEEs -Integrate_Fail(1)                 aegis -Integrate_Fail(1)
       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.

       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.

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

       --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.
               Warning: tries to be well behaved when faced with
               errors, the temporary file is left in your home
               directory.  This 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_D_I_T_O_R environment variable is consulted
               for the name of the editor to use; it is a fatal
               error if it is not set.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
















































Reference Manual              Aegis                           147





aeimport(1)                                           aeimport(1)


aNNeAAiMMmEEport(1)                                           aeimport(1)
       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 firly
       accurately preproduces 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 othe 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  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 abd 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 does'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 timestamps are examined to find groups of files
         which were commited 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 chnage, 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 format is understood at present.  It should be
         straigh forward to add SCCS support 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,
         buts 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 deafult 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.

CCOOPPYYRRIIGGHHTT
       aeimport version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/















Reference Manual              Aegis                           153





aegis -Integrate_Pass(1)                 aegis -Integrate_Pass(1)


aNNeAAgMMiEEs -Integrate_Pass(1)                 aegis -Integrate_Pass(1)
       aegis -Integrate_Pass - pass 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__PPaassss [ _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 --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
       The _a_e_g_i_s _-_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.

       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 _c_o_n_f_i_g 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.

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
       Many history tools (_e_._g_. RCS and SCCS) can modify the
       contents of the file when it is committed.  This usually
       requies the use of specific ``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.

       Once the history has been updated, the integration
       directory is renamed as the baseline directory, and the
       old baseline directory is deleted.  The modification times
       of all files modified since the beginning of integration
       (see _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.

       Once integrate pass is complete the change is no longer
       assigned to the current user.

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Thhee HHiissttoorryy LLoocckk
       Where a project has a number of branches active
       simultaneously, it is possible for independent integrate
       pass commands for different branches 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
       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.

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:

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

       --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
       The recommended alias for this command is
       csh%    alias aeipass 'aegis -ipass \!* -v'
       sh$     aeipass(){aegis -ipass "$@" -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
       _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
       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.

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_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
       aegis version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/





Reference Manual              Aegis                           158





aegis -List(1)                                     aegis -List(1)


aNNeAAgMMiEEs -List(1)                                     aegis -List(1)
       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.

       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_History
               List the history of a change.

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

       Default_Project
               List the default project for the current user.

       Developers
               List the developers of a project.

       Integrators
               List the integrators of a project.

       List_List
               List all lists available.

       Locks
               List all currently active locks.

       Outstanding_Changes
               List all changes not yet completed.

       All_Outstanding_Changes
               List all changes not yet completed, for all
               projects.

       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_History
               List the integration history of a project.

       Projects
               List all projects.

       Project_Aliases
               List all project aliases.

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

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

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

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

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

CCOOPPYYRRIIGGHHTT
       aegis version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/



























































Reference Manual              Aegis                           163





GPL(GNU)             Free Software Foundation            GPL(GNU)


GPL(GNU)             FreGeNUSoGfEtNwEaRrAeL FPoUuBnLdIaCtiLoInCENSE        GPL(GNU)
                          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.












































GNU                            GPL                            172





aegis -MoVe_file(1)                           aegis -MoVe_file(1)


aNNeAAgMMiEEs -MoVe_file(1)                           aegis -MoVe_file(1)
       aegis -MoVe_file - 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 [ _o_p_t_i_o_n...  ] _o_l_d_-_n_a_m_e _n_e_w_-_n_a_m_e
       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.

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:

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

       --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.
       It is an error if you attempt to move the project _c_o_n_f_i_g
       file.

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.





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_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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/






























Reference Manual              Aegis                           178





aegis -New_Administrator(1)           aegis -New_Administrator(1)


aNNeAAgMMiEEs -New_Administrator(1)           aegis -New_Administrator(1)
       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.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/



























































Reference Manual              Aegis                           181





aegis -New_BRanch(1)                         aegis -New_BRanch(1)


aNNeAAgMMiEEs -New_BRanch(1)                         aegis -New_BRanch(1)
       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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/






Reference Manual              Aegis                           183





aegis -New_BRanch_Undo(1)               aegis -New_BRanch_Undo(1)


aNNeAAgMMiEEs -New_BRanch_Undo(1)               aegis -New_BRanch_Undo(1)
       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
       inaccessable.)

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
















































Reference Manual              Aegis                           186





aegis -New_Change(1)                         aegis -New_Change(1)


aNNeAAgMMiEEs -New_Change(1)                         aegis -New_Change(1)
       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.

       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.

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.
               Warning: tries to be well behaved when faced with
               errors, the temporary file is left in your home
               directory.  This 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_D_I_T_O_R environment variable is consulted
               for the name of the editor to use; it is a fatal
               error if it is not set.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/



























































Reference Manual              Aegis                           190





aegis -New_Change_Undo(1)               aegis -New_Change_Undo(1)


aNNeAAgMMiEEs -New_Change_Undo(1)               aegis -New_Change_Undo(1)
       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 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.

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/










































Reference Manual              Aegis                           193





aegis -New_Developer(1)                   aegis -New_Developer(1)


aNNeAAgMMiEEs -New_Developer(1)                   aegis -New_Developer(1)
       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.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/


Reference Manual              Aegis                           195





aegis -New_File(1)                             aegis -New_File(1)


aNNeAAgMMiEEs -New_File(1)                             aegis -New_File(1)
       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 search 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.)

   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 _c_o_n_f_i_g 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.

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/






































Reference Manual              Aegis                           202





aegis -New_File_Undo(1)                   aegis -New_File_Undo(1)


aNNeAAgMMiEEs -New_File_Undo(1)                   aegis -New_File_Undo(1)
       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.

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

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/


























Reference Manual              Aegis                           206





aegis -New_Integrator(1)                 aegis -New_Integrator(1)


aNNeAAgMMiEEs -New_Integrator(1)                 aegis -New_Integrator(1)
       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.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/


Reference Manual              Aegis                           208





aegis -New_Project_Alias(1)           aegis -New_Project_Alias(1)


aNNeAAgMMiEEs -New_Project_Alias(1)           aegis -New_Project_Alias(1)
       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.2 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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/













Reference Manual              Aegis                           210





aegis -New_PRoject(1)                       aegis -New_PRoject(1)


aNNeAAgMMiEEs -New_PRoject(1)                       aegis -New_PRoject(1)
       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 _/_u_s_r_/_c_o_m_/_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.
               Warning: tries to be well behaved when faced with
               errors, the temporary file is left in your home
               directory.  This 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_D_I_T_O_R environment variable is consulted
               for the name of the editor to use; it is a fatal
               error if it is not set.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/





































Reference Manual              Aegis                           215





aegis -New_ReLeaSe(1)                       aegis -New_ReLeaSe(1)


aNNeAAgMMiEEs -New_ReLeaSe(1)                       aegis -New_ReLeaSe(1)
       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 _/_u_s_r_/_c_o_m_/_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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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.


































Reference Manual              Aegis                           220





aegis -New_ReViewer(1)                     aegis -New_ReViewer(1)


aNNeAAgMMiEEs -New_ReViewer(1)                     aegis -New_ReViewer(1)
       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.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/

Reference Manual              Aegis                           222





aegis -New_Test(1)                             aegis -New_Test(1)


aNNeAAgMMiEEs -New_Test(1)                             aegis -New_Test(1)
       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 _c_o_n_f_i_g 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 _c_o_n_f_i_g 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.

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

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






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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/

































Reference Manual              Aegis                           230





aegis -New_Test_Undo(1)                   aegis -New_Test_Undo(1)


aNNeAAgMMiEEs -New_Test_Undo(1)                   aegis -New_Test_Undo(1)
       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.

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

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/


































Reference Manual              Aegis                           234





aegis -Project_Attributes(1)         aegis -Project_Attributes(1)


aNNeAAgMMiEEs -Project_Attributes(1)         aegis -Project_Attributes(1)
       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.
               Warning: tries to be well behaved when faced with
               errors, the temporary file is left in your home
               directory.  This 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_D_I_T_O_R environment variable is consulted
               for the name of the editor to use; it is a fatal
               error if it is not set.

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

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

SSEEEE AALLSSOO
       _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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/






























Reference Manual              Aegis                           237





aepatch(1)                                             aepatch(1)


aNNeAApMMaEEtch(1)                                             aepatch(1)
       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 --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.

OOPPTTIIOONNSS
       The following options are understood:

       --GGlluupp   This option may be used to

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

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

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

       --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 valid when used with the list
               option.)

       --LLiisstt   This option may be used to list the file names in
               the patch.

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

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

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.

CCOOPPYYRRIIGGHHTT
       aepatch version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/













































Reference Manual              Aegis                           240





aereport -RePorT(1)                           aereport -RePorT(1)


aNNeAArMMeEEport -RePorT(1)                           aereport -RePorT(1)
       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.  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.

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

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

CCOOPPYYRRIIGGHHTT
       aereport version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/





















Reference Manual              Aegis                           243





aegis -Remove_Administrator(1)     aegis -Remove_Administrator(1)


aNNeAAgMMiEEs -Remove_Administrator(1)     aegis -Remove_Administrator(1)
       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.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/



























































Reference Manual              Aegis                           246





aegis -Remove_Developer(1)             aegis -Remove_Developer(1)


aNNeAAgMMiEEs -Remove_Developer(1)             aegis -Remove_Developer(1)
       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.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/


Reference Manual              Aegis                           248





aerect(1)                                               aerect(1)


aNNeAArMMeEEct(1)                                               aerect(1)
       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

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.

CCOOPPYYRRIIGGHHTT
       aegis version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/











































Reference Manual              Aegis                           250





aegis -Review_FAIL(1)                       aegis -Review_FAIL(1)


aNNeAAgMMiEEs -Review_FAIL(1)                       aegis -Review_FAIL(1)
       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.

       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 with will
       result in better formatting in the various listings.

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

       --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.
               Warning: tries to be well behaved when faced with
               errors, the temporary file is left in your home
               directory.  This 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_D_I_T_O_R environment variable is consulted
               for the name of the editor to use; it is a fatal
               error if it is not set.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
















































Reference Manual              Aegis                           254





aegis -Remove_Integrator(1)           aegis -Remove_Integrator(1)


aNNeAAgMMiEEs -Remove_Integrator(1)           aegis -Remove_Integrator(1)
       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.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/

Reference Manual              Aegis                           256





aegis -ReMove_file(1)                       aegis -ReMove_file(1)


aNNeAAgMMiEEs -ReMove_file(1)                       aegis -ReMove_file(1)
       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.

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/





























Reference Manual              Aegis                           262





aegis -ReMove_PRoject(1)                 aegis -ReMove_PRoject(1)


aNNeAAgMMiEEs -ReMove_PRoject(1)                 aegis -ReMove_PRoject(1)
       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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
















Reference Manual              Aegis                           265





aegis -ReMove_file_Undo(1)             aegis -ReMove_file_Undo(1)


aNNeAAgMMiEEs -ReMove_file_Undo(1)             aegis -ReMove_file_Undo(1)
       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.

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/




Reference Manual              Aegis                           268





aegis -Remove_Project_Alias(1)     aegis -Remove_Project_Alias(1)


aNNeAAgMMiEEs -Remove_Project_Alias(1)     aegis -Remove_Project_Alias(1)
       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.2 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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
























Reference Manual              Aegis                           270





aegis -Review_PASS(1)                       aegis -Review_PASS(1)


aNNeAAgMMiEEs -Review_PASS(1)                       aegis -Review_PASS(1)
       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 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.

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

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

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_u_c_o_n_f(5)
               user configuration file format

CCOOPPYYRRIIGGHHTT
       aegis version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
































Reference Manual              Aegis                           273





aegis -Review_Pass_Undo(1)             aegis -Review_Pass_Undo(1)


aNNeAAgMMiEEs -Review_Pass_Undo(1)             aegis -Review_Pass_Undo(1)
       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.

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
















































Reference Manual              Aegis                           276





aegis -Remove_ReViewer(1)               aegis -Remove_ReViewer(1)


aNNeAAgMMiEEs -Remove_ReViewer(1)               aegis -Remove_ReViewer(1)
       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.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/

Reference Manual              Aegis                           278





aesub(1)                                                 aesub(1)


aNNeAAsMMuEEb(1)                                                 aesub(1)
       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.  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.

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/














Reference Manual              Aegis                           280





aegis -Test(1)                                     aegis -Test(1)


aNNeAAgMMiEEs -Test(1)                                     aegis -Test(1)
       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 _c_o_n_f_i_g 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
           exersized 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.  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.

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

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

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

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
















































Reference Manual              Aegis                           288





aegis -VERSion(1)                               aegis -VERSion(1)


aNNeAAgMMiEEs -VERSion(1)                               aegis -VERSion(1)
       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.

CCOOPPYYRRIIGGHHTT
       aegis version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/





































Reference Manual              Aegis                           290





tkaeca -Glup(1)                                   tkaeca -Glup(1)


tNNkAAaMMeEEca -Glup(1)                                   tkaeca -Glup(1)
       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, 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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
















































Reference Manual              Aegis                           292





tkaegis(1)                                             tkaegis(1)


tNNkAAaMMeEEgis(1)                                             tkaegis(1)
       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.

CCOOPPYYRRIIGGHHTT
       tkaegis version 3.28
       Copyright (C) 1995, 1999 Graham Wheeler

AAUUTTHHOORR
       Graham Wheeler <gram@cdsec.com>
       Citadel Data Security































Reference Manual              Aegis                           297





tkaenc -Glup(1)                                   tkaenc -Glup(1)


tNNkAAaMMeEEnc -Glup(1)                                   tkaenc -Glup(1)
       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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/












































Reference Manual              Aegis                           299





tkaer(1)                                                 tkaer(1)


tNNkAAaMMeEEr(1)                                                 tkaer(1)
       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.

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

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

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>























































Reference Manual              Aegis                           302





aecattr(5)                                             aecattr(5)


aNNeAAcMMaEEttr(5)                                             aecattr(5)
       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 chnage
               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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
















































Reference Manual              Aegis                           305





aecstate(5)                                           aecstate(5)


aNNeAAcMMsEEtate(5)                                           aecstate(5)
       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 chnage
               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.

       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.

               being_reviewed
                       The change has been developed, and is
                       being reviewed.  (There is no
                       'awaiting_review' state.)

               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.

       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.

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

       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.

       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.

               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.

                       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.

                       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.

   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.

               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, 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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/






















Reference Manual              Aegis                           315





aedir(5)                                                 aedir(5)


aNNeAAdMMiEEr(5)                                                 aedir(5)
       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/
                              config
                              _._._._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_/_c_o_n_f_i_g 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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
























Reference Manual              Aegis                           317





aefstate(5)                                           aefstate(5)


aNNeAAfMMsEEtate(5)                                           aefstate(5)
       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.

               action = (create, modify, remove);
                       This field describes what is being done
                       with the file.

               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, 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
                       placemarker, 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.)

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 is 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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/






















Reference Manual              Aegis                           322





aegis(5)                                                 aegis(5)


aNNeAAgMMiEEs(5)                                                 aegis(5)
       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.  Numbers are decimal, octal or hexadecimal, as
       for C constants.  Strings are C-style strings.  Whitespace
       (spaces, tabs and newlines) are ignored except in strings
       or as they serve to separate tokens.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/



Reference Manual              Aegis                           324





aegstate(5)                                           aegstate(5)


aNNeAAgMMsEEtate(5)                                           aegstate(5)
       aegstate - aegis state file

SSYYNNOOPPSSIISS
       /usr/com/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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
















































Reference Manual              Aegis                           326





aegis locking(1)                                 aegis locking(1)


aNNeAAgMMiEEs locking(1)                                 aegis locking(1)
       aegis locks - how locking works, and which command 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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
















































Reference Manual              Aegis                           329





aemetrics(5)                                         aemetrics(5)


aNNeAAmMMeEEtrics(5)                                         aemetrics(5)
       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

CCOOPPYYRRIIGGHHTT
       aegis version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/








Reference Manual              Aegis                           330





aepattr(5)                                             aepattr(5)


aNNeAApMMaEEttr(5)                                             aepattr(5)
       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.

       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.

               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.

               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
               preformance of file-related commands.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/





















Reference Manual              Aegis                           334





aepconf(5)                                             aepconf(5)


aNNeAApMMcEEonf(5)                                             aepconf(5)
       aepconf - aegis project configuration file

SSYYNNOOPPSSIISS
       _p_r_o_j_e_c_t/baseline/config

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.

       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.

CCOONNTTEENNTTSS
       This file contains the following fields:

       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 intgerator (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 succes, 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.


       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.  Exit status:
               ignored.

       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 techiniques, or Cook's ability to
               nominate hosts on which to execute each build
               rule.

       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.

       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 or command is successful.  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 or command is successful.  Default to
               _c_h_a_n_g_e___f_i_l_e___c_o_m_m_a_n_d if absent.  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.

       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.

                              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.  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 succes, 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 succes, 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.
               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_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_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).

       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 succes, 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 $original $input >
               $output; text $? -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.

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

       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
               -indenpendent tests).  Exit status: zero indicates
               succes, 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 succes, 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.

               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 = [{ ... }];
               This field is a list of system and machine
               architectures on which each change must
               successfully build and test.  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".

                       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.

               If the architecture field is not set, it defaults
               to
                      architecture =
                      [
                           {
                                name = "unspecified";
                                pattern = "*";
                           }
                      ];

       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.  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 _c_o_n_f_i_g 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 aesub(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 aesub(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 youself.  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 ``*'').

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

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_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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/
















































Reference Manual              Aegis                           350





aepstate(5)                                           aepstate(5)


aNNeAApMMsEEtate(5)                                           aepstate(5)
       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.

               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 = file_usage;
                       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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/

































Reference Manual              Aegis                           356





aer(5)                                                     aer(5)


aNNeAArMM(EE5)                                                     aer(5)
       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 _l_o_c_a_l statement is used to declare variables and
       initialize them to be nul.
              local 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)
                   ;

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.

       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.

       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.

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

       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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/

Reference Manual              Aegis                           366





aerptidx(5)                                           aerptidx(5)


aNNeAArMMpEEtidx(5)                                           aerptidx(5)
       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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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)


aNNeAAsMMuEEb(5)                                                 aesub(5)
       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.

       BINary_DIRectory
               The absolute path of Aegis' architecture-specific
               binary (executables) directory.  This correspondes
               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 one argument.  The value
               of the substitution will be the argument 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.

               number  This returns the number of the change.
                       (This is the default if no argument is
                       given.)

               description
                       This returns the brief description of the
                       change.

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

       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.

       Dirname
               This substitution takes 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 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 one argument.  The value
               of the substitution will be the argument with any
               upper case letters mapped to lower case.

       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.  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 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 correspondes 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 correspondes 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 one
               argument: the name of a directory within the file
               system.  Frequently used with ${left} to crop
               filenames to the file system maximum.

       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 thrid argument is the result
               (or empty if not given).  This is mostly used to
               pluralize sentences in error messages.

       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.

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

       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.

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

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

       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.

       UpCase
               This substitution takes 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.

       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)
               Substiture and print strings.

CCOOPPYYRRIIGGHHTT
       aegis version 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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)


aNNeAAtMMeEEst(5)                                               aetest(5)
       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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/


Reference Manual              Aegis                           376





aeuconf(5)                                             aeuconf(5)


aNNeAAuMMcEEonf(5)                                             aeuconf(5)
       aeuconf - user configuration file

SSYYNNOOPPSSIISS
       _$_H_O_M_E/.aegisrc

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.

   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.

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
               config 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
               wether 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.  Defaults to _`_w_h_o_a_m_i_`_@_`_h_o_s_t_n_a_m_e_` 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.

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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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/








































Reference Manual              Aegis                           380





aeustate(5)                                           aeustate(5)


aNNeAAuMMsEEtate(5)                                           aeustate(5)
       aeustate - user state file

SSYYNNOOPPSSIISS
       /usr/com/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 3.28
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 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 . . . . . . . . . . . . . . . . . . .   1
        Release Notes . . . . . . . . . . . . . . . . . . . .   6
        How to Build the Sources  . . . . . . . . . . . . . .  29
            Windows NT  . . . . . . . . . . . . . . . . . . .  41
aegis(1)                                                      project change supervisor 45
ae-sccs-put(1)                                                put file version into SCCS 53
ae_c(1) set change number . . . . . . . . . . . . . . . . . .  55
ae_p(1) set project name  . . . . . . . . . . . . . . . . . .  56
aeb(1)  build a change  . . . . . . . . . . . . . . . . . . .  57
aebuffy(1)                                                    watch for changes 64
aeca(1) modify the attributes of a change . . . . . . . . . .  65
aecd(1) change directory  . . . . . . . . . . . . . . . . . .  68
aechown(1)                                                    set change owner 71
aecomp(1)                                                     compare two changes 85
aecp(1) copy a file into a change . . . . . . . . . . . . . .  86
aecpu(1)                                                      reverse action of aecp 92
aed(1)  difference a change . . . . . . . . . . . . . . . . .  96
aedb(1) begin development of a change . . . . . . . . . . . . 101
aedbu(1)                                                      undo the effects of aedb 107
aede(1) complete development of a change  . . . . . . . . . . 110
aedeu(1)                                                      recall a change for further development 114
aedist(1)                                                     remotely distribute a change 117
aedn(1) assign a symbolic name to a project delta . . . . . . 123
aefind  search for files in directory hierarchy . . . . . . . 126
aefp(1) calculate file fingerprint  . . . . . . . . . . . . . 134
aeib(1) begin integrating a change  . . . . . . . . . . . . . 137
aeibu(1)                                                      reverse the aeib command 141
aeifail(1)                                                    fail a change integration 144
aeimport(1)                                                   import foreign repository into Aegis 148
aeipass(1)                                                    pass a change integration 154
ael(1)  list interesting things . . . . . . . . . . . . . . . 159
aelic(1)                                                      GNU General Public License 164
aemv(1) rename a file as part of a change . . . . . . . . . . 173
aena(1) add a new administrator to a project  . . . . . . . . 179
aenbr(1)                                                      create a new branch 182
aenbru(1)                                                     remove a branch 184
aenc(1) add a new change to a project . . . . . . . . . . . . 187
aencu(1)                                                      remove a change 191
aend(1) add new developers to a project . . . . . . . . . . . 194
aenf(1) add new files to be created by a change . . . . . . . 196
aenfu(1)                                                      remove new files from a change 203
aeni(1) add new integrators to a project  . . . . . . . . . . 207
aenpa(1)                                                      create a new project alias 209
aenpr(1)                                                      create a new project 211
aenrls(1)                                                     create  a  new project from an old-style project
. . . .                                                       216
aenrv(1)                                                      add new reviewers to a project 221
aent(1) add a new test to a change  . . . . . . . . . . . . . 223
aentu(1)                                                      remove new tests from a change 231
aepa(1) modify the attributes of a project  . . . . . . . . . 235
aepatch(1)                                                    send and receive changes as patches 238
aer(1)  report generator  . . . . . . . . . . . . . . . . . . 241
aera(1) remove administrators from a project  . . . . . . . . 244
aerd(1) remove developers from a project  . . . . . . . . . . 247
aerect  draw a rectangle  . . . . . . . . . . . . . . . . . . 249
aerfail(1)                                                    fail a change review 251
aeri(1) remove integrators from a project . . . . . . . . . . 255
aerm(1) add files to be deleted to a change . . . . . . . . . 257
aermpr(1)                                                     remove project 263
aermu(1)                                                      remove files to be deleted from a change 266
aerpass(1)                                                    pass a change review 271
aerpu(1)                                                      rescind a change review pass 274
aerrv(1)                                                      remove reviewers from a project 277
aet(1)  run tests . . . . . . . . . . . . . . . . . . . . . . 281
aev(1)  version information . . . . . . . . . . . . . . . . . 289
tkaeca(1)                                                     GUI interface for aeca, using TCL/TK 291
tkaegis(1)                                                    GUI interface for Aegis, using TCL/TK 293
tkaenc(1)                                                     GUI interface for aenc, using TCL/TK 298
tkaer(1)                                                      GUI tool for reviewing Aegis change  sets,  using
TCL/TK .                                                      300
aecattr(5)                                                    change attributes file format 303
aecstate(5)                                                   change state file format 306
aedir(5)                                                      directory structures 316
aefstate(5)                                                   file state file format 318
aegis(5)                                                      file format 323
aegstate(5)                                                   global state file format 325
aelock(5)                                                      how locking works, and which command  use  them
. . . .                                                       327
aemetrics(5)                                                  metrics values file format 330
aepattr(5)                                                    project attribute file format 331
aepconf(5)                                                    project configuration file format 335
aepstate(5)                                                   project state file format 351
aer(5)  report script language definition . . . . . . . . . . 357
aerptidx(5)                                                   report index file format 367
aesub(5)                                                      available command substitutions 368
aetest(5)                                                     test results file format 376
aeuconf(5)                                                    user configuration file format 377
aeustate(5)                                                   user state file 381



































Reference Manual              Aegis                            iv





Permuted Index(Aegis)                       Permuted Index(Aegis)


Paeercmpuut(e1d) Index(Aegi9s2)    aegis -CoPy file UnPdeorm-utedacItnidoenx(oAfegaiesc)p
                                         reverse
aena(1)          179    aegis -New Administrator   add a new administrator
                                               -   to a project
aenc(1)          187         aegis -New Change -   add a new change to a
                                                   project
aent(1)          223           aegis -New Test -   add a new test to a
                                                   change
aerm(1)          257        aegis -ReMove file -   add files to be deleted
                                                   to a change
aend(1)          194      aegis -New Developer -   add new developers to a
                                                   project
aenf(1)          196           aegis -New File -   add new files to be
                                                   created by a change
aeni(1)          207     aegis -New Integrator -   add new integrators to a
                                                   project
aenrv(1)         221       aegis -New ReViewer -   add new reviewers to a
                                                   project
aena(1)          179                  aegis -New   Administrator - add a new
                                                   administrator to a
                                                   project
aera(1)          244               aegis -Remove   Administrator - remove
                                                   administrators from a
                                                   project
aera(1)          244               aegis -Remove   administrators from a
                          Administrator - remove   project
aena(1)          179    aegis -New Administrator   administrator to a
                                     - add a new   project
aecattr(5)       303                               aecattr - aegis change
                                                   attributes file
tkaeca(1)        291   aegis - GUI interface for   aeca, using TCL/TK
aecpu(1)          92     aegis -CoPy file Undo -   aecp
                               reverse action of
ae_c(1)           55                               ae c - set change number
aecstate(5)      306                               aecstate - aegis change
                                                   state file
aedbu(1)         107   aegis -Develop Begin Undo   aedb
                           - undo the effects of
aedir(5)         316                               aedir - aegis directory
                                                   structures
aedist(1)        117                               aedist - remotely
                                                   distribute a change
aefstate(5)      318                               aefstate - aegis file
                                                   state file
tkaer(1)         300        aegis - GUI tool for   Aegis change sets, using
                                       reviewing   TCL/TK
tkaegis(1)       293   aegis - GUI interface for   Aegis, using TCL/TK
aegstate(5)      325                               aegstate - aegis state
                                                   file
aeibu(1)         141      aegis -Integrate Begin   aeib command
                              Undo - reverse the
aemetrics(5)     330                               aemetrics - metrics
                                                   values file format
tkaenc(1)        298   aegis - GUI interface for   aenc, using TCL/TK
aepattr(5)       331                               aepattr - project
                                                   attribute file
aepconf(5)       335                               aepconf - aegis project
                                                   configuration file
ae_p(1)           56                               ae p - set project name

aepstate(5)      351                               aepstate - project state
                                                   file
aerect(1)                                          aerect - draw a rectangle
aerptidx(5)      367                               aerptidx - report index
                                                   file format
aer(5)           357                               aer - report script
                                                   language definition
aesub(5)         368                               aesub - available command
                                                   substitutions
aesub(1)                                           aesub - substitute and
                                                   echo strings
aetest(5)        376                               aetest - test results
                                                   file format
aeuconf(5)       377                               aeuconf - user
                                                   configuration file
aeustate(5)      381                               aeustate - user state
                                                   file
aenpa(1)         209    aegis -New Project Alias   alias
                          - create a new project
aerpa(1)                   aegis -Remove Project   alias
                        Alias - remove a project
aenpa(1)         209          aegis -New Project   Alias - create a new
                                                   project alias
aerpa(1)                   aegis -Remove Project   Alias - remove a project
                                                   alias
aeclone(1)                   aegis -clone - make   an exact copy of a change
aenrls(1)        216        aegis -New ReLeaSe -   an old-style project.
                       create a new project from
aedn(1)          123         aegis -DELta NAme -   assign a symbolic name to
                                                   a project delta
aepattr(5)       331           aepattr - project   attribute file
aecattr(5)       303      aecattr - aegis change   attributes file
aeca(1)           65               aegis -Change   Attributes - modify the
                                                   attributes of a change
aepa(1)          235              aegis -Project   Attributes - modify the
                                                   attributes of a project
aeca(1)           65    aegis -Change Attributes   attributes of a change
                                    - modify the
aepa(1)          235   aegis -Project Attributes   attributes of a project
                                    - modify the
aesub(5)         368                     aesub -   available command
                                                   substitutions
aed(1)            96    aegis -DIFFerence - find   baseline
                           differences between a
                                  change and the
aedb(1)          101              aegis -Develop   Begin - begin development
                                                   of a change
aeib(1)          137            aegis -Integrate   Begin - begin integrating
                                                   a change
aedb(1)          101      aegis -Develop Begin -   begin development of a
                                                   change
aeib(1)          137    aegis -Integrate Begin -   begin integrating a
                                                   change
aeibu(1)         141            aegis -Integrate   Begin Undo - reverse the
                                                   aeib command
aedbu(1)         107              aegis -Develop   Begin Undo - undo the
                                                   effects of aedb
aed(1)            96    aegis -DIFFerence - find   between a change and the
                                     differences   baseline
aenbr(1)         182         aegis -New BRanch -   branch
                                    create a new
aenbru(1)        184    aegis -New BRanch Undo -   branch
                                        remove a
aenbr(1)         182                  aegis -New   BRanch - create a new
                                                   branch

aenbru(1)        184                  aegis -New   BRanch Undo - remove a
                                                   branch
aeb(1)            57              aegis -Build -   build a change
aeb(1)            57                     aegis -   Build - build a change
aefp(1)          134                     aegis -   calculate file
                                                   fingerprint
aedist(1)        117           aedist - remotely   change
                                    distribute a
aeb(1)            57      aegis -Build - build a   change
aeca(1)           65    aegis -Change Attributes   change
                         - modify the attributes
                                            of a
aeclone(1)                aegis -clone - make an   change
                                 exact copy of a
aecp(1)           86   aegis -CoPy file - copy a   change
                                     file into a
aedb(1)          101      aegis -Develop Begin -   change
                          begin development of a
aede(1)          110        aegis -Develop End -   change
                       complete development of a
aeib(1)          137    aegis -Integrate Begin -   change
                             begin integrating a
aemv(1)          173   aegis -MoVe file - rename   change
                             a file as part of a
aenf(1)          196   aegis -New File - add new   change
                        files to be created by a
aenfu(1)         203      aegis -New File Undo -   change
                         remove new files from a
aent(1)          223     aegis -New Test - add a   change
                                   new test to a
aentu(1)         231      aegis -New Test Undo -   change
                         remove new tests from a
aerm(1)          257    aegis -ReMove file - add   change
                        files to be deleted to a
aermu(1)         266   aegis -ReMove file Undo -   change
                              remove files to be
                                  deleted from a
aenc(1)          187                  aegis -New   Change - add a new change
                                                   to a project
aed(1)            96    aegis -DIFFerence - find   change and the baseline
                           differences between a
aecattr(5)       303             aecattr - aegis   change attributes file
aeca(1)           65                     aegis -   Change Attributes -
                                                   modify the attributes of
                                                   a change
aecd(1)           68   aegis -Change Directory -   change directory
aecd(1)           68                     aegis -   Change Directory - change
                                                   directory
aedeu(1)         114   aegis -Develop End Undo -   change for further
                                        recall a   development
aencu(1)         191    aegis -New Change Undo -   change from a project
                                    remove a new
aeifail(1)       144     aegis -Integrate Fail -   change integration
                                          fail a
aeipass(1)       154     aegis -Integrate Pass -   change integration
                                          pass a
ae_c(1)           55                  ae c - set   change number
aechown(1)        71   aegis -Change Owner - set   change owner
aechown(1)        71                     aegis -   Change Owner - set change
                                                   owner
aerfail(1)       251   aegis -Review FAIL - fail   change review
                                               a
aerpass(1)       271   aegis -Review PASS - pass   change review
                                               a


aerpu(1)         274   aegis -Review Pass Undo -   change review pass
                                       rescind a
aecomp(1)         85         aegis - compare two   changes
aebuffy(1)        64           aegis - watch for   changes
aepatch(1)       238    aegis - send and receive   changes as patches
tkaer(1)         300        aegis - GUI tool for   change sets, using TCL/TK
                                 reviewing Aegis
aecstate(5)      306            aecstate - aegis   change state file
aegis(1)          45             aegis - project   change supervisor
aenc(1)          187   aegis -New Change - add a   change to a project
                                             new
aencu(1)         191                  aegis -New   Change Undo - remove a
                                                   new change from a project
aeclean(1)                               aegis -   CLEan - clean files from
                                                   development directory
aeclean(1)                        aegis -CLEan -   clean files from
                                                   development directory
aeclone(1)                               aegis -   clone - make an exact
                                                   copy of a change
aeibu(1)         141      aegis -Integrate Begin   command
                         Undo - reverse the aeib
aesub(5)         368           aesub - available   command substitutions
aelock(5)        327   aegis locks - how locking   command use them
                                works, and which
aecomp(1)         85                     aegis -   compare two changes
aede(1)          110        aegis -Develop End -   complete development of a
                                                   change
aepconf(5)       335     aepconf - aegis project   configuration file
aeuconf(5)       377              aeuconf - user   configuration file
aecp(1)           86          aegis -CoPy file -   copy a file into a change
aecp(1)           86                     aegis -   CoPy file - copy a file
                                                   into a change
aecpu(1)          92                     aegis -   CoPy file Undo - reverse
                                                   action of aecp
aeclone(1)                aegis -clone - make an   copy of a change
                                           exact
aenbr(1)         182         aegis -New BRanch -   create a new branch
aenpr(1)         211        aegis -New PRoject -   create a new project
aenpa(1)         209    aegis -New Project Alias   create a new project
                                               -   alias
aenrls(1)        216        aegis -New ReLeaSe -   create a new project from
                                                   an old-style project.
aenf(1)          196   aegis -New File - add new   created by a change
                                     files to be
ae_c(1)           55                          ae   c - set change number
aer(5)           357         aer - report script   definition
                                        language
aermu(1)         266   aegis -ReMove file Undo -   deleted from a change
                              remove files to be
aerm(1)          257    aegis -ReMove file - add   deleted to a change
                                     files to be
aedn(1)          123         aegis -DELta NAme -   delta
                       assign a symbolic name to
                                       a project
aedn(1)          123                     aegis -   DELta NAme - assign a
                                                   symbolic name to a
                                                   project delta
aedb(1)          101                     aegis -   Develop Begin - begin
                                                   development of a change
aedbu(1)         107                     aegis -   Develop Begin Undo - undo
                                                   the effects of aedb
aede(1)          110                     aegis -   Develop End - complete
                                                   development of a change



aedeu(1)         114                     aegis -   Develop End Undo - recall
                                                   a change for further
                                                   development
aend(1)          194                  aegis -New   Developer - add new
                                                   developers to a project
aerd(1)          247               aegis -Remove   Developer - remove
                                                   developers from a project
aerd(1)          247   aegis -Remove Developer -   developers from a project
                                          remove
aend(1)          194      aegis -New Developer -   developers to a project
                                         add new
aedeu(1)         114   aegis -Develop End Undo -   development
                             recall a change for
                                         further
aeclean(1)                  aegis -CLEan - clean   development directory
                                      files from
aedb(1)          101      aegis -Develop Begin -   development of a change
                                           begin
aede(1)          110        aegis -Develop End -   development of a change
                                        complete
aed(1)            96                     aegis -   DIFFerence - find
                                                   differences between a
                                                   change and the baseline
aed(1)            96    aegis -DIFFerence - find   differences between a
                                                   change and the baseline
aecd(1)           68   aegis -Change Directory -   directory
                                          change
aeclean(1)                  aegis -CLEan - clean   directory
                          files from development
aecd(1)           68               aegis -Change   Directory - change
                                                   directory
aefind(1)               aegis - search for files   directory hierarchy
                                              in
aedir(5)         316               aedir - aegis   directory structures
aedist(1)        117           aedist - remotely   distribute a change
aerect(1)                               aerect -   draw a rectangle
aesub(1)                  aesub - substitute and   echo strings
aedbu(1)         107   aegis -Develop Begin Undo   effects of aedb
                                      - undo the
aede(1)          110              aegis -Develop   End - complete
                                                   development of a change
aedeu(1)         114              aegis -Develop   End Undo - recall a
                                                   change for further
                                                   development
aeclone(1)                aegis -clone - make an   exact copy of a change
aeifail(1)       144     aegis -Integrate Fail -   fail a change integration
aerfail(1)       251        aegis -Review FAIL -   fail a change review
aeifail(1)       144            aegis -Integrate   Fail - fail a change
                                                   integration
aerfail(1)       251               aegis -Review   FAIL - fail a change
                                                   review
aecattr(5)       303      aecattr - aegis change   file
                                      attributes
aecstate(5)      306     aecstate - aegis change   file
                                           state
aefstate(5)      318       aefstate - aegis file   file
                                           state
aegstate(5)      325      aegstate - aegis state   file
aepattr(5)       331           aepattr - project   file
                                       attribute
aepconf(5)       335     aepconf - aegis project   file
                                   configuration
aepstate(5)      351    aepstate - project state   file
aeuconf(5)       377              aeuconf - user   file
                                   configuration

aeustate(5)      381       aeustate - user state   file
aerm(1)          257               aegis -ReMove   file - add files to be
                                                   deleted to a change
aenf(1)          196                  aegis -New   File - add new files to
                                                   be created by a change
aemv(1)          173   aegis -MoVe file - rename   file as part of a change
                                               a
aecp(1)           86                 aegis -CoPy   file - copy a file into a
                                                   change
aefp(1)          134           aegis - calculate   file fingerprint
aegis(5)         323                     aegis -   file format
aemetrics(5)     330         aemetrics - metrics   file format
                                          values
aerptidx(5)      367     aerptidx - report index   file format
aetest(5)        376       aetest - test results   file format
aecp(1)           86   aegis -CoPy file - copy a   file into a change
aemv(1)          173                 aegis -MoVe   file - rename a file as
                                                   part of a change
aenfu(1)         203      aegis -New File Undo -   files from a change
                                      remove new
aeclean(1)                  aegis -CLEan - clean   files from development
                                                   directory
aefind(1)                     aegis - search for   files in directory
                                                   hierarchy
aefstate(5)      318            aefstate - aegis   file state file
aenf(1)          196   aegis -New File - add new   files to be created by a
                                                   change
aermu(1)         266   aegis -ReMove file Undo -   files to be deleted from
                                          remove   a change
aerm(1)          257    aegis -ReMove file - add   files to be deleted to a
                                                   change
aermu(1)         266               aegis -ReMove   file Undo - remove files
                                                   to be deleted from a
                                                   change
aenfu(1)         203                  aegis -New   File Undo - remove new
                                                   files from a change
aecpu(1)          92                 aegis -CoPy   file Undo - reverse
                                                   action of aecp
aed(1)            96         aegis -DIFFerence -   find differences between
                                                   a change and the baseline
aefp(1)          134      aegis - calculate file   fingerprint
tkaeca(1)        291       aegis - GUI interface   for aeca, using TCL/TK
tkaegis(1)       293       aegis - GUI interface   for Aegis, using TCL/TK
tkaenc(1)        298       aegis - GUI interface   for aenc, using TCL/TK
aebuffy(1)        64               aegis - watch   for changes
aeimport(1)      148              aegis - import   foreign repository into
aefind(1)                         aegis - search   for files in directory
                                                   hierarchy
aedeu(1)         114   aegis -Develop End Undo -   for further development
                                 recall a change
aegis(5)         323                aegis - file   format
aemetrics(5)     330         aemetrics - metrics   format
                                     values file
aerptidx(5)      367     aerptidx - report index   format
                                            file
aetest(5)        376       aetest - test results   format
                                            file
tkaer(1)         300            aegis - GUI tool   for reviewing Aegis
                                                   change sets, using TCL/TK
aenfu(1)         203      aegis -New File Undo -   from a change
                                remove new files
aentu(1)         231      aegis -New Test Undo -   from a change
                                remove new tests



aermu(1)         266   aegis -ReMove file Undo -   from a change
                              remove files to be
                                         deleted
aenrls(1)        216        aegis -New ReLeaSe -   from an old-style
                            create a new project   project.
aencu(1)         191    aegis -New Change Undo -   from a project
                             remove a new change
aera(1)          244               aegis -Remove   from a project
                          Administrator - remove
                                  administrators
aerd(1)          247   aegis -Remove Developer -   from a project
                               remove developers
aeri(1)          255    aegis -Remove Integrator   from a project
                            - remove integrators
aerrv(1)         277    aegis -Remove ReViewer -   from a project
                                remove reviewers
aeclean(1)                  aegis -CLEan - clean   from development
                                           files   directory
aedeu(1)         114   aegis -Develop End Undo -   further development
                             recall a change for
aer(1)           241      aegis -RePorT - report   generator
aev(1)           289            aegis -VERSion -   give version information
tkaeca(1)        291                     aegis -   GUI interface for aeca,
                                                   using TCL/TK
tkaegis(1)       293                     aegis -   GUI interface for Aegis,
                                                   using TCL/TK
tkaenc(1)        298                     aegis -   GUI interface for aenc,
                                                   using TCL/TK
tkaer(1)         300                     aegis -   GUI tool for reviewing
                                                   Aegis change sets, using
                                                   TCL/TK
aefind(1)               aegis - search for files   hierarchy
                                    in directory
aelock(5)        327               aegis locks -   how locking works, and
                                                   which command use them
aeimport(1)      148                     aegis -   import foreign repository
                                                   into
aerptidx(5)      367           aerptidx - report   index file format
aefind(1)               aegis - search for files   in directory hierarchy
aev(1)           289       aegis -VERSion - give   information
                                         version
aeib(1)          137                     aegis -   Integrate Begin - begin
                                                   integrating a change
aeibu(1)         141                     aegis -   Integrate Begin Undo -
                                                   reverse the aeib command
aeifail(1)       144                     aegis -   Integrate Fail - fail a
                                                   change integration
aeipass(1)       154                     aegis -   Integrate Pass - pass a
                                                   change integration
aeib(1)          137    aegis -Integrate Begin -   integrating a change
                                           begin
aeifail(1)       144     aegis -Integrate Fail -   integration
                                   fail a change
aeipass(1)       154     aegis -Integrate Pass -   integration
                                   pass a change
aeni(1)          207                  aegis -New   Integrator - add new
                                                   integrators to a project
aeri(1)          255               aegis -Remove   Integrator - remove
                                                   integrators from a
                                                   project
aeri(1)          255    aegis -Remove Integrator   integrators from a
                                        - remove   project
aeni(1)          207     aegis -New Integrator -   integrators to a project
                                         add new


ael(1)           159          aegis -List - list   interesting things
                                      (possibly)
tkaeca(1)        291                 aegis - GUI   interface for aeca, using
                                                   TCL/TK
tkaegis(1)       293                 aegis - GUI   interface for Aegis,
                                                   using TCL/TK
tkaenc(1)        298                 aegis - GUI   interface for aenc, using
                                                   TCL/TK
aeimport(1)      148      aegis - import foreign   into
                                      repository
aecp(1)           86   aegis -CoPy file - copy a   into a change
                                            file
aer(5)           357         aer - report script   language definition
ael(1)           159                     aegis -   List - list (possibly)
                                                   interesting things
ael(1)           159               aegis -List -   list (possibly)
                                                   interesting things
aelock(5)        327           aegis locks - how   locking works, and which
                                                   command use them
aelock(5)        327                       aegis   locks - how locking
                                                   works, and which command
                                                   use them
aeclone(1)                        aegis -clone -   make an exact copy of a
                                                   change
aemetrics(5)     330                 aemetrics -   metrics values file
                                                   format
aeca(1)           65    aegis -Change Attributes   modify the attributes of
                                               -   a change
aepa(1)          235   aegis -Project Attributes   modify the attributes of
                                               -   a project
aemv(1)          173                     aegis -   MoVe file - rename a file
                                                   as part of a change
ae_p(1)           56          ae p - set project   name
aedn(1)          123                aegis -DELta   NAme - assign a symbolic
                                                   name to a project delta
aedn(1)          123         aegis -DELta NAme -   name to a project delta
                               assign a symbolic
aena(1)          179                     aegis -   New Administrator - add a
                                                   new administrator to a
                                                   project
aena(1)          179    aegis -New Administrator   new administrator to a
                                         - add a   project
aenbr(1)         182         aegis -New BRanch -   new branch
                                        create a
aenbr(1)         182                     aegis -   New BRanch - create a new
                                                   branch
aenbru(1)        184                     aegis -   New BRanch Undo - remove
                                                   a branch
aenc(1)          187                     aegis -   New Change - add a new
                                                   change to a project
aencu(1)         191    aegis -New Change Undo -   new change from a project
                                        remove a
aenc(1)          187   aegis -New Change - add a   new change to a project
aencu(1)         191                     aegis -   New Change Undo - remove
                                                   a new change from a
                                                   project
aend(1)          194                     aegis -   New Developer - add new
                                                   developers to a project
aend(1)          194      aegis -New Developer -   new developers to a
                                             add   project
aenf(1)          196                     aegis -   New File - add new files
                                                   to be created by a change
aenfu(1)         203      aegis -New File Undo -   new files from a change
                                          remove


aenf(1)          196       aegis -New File - add   new files to be created
                                                   by a change
aenfu(1)         203                     aegis -   New File Undo - remove
                                                   new files from a change
aeni(1)          207                     aegis -   New Integrator - add new
                                                   integrators to a project
aeni(1)          207     aegis -New Integrator -   new integrators to a
                                             add   project
aenpr(1)         211        aegis -New PRoject -   new project
                                        create a
aenpa(1)         209    aegis -New Project Alias   new project alias
                                      - create a
aenpa(1)         209                     aegis -   New Project Alias -
                                                   create a new project
                                                   alias
aenpr(1)         211                     aegis -   New PRoject - create a
                                                   new project
aenrls(1)        216        aegis -New ReLeaSe -   new project from an old-
                                        create a   style project.
aenrls(1)        216                     aegis -   New ReLeaSe - create a
                                                   new project from an old-
                                                   style project.
aenrv(1)         221                     aegis -   New ReViewer - add new
                                                   reviewers to a project
aenrv(1)         221   aegis -New ReViewer - add   new reviewers to a
                                                   project
aent(1)          223                     aegis -   New Test - add a new test
                                                   to a change
aentu(1)         231      aegis -New Test Undo -   new tests from a change
                                          remove
aent(1)          223     aegis -New Test - add a   new test to a change
aentu(1)         231                     aegis -   New Test Undo - remove
                                                   new tests from a change
ae_c(1)           55           ae c - set change   number
aenrls(1)        216        aegis -New ReLeaSe -   old-style project.
                       create a new project from
                                              an
aechown(1)        71   aegis -Change Owner - set   owner
                                          change
aechown(1)        71               aegis -Change   Owner - set change owner
aemv(1)          173   aegis -MoVe file - rename   part of a change
                                       a file as
aerpu(1)         274   aegis -Review Pass Undo -   pass
                         rescind a change review
aeipass(1)       154     aegis -Integrate Pass -   pass a change integration
aerpass(1)       271        aegis -Review PASS -   pass a change review
aeipass(1)       154            aegis -Integrate   Pass - pass a change
                                                   integration
aerpass(1)       271               aegis -Review   PASS - pass a change
                                                   review
aerpu(1)         274               aegis -Review   Pass Undo - rescind a
                                                   change review pass
aepatch(1)       238    aegis - send and receive   patches
                                      changes as
ael(1)           159        aegis -List - list (   possibly) interesting
                                                   things
aena(1)          179    aegis -New Administrator   project
                       - add a new administrator
                                            to a
aenc(1)          187   aegis -New Change - add a   project
                                 new change to a
aencu(1)         191    aegis -New Change Undo -   project
                        remove a new change from
                                               a


aend(1)          194      aegis -New Developer -   project
                         add new developers to a
aeni(1)          207     aegis -New Integrator -   project
                        add new integrators to a
aenpr(1)         211        aegis -New PRoject -   project
                                    create a new
aenrls(1)        216        aegis -New ReLeaSe -   project.
                       create a new project from
                                    an old-style
aenrv(1)         221   aegis -New ReViewer - add   project
                              new reviewers to a
aepa(1)          235   aegis -Project Attributes   project
                         - modify the attributes
                                            of a
aera(1)          244               aegis -Remove   project
                          Administrator - remove
                           administrators from a
aerd(1)          247   aegis -Remove Developer -   project
                        remove developers from a
aeri(1)          255    aegis -Remove Integrator   project
                       - remove integrators from
                                               a
aermpr(1)        263     aegis -ReMove PRoject -   project
                                          remove
aerrv(1)         277    aegis -Remove ReViewer -   project
                         remove reviewers from a
aenpa(1)         209    aegis -New Project Alias   project alias
                                  - create a new
aerpa(1)                   aegis -Remove Project   project alias
                                Alias - remove a
aenpa(1)         209                  aegis -New   Project Alias - create a
                                                   new project alias
aerpa(1)                           aegis -Remove   Project Alias - remove a
                                                   project alias
aepattr(5)       331                   aepattr -   project attribute file
aepa(1)          235                     aegis -   Project Attributes -
                                                   modify the attributes of
                                                   a project
aegis(1)          45                     aegis -   project change supervisor
aepconf(5)       335             aepconf - aegis   project configuration
                                                   file
aenpr(1)         211                  aegis -New   PRoject - create a new
                                                   project
aedn(1)          123         aegis -DELta NAme -   project delta
                       assign a symbolic name to
                                               a
aenrls(1)        216        aegis -New ReLeaSe -   project from an old-style
                                    create a new   project.
ae_p(1)           56                  ae p - set   project name
aermpr(1)        263               aegis -ReMove   PRoject - remove project
aepstate(5)      351                  aepstate -   project state file
ae_p(1)           56                          ae   p - set project name
ae-sccs-put(1)    53                     aegis -   put sccs version
aedeu(1)         114   aegis -Develop End Undo -   recall a change for
                                                   further development
aepatch(1)       238            aegis - send and   receive changes as
                                                   patches
aerect(1)                        aerect - draw a   rectangle
aenrls(1)        216                  aegis -New   ReLeaSe - create a new
                                                   project from an old-style
                                                   project.
aedist(1)        117                    aedist -   remotely distribute a
                                                   change
aenbru(1)        184    aegis -New BRanch Undo -   remove a branch


aera(1)          244                     aegis -   Remove Administrator -
                                                   remove administrators
                                                   from a project
aera(1)          244               aegis -Remove   remove administrators
                                 Administrator -   from a project
aencu(1)         191    aegis -New Change Undo -   remove a new change from
                                                   a project
aerpa(1)                   aegis -Remove Project   remove a project alias
                                         Alias -
aerd(1)          247                     aegis -   Remove Developer - remove
                                                   developers from a project
aerd(1)          247   aegis -Remove Developer -   remove developers from a
                                                   project
aerm(1)          257                     aegis -   ReMove file - add files
                                                   to be deleted to a change
aermu(1)         266   aegis -ReMove file Undo -   remove files to be
                                                   deleted from a change
aermu(1)         266                     aegis -   ReMove file Undo - remove
                                                   files to be deleted from
                                                   a change
aeri(1)          255                     aegis -   Remove Integrator -
                                                   remove integrators from a
                                                   project
aeri(1)          255    aegis -Remove Integrator   remove integrators from a
                                               -   project
aenfu(1)         203      aegis -New File Undo -   remove new files from a
                                                   change
aentu(1)         231      aegis -New Test Undo -   remove new tests from a
                                                   change
aermpr(1)        263     aegis -ReMove PRoject -   remove project
aerpa(1)                                 aegis -   Remove Project Alias -
                                                   remove a project alias
aermpr(1)        263                     aegis -   ReMove PRoject - remove
                                                   project
aerrv(1)         277                     aegis -   Remove ReViewer - remove
                                                   reviewers from a project
aerrv(1)         277    aegis -Remove ReViewer -   remove reviewers from a
                                                   project
aemv(1)          173          aegis -MoVe file -   rename a file as part of
                                                   a change
aer(1)           241             aegis -RePorT -   report generator
aerptidx(5)      367                  aerptidx -   report index file format
aer(1)           241                     aegis -   RePorT - report generator
aer(5)           357                       aer -   report script language
                                                   definition
aeimport(1)      148      aegis - import foreign   repository into
aerpu(1)         274   aegis -Review Pass Undo -   rescind a change review
                                                   pass
aetest(5)        376               aetest - test   results file format
aecpu(1)          92     aegis -CoPy file Undo -   reverse action of aecp
aeibu(1)         141      aegis -Integrate Begin   reverse the aeib command
                                          Undo -
aerfail(1)       251   aegis -Review FAIL - fail   review
                                        a change
aerpass(1)       271   aegis -Review PASS - pass   review
                                        a change
aenrv(1)         221                  aegis -New   ReViewer - add new
                                                   reviewers to a project
aerrv(1)         277               aegis -Remove   ReViewer - remove
                                                   reviewers from a project
aerrv(1)         277    aegis -Remove ReViewer -   reviewers from a project
                                          remove
aenrv(1)         221   aegis -New ReViewer - add   reviewers to a project
                                             new


aerfail(1)       251                     aegis -   Review FAIL - fail a
                                                   change review
tkaer(1)         300        aegis - GUI tool for   reviewing Aegis change
                                                   sets, using TCL/TK
aerpu(1)         274   aegis -Review Pass Undo -   review pass
                                rescind a change
aerpass(1)       271                     aegis -   Review PASS - pass a
                                                   change review
aerpu(1)         274                     aegis -   Review Pass Undo -
                                                   rescind a change review
                                                   pass
aet(1)           281               aegis -Test -   run tests
ae-sccs-put(1)    53                 aegis - put   sccs version
aer(5)           357                aer - report   script language
                                                   definition
aefind(1)                                aegis -   search for files in
                                                   directory hierarchy
aepatch(1)       238                     aegis -   send and receive changes
                                                   as patches
ae_c(1)           55                      ae c -   set change number
aechown(1)        71       aegis -Change Owner -   set change owner
ae_p(1)           56                      ae p -   set project name
tkaer(1)         300        aegis - GUI tool for   sets, using TCL/TK
                          reviewing Aegis change
aecstate(5)      306     aecstate - aegis change   state file
aefstate(5)      318       aefstate - aegis file   state file
aegstate(5)      325            aegstate - aegis   state file
aepstate(5)      351          aepstate - project   state file
aeustate(5)      381             aeustate - user   state file
aesub(1)                  aesub - substitute and   strings
                                            echo
aedir(5)         316     aedir - aegis directory   structures
aenrls(1)        216        aegis -New ReLeaSe -   style project.
                       create a new project from
                                         an old-
aesub(1)                                 aesub -   substitute and echo
                                                   strings
aesub(5)         368   aesub - available command   substitutions
aegis(1)          45      aegis - project change   supervisor
aedn(1)          123         aegis -DELta NAme -   symbolic name to a
                                        assign a   project delta
tkaeca(1)        291   aegis - GUI interface for   TCL/TK
                                     aeca, using
tkaegis(1)       293   aegis - GUI interface for   TCL/TK
                                    Aegis, using
tkaenc(1)        298   aegis - GUI interface for   TCL/TK
                                     aenc, using
tkaer(1)         300        aegis - GUI tool for   TCL/TK
                          reviewing Aegis change
                                     sets, using
aent(1)          223                  aegis -New   Test - add a new test to
                                                   a change
aetest(5)        376                    aetest -   test results file format
aet(1)           281                     aegis -   Test - run tests
aet(1)           281           aegis -Test - run   tests
aentu(1)         231      aegis -New Test Undo -   tests from a change
                                      remove new
aent(1)          223     aegis -New Test - add a   test to a change
                                             new
aentu(1)         231                  aegis -New   Test Undo - remove new
                                                   tests from a change
aelock(5)        327   aegis locks - how locking   them
                        works, and which command
                                             use


ael(1)           159          aegis -List - list   things
                          (possibly) interesting
tkaeca(1)        291   aegis - GUI interface for   TK
                                aeca, using TCL/
tkaegis(1)       293   aegis - GUI interface for   TK
                               Aegis, using TCL/
tkaenc(1)        298   aegis - GUI interface for   TK
                                aenc, using TCL/
tkaer(1)         300        aegis - GUI tool for   TK
                          reviewing Aegis change
                                sets, using TCL/
tkaer(1)         300                 aegis - GUI   tool for reviewing Aegis
                                                   change sets, using TCL/TK
aecomp(1)         85             aegis - compare   two changes
aedeu(1)         114          aegis -Develop End   Undo - recall a change
                                                   for further development
aenbru(1)        184           aegis -New BRanch   Undo - remove a branch
aencu(1)         191           aegis -New Change   Undo - remove a new
                                                   change from a project
aermu(1)         266          aegis -ReMove file   Undo - remove files to be
                                                   deleted from a change
aenfu(1)         203             aegis -New File   Undo - remove new files
                                                   from a change
aentu(1)         231             aegis -New Test   Undo - remove new tests
                                                   from a change
aerpu(1)         274          aegis -Review Pass   Undo - rescind a change
                                                   review pass
aecpu(1)          92            aegis -CoPy file   Undo - reverse action of
                                                   aecp
aeibu(1)         141      aegis -Integrate Begin   Undo - reverse the aeib
                                                   command
aedbu(1)         107   aegis -Develop Begin Undo   undo the effects of aedb
                                               -
aedbu(1)         107        aegis -Develop Begin   Undo - undo the effects
                                                   of aedb
aeuconf(5)       377                   aeuconf -   user configuration file
aeustate(5)      381                  aeustate -   user state file
aelock(5)        327   aegis locks - how locking   use them
                        works, and which command
tkaeca(1)        291   aegis - GUI interface for   using TCL/TK
                                           aeca,
tkaegis(1)       293   aegis - GUI interface for   using TCL/TK
                                          Aegis,
tkaenc(1)        298   aegis - GUI interface for   using TCL/TK
                                           aenc,
tkaer(1)         300        aegis - GUI tool for   using TCL/TK
                          reviewing Aegis change
                                           sets,
aemetrics(5)     330         aemetrics - metrics   values file format
ae-sccs-put(1)    53            aegis - put sccs   version
aev(1)           289                     aegis -   VERSion - give version
                                                   information
aev(1)           289       aegis -VERSion - give   version information
aebuffy(1)        64                     aegis -   watch for changes
aelock(5)        327   aegis locks - how locking   which command use them
                                      works, and
aelock(5)        327   aegis locks - how locking   works, and which command
                                                   use them



Reference Manual              Aegis                       -cmxcvi




