Read Me(Aegis)                                                  Read Me(Aegis)



NNAAMMEE
        aegis - project change supervisor
        Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Peter
        Miller

        _A_e_g_i_s is distributed under the terms of the GNU General Public
        License.  See the LICENSE section, below, for more details.

        aaeeggiiss (ee.j.iz) _n_._, a protection, a defense.

DDEESSCCRRIIPPTTIIOONN
        _A_e_g_i_s is a CASE tool with a difference.  In the spirit of the UNIX
        Operating System, _A_e_g_i_s is a small component designed to work with
        other programs.

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

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

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

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

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

AARRCCHHIIVVEE SSIITTEE
        The latest version of _A_e_g_i_s is available by HTTP from:

                URL:    http://www.canb.auug.org.au/~millerp/
                File:   aegis.html            # the Aegis page
                File:   aegis.4.24.3.README   # Description, from tar file
                File:   aegis.4.24.3.lsm      # Description, in LSM format
                File:   aegis.4.24.3.ae       # the complete source, aedist format
                File:   aegis.4.24.3.spec     # RedHat package specification
                File:   aegis.4.24.3.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.

   MMiirrrroorrss
        See http://www.canb.auug.org.au/~millerp/ for a list of mirror sites.

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

                URL:    ftp://metalab.unc.edu/pub/Linux/devel/vc/
                File:   aegis.4.24.3.README   # Description, from tar file
                File:   aegis.4.24.3.lsm      # Description, in LSM format
                File:   aegis.4.24.3.spec     # RedHat package specification
                File:   aegis.4.24.3.ae       # the complete source, aedist format
                File:   aegis.4.24.3.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).

MMAAIILLIINNGG LLIISSTT
        A mailing list has been created so that users of _A_e_g_i_s may exchange
        ideas about how to use _A_e_g_i_s.  Discussion may include, but is not
        limited to: bugs, enhancements, and applications.  The list is not
        moderated.

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

   HHooww TToo SSuubbssccrriibbee
        To subscribe to this mailing list, visit the Aegis-users mailing list
        page (http://www.auug.org.au/mailman/listinfo/aegis-users) and go
        through the ssuubbssccrriibbee dialogue.

   AArrcchhiivvee
        The mailing list is archived at eGroups.  The URL is
        http://www.egroups.com/list/aegis-users/info.html

   NNoo FFiilleess BByy EEMMaaiill
        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.

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

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

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

   GGeeooggrraapphhiiccaallllyy DDiissttrriibbuutteedd DDeevveellooppmmeenntt
        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.

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

LLIICCEENNSSEE
        _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 3 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, see <http://www.gnu.org/licenses/>.

        It should be in the _L_I_C_E_N_S_E file included in this distribution.

AAUUTTHHOORR
        Peter MillerE-Mail:   millerp@canb.auug.org.au
        /\/\*                                     WWW:   http://www.canb.auug.org.au/~millerp/

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

   UUppggrraaddiinngg
        In general, all the machines on your network need to be running the
        same release of Aegis.  While the database format is backwards
        compatible, it is rarely forwards compatible in the face of new
        capabilities.

   VVeerrssiioonn 44..2244..33 ((0088--MMaarr--22001100))
        * This release fixes definitly CVE-2008-4938 since the fix included in
        4.24.1 was incomplete.

        * The _a_e_c_p(1) command has been corrected to not issue a multiple user
        permission set bug when invoked as: aecp -ind -o.

        * The _a_e_i_b(1) command has been modified to no copy into the baseline
        derived files tracked by Aegis.

        * A bug has been fixed that made it possible to delete the difference
        files for removed files, making it impossible to develop_end the
        change.

        * It is now possible to build Aegis on Debian under pbuilder.

        * Various portability related improvement.

   VVeerrssiioonn 44..2244..22 ((2255--JJuunn--22000099))
        * The branch fstate can contain fake transparent entries when a change
        not yet integrated modifies for the first time in the branch a file.

        It is possible that such entries cause troubles if the project is
        configured to write the pfstate file.  To avoid such troubles the fake
        transparent entries are stripped on the fly when reading the pfstate
        file.

        The way the the pfstate file is written is not modified.

        * The Italian translation of error messages is now available.

        * The Vietnamese and Dutch error messages has been updated.

        * The _a_e_r_e_v_m_l(1) command was incorrectly printing twice user defined
        attributes. This behavior has been fixed.

        * The _a_e_c_l_e_a_n(1) command was incorrectly checking the patterns against
        the absolute name of the files.  This behavior has been fixed.

        * The _a_e_l_o_c_k(1) man page was incorrectly reporting the attribute name
        aelock use.  This has been fixed.

        * The _a_e_s_u_b(5) man page now reference _a_e_u_c_o_n_f(5) in the email address
        section.

        * The _a_e_d_i_s_t(1) command is now more robust when handling renamed
        files.

        * The t0228a-matt.sh test script has been made more robust with
        respect to different behavior of libmagic.

        * The t0127a.sh test script (aeimport vs. sccs) has been fixed.

        * A number of memory related bugs has been fixed.

        * Some typo has been corrected in the _a_e_-_r_e_p_o_-_c_i(1) man page.

        * The build process has been improved to give more informative
        messages when a new aegis developer populate his repository for the
        first time.

   VVeerrssiioonn 44..2244..11 ((2244--SSeepp--22000088))
        SSeeccuurriittyy:: [ #2079025 ] This update fix two security problems
        discovered by the Debian crew (Debian #496400 and #496402,
        CVE-2008-4938) You are encouraged to upgrade.

        RReemmoovveedd ffuunnccttiioonnaalliittiieess:: In response to one of the two above security
        problem, the aegis.cgi program has been removed.

        * Test 222 has been improved to cope with some different ways SVN
        stores revision information, remaining backwards compatible.

        * A bug in the distributed development machinery has been fixed: it no
        longer add the file UUID to created files without an UUID in the
        remote repository.  This prevents the existence of the same file with
        different UUIDs in different repositories.

        * [ #1942614 ] Some build problem discovered by the Debian crew has
        been fixed.  Specifically: improve 'make clean' (Debian bug 442482),
        add a minor man-page (Debian patch), make test in ae_diff2htm portable
        (Debian bug 464484), fix whoami test in etc/test.sh (Debian bug
        393624), add shell magic to ae-cvs-ci (Debian patch).

        * The aediff command now behave as expected when invoked for a file
        that, due to a bug in aeipass, is present with two different UUIDs in
        the repository.  Previously it used to generate a diff between the
        empty file and the second revision of the file.

        * A bug has been fixed in aefind, it no longer segfaults when given
        the -baseline option.

        * A bug has been fixed in aefinish: it no longer segfault if a branch
        was to be finished and it contained a transparent file.

        * A bug has been fixed in the aecp -ind -output - option, it no longer
        tries to set the permission mode of stdout.

        * A bug has been fixed in aeib, it no longer complains that
        transparent files have been tampered with.

        * A couple of memory leaks introduced with the time safe work has been
        plugged.

        * The makefile has been changed to use DESTDIR (advocated by GNU).

        * A test script has been improved to work with older bzip2.

        * Small improvement to test_funcs, reintroduce the chown invocation
        for the directory under $work/.

        * This change set modify the aefinish command to jump the project home
        path instead of the user home directory (since it may be inaccessible)

        * This aegis.spec file (used for RPM builds) has been improved.

   VVeerrssiioonn 44..2244 ((0099--MMaarr--22000088))
        * Numerous portability improvements.

        * Numerous improvements to the history reconstruction code.

        * Numerous improvements and bug fixes to the distributed development
        code.  See _a_e_d_i_s_t(1), _a_e_g_e_t(1), _a_e_t_a_r(1) and _a_e_p_a_t_c_h(1) for more
        information.

        * The site specific architecture information has been split into a
        separate file, maked with an entire-source-hide attribute, so that new
        Aegis-under-Aegis projects don't have such bad architecture problems.

        * The license has been changed to GPLv3.

        * A bug has been fixed the the change::pconf_get method which
        sometimes caused segfaults.

        * A bug has been fixed in aeclone which caused aecp -delta to segfault
        when: a change set whith a removed file was cloned, and the clone
        change set subsequently integrated.

        * The aediff command is now smarter about files which may have moved.

        * A bug has been fixed in the aeannotate command, it no longer
        segfaults for some file histories.

        * A Vietnamese error mesage translation has been added.

        * There is a new Portugese (Brazillian) message catalogue translation.

        * It is now possible to develop begin undo and new change undo in a
        single command.

        * The _a_e_l(1) command now understands are much wider range of ways to
        specify changes.

        * A segfault has been fixed in the use of --delta and --delta-data
        options.

        * This change set fix a problem in the _a_e_s_v_t(1) checkout command that
        can fail to extract from a gzip compressed archive.

        * A bug has been fixed in the _a_e_c_h_o_w_n(1) command, to stop a segfault
        when printing some error messages.

        * There is a new _a_e_b_i_s_e_c_t(1) command which helps to find project
        regressions not handled by the test suite.

        * Many commands now cope with renames in more situations.

        * A bug has been fixed in _a_e_c_l_o_n_e(1) which caused _a_e_c_p _-_d_e_l_t_a to
        segfault when a change set whith a removed file was cloned, and the
        clone change set subsequently integrated.

        * The _a_e_d_e_-_p_o_l_i_c_y(1) manual page has been updated to document the
        aede-policy-line-length file attribute.

        * A vietnamese translation has been added.

        * The _a_e_r_e_p_o_r_t(1) command now understands more ways to specify
        changes.

        * There is a new ${path_reduce} substitution which may be used to
        remove redundant elements from path lists, such as used by the $PATH
        environment variable.

        * When the development directory style required actions to be perfomed
        on the development directory, the obsolete "creating symbolic links to
        baseline" message was produced. This was confusing. A more generic
        message is now used, which is intended to be less confusing.

        * The aecp(1) -delta command now follows the whiteout preference when
        copying a "removed" file.  The test suite now runs much faster.

        * A bug has been fixed in the _a_e_d_b_u(1) command. It no longer complains
        about permissions when the develop_begin_undo_command has been set.

        * A bug has been fixed in the _a_e_i_m_p_o_r_t(1) command.  It no longer uses
        the Attic portion of filenames when populating the history directory
        tree.

        * The change details listing now prints comments in a wide column when
        the comments are lengthy.

        * There is a new $Active_Directory substitution, used to obtain the
        development directory, or the integration directory, depending on the
        change state. This is rather like the default behaviour of the _a_e_c_d(1)
        command.

        * There is a new ${project version} substitution.

        * The commands run by aeipass are now accompanied by more file name
        information, so that you can know which source file corresponds to
        which UUID history file, if there is a failure in the history
        commands.

        * The _a_e_c_a(1) command now checks for and discards duplicate
        architecture names. This fixes a bug with unsatifiable architecture
        dependencies.

        * The _a_e_b(1) command has been improved, it no longer keeps running the
        project_file_comand over and over again.

        * A bug has been fixed in the _a_e_n_f(1) command; it now preserves
        existing file contents if new files already exist in the development
        directory.

        * A bug has been fixed in the "aet -regression" command, it no longer
        reports free()ing a non-existent string.

        * A bug has been fixed in the _a_e_d(1) command, it no longer reports a
        bug when a cross branch merege is attempted for a file independently
        created in both branches.

   VVeerrssiioonn 44..2233
   VVeerrssiioonn 44..2222..22 ((1188--OOcctt--22000077))
        This is an update for the 4.22 stable release, it is meant to help
        Aegis users while the next release cycle ends.

        * [ 1684820 ] Fixed a bug in aeclone that caused aecp -delta
        segfaults.

        * The symlink farm now handle derived files registered within Aegis
        more like normal derived files.

        * The change_pconf_get function no longer looks for historical
        versions of files, if it can help it.  This makes many things go
        faster and solved the problem of configuration fields redefinition.
        While this change does not make Aegis more time safe, it cures one of
        the symptoms.

        * Fixed test 222 to work with recent releases of subversion.

        * The _a_e_p_c_o_n_f(5) has been improved.

        * [ Debian 435422 ] The reference manual was wrongly referring to
        -Page-Headings instead of -Page-Header.  The documentation has been
        updated to match the source code.

        * The test/02/t0257a-walt.sh script has been back-ported from the
        development branch (4.23) to prevent bug #...... to appear in the
        stable branch.

        * [ 1704108 ] The _a_e_c_p(1) -delta command now follows the whiteout
        preference when copying a "removed"file.

        * [ 1685304 ] A bug has been fixed that caused _a_e_c_p(1) -delta X to
        copy in a change also a file with the old name of a file _a_e_m_v(1)ed
        before delta X.

        * The generated Makefile now installs _a_e_l_o_c_k(1) with the correct
        permissions.

        * A bug has been fixed in the _a_e_t_a_r(1) command, it no longer creates
        tarballs that cause BSD tar to complain like this: tar: End of archive
        volume 1 reached tar: Unexpected EOF on archive file

        * The configure script now handle correctly the datadir substitution.

   VVeerrssiioonn 44..2222..11 ((1144--AApprr--22000077))
        * Test t0247a-walt.sh has been fixed, it was not exporting
        AEGIS_TEST_DIR.  This make _a_e_i_n_t_e_g_r_a_t_q(1) leaving stuff in the home
        directory of the user.

        * Some minor fix that prevented Aegis to build on RPM based
        distributions has been fixed.

        * The t0011a.sh test script failed when _l_e_x(1) was missing, since it
        is not required to build Aegis the test script has been modified to
        pass even when _l_e_x(1) is missing.

        * _a_e_d_i_s_t(1) now handle certain renamed files correctly when receiving
        branches or entire-source.

        * The t0011a.sh test script failed when _l_e_x(1) was missing, since it
        is not required to build Aegis the test script has been modified to
        pass even when _l_e_x(1) is missing.

        * _a_e_d_i_s_t(1) now handle certain renamed files correctly when receiving
        branches or entire-source.

        * [ 1691122 ] Newer versions of the autoconf tools introduced a new
        @datarootdir@, and complained loudly if it wasn't used.  Aegis
        configure does not trigger anymore those warnings.

        * The test suite does not use anymore _d_i_f_f(1) -u because not all
        systems have gnu diff, so the use of gnu diff's -u option is nor
        portable, and will give false negatives on some systems.

        * The test suite does not use anymore _d_i_f_f(1) -u because not all
        systems have gnu diff, so the use of gnu diff's -u option is nor
        portable, and will give false negatives on some systems.

        * _a_e_d_i_s_t(1) -rec now save the UUID as the user defined original-UUID
        if the UUID is already present in the repository.  This is especially
        useful when receiving changes in the same repository.

        * _a_e_c_l_o_n_e(1) now preserve the the UUID of the original change as the
        original-UUID user defined attribute of the new change. It also copy
        any other used-defined attribute.

        * Test 89 has been disable on HP-UX-10 because that system has a
        "vendor specific" (i.e. broken) _c_p_i_o(1) archive format.

        * Test 95 has been improved to be less sensitive to _l_i_b_m_a_g_i_c(3)
        differences.

        * Test 207 has been changed to be less sensitive to _s_o_r_t(1)
        differences.

        * The project_specific setenv:* variables are now exported only once.

        * [ 1674882 ] The following bug as been fixed: if a file is created
        and renamed within a single branch, and that branch is integrated,
        then the file is not included in the output of 'aedist -send -es' from
        subsequent branches.

        * A bug has been fixed in the _a_e_d_b_u(1) command.  It no longer
        complains about permissions when the _d_e_v_e_l_o_p___b_e_g_i_n___u_n_d_o___c_o_m_m_a_n_d has
        been set.

        * The _a_e_d_i_s_t(1) -rec command now better handles file renamed (not
        aemved) to match the local repository state.

        * A bug has been fixed that caused the _c_h_a_n_g_e___p_c_o_n_f___g_e_t function
        terminate _a_e_g_i_s(1) with a fatal error if applied to a branch without a
        config file (e.g. if the trunk does not contain any closed branch).

        * The _a_e_n_p_r_(_1_) _-_k_e_e_p command now set the administrator recursively.

        * A bug has been fixed in the ${project-specific} substitution, it now
        works correctly with the _a_e_s_u_b(1) -bl command.

        * _a_e_d_i_s_t_(_1_) _-_r_e_c_e_i_v_e_d has been modified to set the user defined
        attribute foreign-copyright to true when receiving a remote change
        set.  This in order to avoid _a_e_d_e_-_p_o_l_i_c_y(1) complain about incorrect
        copyright notice at _a_e_d_e(1) time.0

        * A bug has been fixed that caused an _a_e_m_v(1) followed by an _a_e_n_f(1)
        to generate two different files with the same UUID.

        * Avoid the "multiple permission set" error on quit.

        * A bug has been fixed in the UUID generating code; it was running out
        of file descriptors.

        * A bug has been fixed in the _a_e_t(1) -regression command, it no longer
        reports free()ing a non-existent string.

        * A bug has been fixed in the _a_e_d(1) command, it no longer reports a
        bug when a cross branch merge is attempted for a file independently
        created in both branches.

        * A bug has been fixed which caused _a_e_i_p_a_s_s(1) to assign UUID to files
        at branch integration pass time. This can happen if the files was
        created and integrated with an old Aegis release, lacking support for
        file's UUID.  This bug make it possible to have the history for a file
        split into two part, one accessible via the file_name, the other
        accessible using the UUID.

        * A segfault in _a_e_a_n_n_o_t_a_t_e(1) has been fixed.

        * A bug has been fixed related to the use of the
        _u_n_c_h_a_n_g_e_d___f_i_l_e___i_n_t_e_g_r_a_t_e___p_a_s_s___p_o_l_i_c_y_=_r_e_m_o_v_e policy described in
        _a_e_p_c_o_n_f(5).  In this case aeipass failed to reset the locked_by field
        from the project fstate file, this prevented subsequent changes to
        modify the removed file.

        * A bug has been fixed in the handling of the symlink farm, for
        development directory styles which use them for derived files.
        Derived files in the baseline directory which were formerly source
        files, but then aerm-ed, are now included in the development directory
        when copy/link styles are used.

        * A bug has been fixed in the _a_e_n_f(1) command; it now preserves
        existing file contents if new files already exist in the file
        development directory.

        * The ./configure script has been improved to stop with a fatal error
        if the bzip2 library is not available.

   VVeerrssiioonn 44..2222 ((2299--MMaarr--22000066))
        * A bug has been fixed in the _a_e_c_l_e_a_n(1) command, it now correctly
        resets the change build and test times.

        * A bug has been fixed in writing of tar and cpio data, in cases where
        there was one byte too much padding.

        * A bug has been fixed in the _a_e_i_n_t_e_g_r_a_t_q(1) command, it no longer
        ignores change number zero.

        * A bug has been fixed in the _a_e_p_r_o_m_p_t_c_m_d(1) comand, it now
        understands that when the build command is "exit 0" then no build is
        required.

        * The _a_e_d_e(1) comand now runs the _r_e_v_i_e_w___p_a_s_s___n_o_t_i_f_y___c_o_m_m_a_n_d (instead
        of the _d_e_v_e_l_o_p___e_n_d___n_o_t_i_f_y___c_o_m_m_a_n_d) for projects configured to skip the
        _b_e_i_n_g _r_e_v_i_e_w_e_d state.

        * A bug has been fixed in the _a_e_a_n_n_o_t_a_t_e(1) command, it no longer uses
        the wrong timestamp when creating histories for completed branches.

        * A bug in the _a_e_d(1) command has been fixed, it no longer reports a
        bug when trying to merge a file that has been renamed.

        * A bug has been fixed in the _a_e_t(1) command, it now correctly handles
        multiple architectures being reported for batch test results.

        * A bug has been fixed in the _a_e_t _-_r_e_g_r_e_s_s_i_o_n command, the _b_a_t_c_h___-
        _t_e_s_t___c_o_m_m_a_n_d now correctly handles multiple architectures in the
        results.

        * The notification scripts distributed with Aegis have been fixed,
        they now correctly substitute recipients' email addresses.

        * A bug has been fixed in the _a_e_d_i_f_f(1) command, the _-_c_h_a_n_g_e option is
        now ablew to cope with degenerate forms of the delta name in cases
        like _a_e_d_i_f_f _-_c_h_a_n_g_e _D_0_0_1 and similar.

        * A bug has been fixed in the _a_e_n_c(1) command, it now takes more
        notice of project testing default settings.

        * A bug has been fixed in the _a_e_g_e_t(1) interface, the adjective for
        the alternate listing link at the bottom of the Integration Histogram
        pages has been inverted.

        * A bug has been fixed in the _a_e_g_e_t(1) command, is is now always
        possible to see the error produced by a script when the _n_o_e_r_r_o_r
        modifier is specified.

        * A bug has been fixed in the _a_e_g_e_t(1) web interface, it now provides
        the correct links to the more and less detailed file history pages.

        * The _a_e_g_e_t(1) web interface no longer emits broken links to removed
        source files.

        * A bug has been fixed in the _a_e_n_b_r(1) command, the _p_r_o_t_e_c_t___d_a_t_a_b_a_s_e
        project attribute is now correctly inherited from the parent branch.

        * A bug has been fixed the the RSS feed, where HTML special characters
        were not rendered correctly.

        * A bug has been fixed in the _a_e_i_p_a_s_s(1) command, it no longer fails
        if the _h_i_s_t_o_r_y___c_r_e_a_t_e___c_o_m_m_a_n_d was not set, it uses the _h_i_s_t_o_r_y___p_u_t___-
        _c_o_m_m_a_n_d instead, as it is supposed to.

        * A bug has been fixed in the _a_e_d_i_s_t _-_s_e_n_d command, it no longer
        attempts to include the source of removed files.

        * A bug has been fixed in the _a_e_d_i_s_t(1) command, it no longer
        segfaults when compiled with DEBUG defined.

        * A bug has been fixed in the _a_e_d_i_s_t _-_r_e_p_l_a_y command, it no longer
        downloads change sets more than once.

        * A bug has been fixed in the _a_e_d_i_s_t _-_s_e_n_d command, it no longer
        obtains the wrong version of the project files when building patches
        for files which have been renamed.

        * A bug has been fixed in the _a_e_d_i_s_t(1) command, no longer attempts to
        include the source of removed files.

        * A bug has been fixed in the _a_e_d_i_s_t _-_p_e_n_d_i_n_g command, it now resolves
        project aliases.

        * A bug has been fixed in the _a_e_d_i_s_t(1) command, it no longer
        segfaults on IRIX.

        * A bug was fixed which caused the development_directory of a branch
        to be recorded as an absolute path in the Aegis meta-data, rather than
        relative to the home of the project.  This problem make it difficult
        to move a project to a different location in the filesystem.

        * There is a new open source project example on the web site, which
        allows tarballs to be unpacked and turned into an Aegis project in
        less than 30 minutes.

        * There is a new _a_e_f_i_n_i_s_h(1) command which may be used to read the
        state of a change set and then run all of the Aegis commands necessary
        to to end development.  See _a_e_f_i_n_i_s_h(1) for more information.

        * The _a_e_x_m_l(1) command now understands ".bz" output file suffix, in
        addition to the ".gz" suffix it already understood.  The man page has
        been updated to cover the -output opion.

        * The _a_e_r_e_v_m_l _-_s_e_n_d command is now able to produce bzip2 compressed
        output.

        * The restrictions on project alias names have been eased.  It is now
        possible to have any alias name you like, so long as it doesn't
        contain any shell special characters.

        * It is now possible to set change attributes from the command line,
        without going via an editor.  See _a_e_c_a(1) for more information.

        * The _a_e_t_a_r _-_s_e_n_d command is now able to produce bzip2 compressed
        output.

        * There is an new _a_e_t_a_r _-_e_x_c_l_u_d_e command line option, allowing you to
        exclude files from the tarball being unpacked and used to for the
        change set.  This is typically necessary when a tarball includes
        derived files (e.g. the ./configure script in most open source
        projects).

        * There is a new _a_e_t_a_r _-_e_x_c_l_u_d_e_-_a_u_t_o_-_t_o_o_l_s option, which can be used
        to exclude derived files commonly found in open source projects using
        the GNU Autoconf and GNU Automake tools.

        * There is a new _a_e_d_e_-_p_o_l_i_c_y(1) command which may be invoked by
        _d_e_v_e_l_o_p___e_n_d___p_o_l_i_c_y___c_o_m_m_a_n_d to enforce additional local policies.  See
        _a_e_d_e_-_p_o_l_i_c_y(1) for more information.

        * When symlinking files (source or derived) into the development
        directory, the last-modified time of the link is set to the last-
        modified time of the file being linked to, when the underlying
        filesystem supports it.

        * The aefa(1) command now accepts _n_a_m_e==_v_a_l_u_e attribute assignments on
        the command line.

        * The _a_e_t(1) command now understands _n_a_m_e==_v_a_l_u_e pairs on the command
        line, and passes them unchanged to the test command.  The -force
        option implies a force=1 variable setting.

        * The _a_e_p_a_t_c_h _-_s_e_n_d command is now able to produce bzip2 compressed
        output.

        * The _a_e_s_v_t(1) command now uses the _b_z_i_p_2(1) algorithm by default.
        There is a _a_e_s_v_t _-_c_o_m_p_r_e_s_s_i_o_n_-_a_l_g_o_r_i_t_h_m_=_g_z_i_p option for forwards
        compatibility.

        * There is a new _a_e_-_r_e_p_o_-_c_i(1) command which may be used in an
        _i_n_t_e_g_r_a_t_e___p_a_s_s___n_o_t_i_f_y___c_o_m_m_a_n_d to do a parallel check-in of a change
        set into a second parallel repository.  It understands CVS and SVN at
        the moment; it is easy to extend to understand more repository types.
        The old _a_e_-_c_v_s_-_c_i(1) script now invokes the _a_e_-_r_e_p_o_-_c_i(1) command.

        * The build step of the development process can now be made optional.
        Configuring a _b_u_i_l_d___c_o_m_m_a_n_d of "exit 0" will tell Aegis your project
        does not need to be built.

        * The _a_e_d_i_s_t _-_-_r_e_p_l_a_y command now adds a compatibility modifier to all
        of the downloads URLs, so that the change set received will be
        compatible with the version of aedist at the receiving end.

        * The _a_e_d_i_s_t _-_s_e_n_d command now accepts a _-_n_o_-_m_i_m_e_-_h_e_a_d_e_r option, to
        make it easier to validate the _a_e_d_i_s_t(1) output against the real
        _c_p_i_o(1) command.

        * The _a_e_d_i_s_t _-_s_e_n_d command is now able to produce bzip2 compressed
        output.

        * There is a new _e_n_t_i_r_e_-_s_o_u_r_c_e_-_h_i_d_e file attribute which may be used
        to omit site-specific files from _a_e_d_i_s_t _-_s_e_n_d change sets.

        * The _a_e_t_a_r _-_r_e_m_o_v_e_-_p_a_t_h_-_p_r_e_f_i_x option now also accepts a numeric
        argument.

        * The _a_e_a_n_n_o_t_a_t_e(1) command now understands the _-_c_h_a_n_g_e and _-_d_e_l_t_a
        options.

        * The _a_e_d_b(1) command has been enhanced to check that directory
        permissions above the development directory will be traversable by the
        integrator and the reviewers.

        * The _a_e_c_p_u(1) comand now understands the _-_r_e_a_d_-_o_n_l_y option to mean
        uncopy all of the insulation files.

        * There is a new _a_e_l_o_c_k(1) command, which may be used to take read-
        only locks.  This can be useful for backups, and other activities
        outside Aegis' scope which require a constant project state to operate
        correctly.

        * The _a_e_d_i_s_t command can now perform file merges with better results.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command now looks to see if the executing user
        has project admin priviledges, and if so does not cancel testing
        exemptions.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command now applies patches using the _p_a_t_c_h(1)
        command, rather than doing it less well itself.

        * The _a_e_d_i_s_t _-_r_e_p_l_a_y command now attempts to use the same change
        number as on the remote system.  A bug has been fixed in the way it
        looked for change numbers.

        * There is a new _u_n_c_h_a_n_g_e_d___f_i_l_e___i_n_t_e_g_r_a_t_e___p_a_s_s___p_o_l_i_c_y field in the
        project configuration file, which controls what to do when a change
        set contains an unchanged file at integrate pass time.

        * It is now possible for developers to edit a change description when
        a change is in the awaiting development state, if the project has
        _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 enabled.

        * The _a_e_d(1) command is now optional.  Configuring a _d_i_f_f___c_o_m_m_a_n_d of
        "exit 0" will tell Aegis your project does not need to be differenced.

        * The _a_e_g_e_t(1) interface now places HTML anchors in description text
        where it recognizes them.

        * There is a new _a_e_g_e_t_:_i_n_v_e_n_t_o_r_y_:_h_i_d_e change attribute, which may be
        used to prevent strictly local change sets from being advertised in
        the _a_e_g_e_t(1) change set inventory.

        * The _a_e_g_e_t(1) web interface file listings pages now link the edit
        numbers to file versions. When history is available there are also
        links to the previous verion, and the arrow is linked to a diff page.

        * The _a_e_g_e_t(1) presentation of file history has been improved to
        highlight renaming of files.

        * The _a_e_g_e_t(1) web interface now has a recursive option on its project
        integration history pages.

        * The _a_e_b_u_f_f_y(1) command is now able to run the _t_k_a_e_r(1) command from
        more states, and it now accepts 'q' to quit.  The display of changes
        with double quotes (") in their brief description has been improved.

        * A build problem with libcurl not being present has been fixed.

        * A bug has been fixed which caused errors when Aegis was compiled
        with g++ 4.1

        * A build problem has been fixed on Solaris.

        * A build problem related to _b_i_s_o_n(1) using _l_i_b_i_n_t_l(3) has been fixed.

        * The ./configure script has been improved to correctly detect
        installation of the OSSP UUID library.

        * A build problem on HP/UX has been fixed.

        * A build problem on MacOS X has been fixed.

        * A build problem has been fixed where libraries required by the
        ./configure script are located under /usr/local/lib or some other non-
        standard place.

   VVeerrssiioonn 44..2211 ((1100--NNoovv--22000055))
        You must have the _G_n_o_m_e _l_i_b_x_m_l_2 library (http://xmlsoft.org/)
        installed in order to build Aegis.  Please install the xml2 library
        version 1.8.17 or later.  You do not have to install the rest of
        Gnome, the library can be used on its own.  If you are using a package
        based install, you will need the _l_i_b_x_m_l_2_-_d_e_v_e_l or _l_i_b_x_m_l_2_-_d_e_v package
        in addition to the _l_i_b_x_m_l_2 package.

        Ideally, you would also install the _l_i_b_m_a_g_i_c package, used to
        determine file types, just as _f_i_l_e(1) does.  (This is not to be
        confused with the libmagic6 image manipluation library.  If you are
        using a package based install, you will need the _l_i_b_m_a_g_i_c_-_d_e_v_e_l or
        _l_i_b_m_a_g_i_c_-_d_e_v package in addition to the _l_i_b_m_a_g_i_c package.

        * A bug has been fixed in the _a_e_c_p _-_i_n_d_e_p_e_n_d_e_n_t _-_o_u_t_p_u_t option, which
        resulted in an error when Aegis tried to chmod nothing.

        * The auto file promote feature previously available in _a_e_d(1) has
        been added to the _a_e_b(1), _a_e_c_p(1), _a_e_r_m(1) and _a_e_n_f(1) commands.

        * The _a_e_d_i_s_t _-_p_e_n_d_i_n_g and _a_e_d_i_s_t _-_m_i_s_s_i_n_g commands now print the
        number of changes in the remote inventory.

        * A bug was fixed in the _a_e_c_p command which caused a segfault
        sometimes when the user tries to copy a removed file.

        * The _a_e_d_i_s_t _-_r_e_p_l_a_y command now accepts a _-_m_a_x_i_m_u_m option, which
        includes change sets not yet completed in the local change set
        inventory when considering what to download.

        * There is a new _d_e_v_e_l_o_p___e_n_d___p_o_l_i_c_y___c_o_m_m_a_n_d field in the project
        configuration file. It can be used to add addition constrains to
        change sets before they can complete _a_e_d_e(1) successfully.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command now annotates remote change sets
        (typically, change sets downloaded via the _a_e_d_i_s_t _-_r_e_p_l_a_y command)
        with their origin URL.

        * A bug has been fixed in the _a_e_b_u_f_f_y command where it would display
        incorrectly when the brief_description of a change contained double
        quotes.

        * It is now possible to attach a comment to all commands which involve
        a change state transition, e.g. _a_e_n_c, _a_e_d_e, etc.  This is done using
        the --rreeaassoonn command line option, just as you are able to do for review
        fail, etc.

        * A bug has been fixed in aenc, where it did not correctly copy user
        defined attributes.

        * There is a new _a_e_l_c_f(1) command to efficiently generate lists of
        change source files for use by your build tool.

        * There is a new _a_e_l_p_f(1) command to efficiently generate lists of
        project source files for use by your build tool.

        * There is a new cache of state information attached to each delta,
        the project file state at the time of the delta. This has the
        potential to accelerate aecp -delta, and all other
        project_file_roll_forward-based operations.  Large projects may want
        to turn this off, because each delta will produce another large
        project file state cache.

        * There is support for generating RSS feeds from Aegis.  See the Aegis
        project pages on the Aegis web interface for an example.  See
        _a_e_p_c_o_n_f(5) and _a_e_g_e_t(1) for more information.

        * The ${change delta_uuid} substitution now allows access to the
        delta_uuid in the _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d state.

        * The "wrong file" error message from aedist has been improved, to say
        what was expected.

        * There is a new optional _$_f_i_l_e_n_a_m_e substitution for the _h_i_s_t_o_r_y___p_u_t___-
        _c_o_m_m_a_n_d, so that you can attach the current name of the check-in to
        the history file meta-data.  There is a new optional _$_u_u_i_d
        substitution for history_put_command, so you can attach that as mete-
        data, too.

        * There is a new history tool bundled with Aegis.  See _a_e_s_v_t(1) for
        more information.

        * There is a new _d_e_f_a_u_l_t___r_e_g_r_e_s_s_i_o_n___t_e_s_t___e_x_e_m_p_t project attribute.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e delta selection mechanism has been improved:
        previously the edit-origin-UUID attribute was considered in favour of
        the original-UUID attribute, with this change it is used the change
        set, bounded to the edit-origin-UUID or to original-UUID, more
        recently integrated.  This should reduce the frequency of logical
        conflicts.

        * There is a new _a_e_r_e_v_m_l(1) command, which can be used to send change
        sets in the RevML format.  See _a_e_r_e_v_m_l(1) for more information.  The
        _a_e_g_e_t(1) web interface is also able to serve change sets in this
        format.

        * A problem has been fixed which caused Aegis to fail on the hppa port
        of Debian.

        * The _a_e_t_a_r _-_r_e_c_e_i_v_e program now uses the archive name as the brief
        description.

        * A bug was fixed in _a_e_d_i_s_t _-_s_e_n_d which caused segfaults when
        processing some files.

        * A bug was fixed which caused _a_e_d_i_s_t _-_s_e_n_d to produce an archive that
        can not be _a_e_d_i_s_t _-_r_e_c_e_i_v_e because of an operation impossible to
        replicate in a change set.

        * There is an implementation of Robert Collins' subunit testing
        framework available.  See _a_e_s_u_b_u_n_i_t(1) for more information.

        * A bug was fixed in _a_e_d_i_s_t that caused an error when receiving a
        branch's archive generated with the _a_e_d_i_s_t _-_s_e_n_d _-_e_n_t_i_r_e_-_s_o_u_r_c_e
        option.

        * A bug has been fixed in _a_e_d_i_s_t _-_r_e_c_e_i_v_e that caused a segfault in
        the rename handling code.

        * The _a_e_d_i_s_t _-_m_i_s_s_i_n_g listing (and the _a_e_d_i_s_t _-_r_e_p_l_a_y behaviour) now
        check for branch UUIDs as well, just in case someone fetched a branch
        as a change set and applied it.  However, _a_e_g_e_t does not report these
        UUIDs, because that would be too confusing.

        * It is now possible to specify any sufficiently unique leading prefix
        of a UUID rather than the full 36 characters.

        * There is a new _$_{_H_i_s_t_o_r_y___P_a_t_h_} substitution available.  It gives you
        the path name of the history file corresponding to the given
        filenames.

        * A bug in _a_e_d_i_s_t _-_r_e_c_e_i_v_e which caused incorrect delta selection has
        been fixed.

        * There is a new _a_e_d_i_s_t _-_p_e_n_d_i_n_g option which can print the list of
        local change sets missing from a remote repository.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command is now able to use the edit-origin-UUID
        attribute to copy modified files from the right origin.

        * A bug has been fixed in _a_e_d_i_s_t _-_s_e_n_d where some types of incomplete
        changes would fail an assert.

        * There is a new _a_e_x_v_e_r(1) command which can be used to view
        historical versions of files in an Aegis repository.  See _a_e_x_v_e_r(1)
        for more information.

        * A bug as been fixed which caused _a_e_m_v(1) to incorrectly rename a
        file to an existing directory

        * It is now possible to specify user-defined user attributes in the
        ~/.aegisrc file.

        * The _a_e_n_f(1) command now gives a warning if you specify the "config"
        file without the "-config" option. This is the old name for the
        project configuration file, the new name is "aegis.conf".

        * The _a_e_f_i_n_d(1) command now understands {+} to mean the resolved file
        name, and {-} as the unresolved file name.

        * There was a bug where Aegis would exit with a fatal error if one of
        the directories on the AEGIS_PATH was read-only. Such directories are
        now ignored.

        * The _a_e_t_a_r(1) command has been improved to process modified and
        created files in a batched way; this improves the speed.

        * Additional explanatory text has been added to the message printed
        when error message translation files can't be found.

        * The _a_e_n_f(1) command now understands the _-_k_e_e_p and _-_n_o_-_k_e_e_p options,
        to explicitly control the creation of new files in the development
        directory.

        * A bug has been fixed in _a_e_m_v(1) which failed to check the new name
        against the filename charset, _e_t_c.

   VVeerrssiioonn 44..2200 ((2288--JJaann--22000055))
        PPlleeaassee NNoottee:: Users are advised to check the history command settings
        in their project configuration files.  With the advent of file UUIDs,
        the history mechanism now decouples source file names from history
        file names.  In particular, the assumption that the history file
        basename is the same as the source file basename is no longer true.
        Correct settings may be found in the _l_i_b_/_c_o_n_f_i_g_._e_x_a_m_p_l_e_/ directory of
        the source distribution.

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

        * A bug has been fixed in the _a_e_c_v_s_s_e_r_v_e_r(1) command which caused to
        to fail when accessed by some clients.

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

        * A bug has been fixed in the _a_e_d_i_s_t _-_s_e_n_d _-_e_n_t_i_r_e_-_s_o_u_r_c_e command
        where it would hang for some cases.  (Actually, it would dump core
        after using up all available swap space on an infinite recursion).

        * A bug has been fixed in the _a_e_d_i_s_t command (and other places) where
        the open of the project configuration file could fail, due to not
        properly reconstructing in historical circumstances.

        * A bug has been fixed in the integration build which was removing
        files it should not, for _d_u_r_i_n_g___b_u_i_l_d___o_n_l_y _= _t_r_u_e work area styles.

        * The _a_e_b command now complains _m_u_c_h less about "directory not empty"
        when using the link farm.

        * A bug has been fixed in the _a_e_t_a_r _-_s_e_n_d _-_e_n_t_i_r_e_-_s_o_u_r_c_e command where
        some files were missing when asking for a complete set of historical
        sources.

        * A bug has been fixed in the _a_e_d_i_s_t _-_s_e_n_d _-_e_n_t_i_r_e_-_s_o_u_r_c_e where some
        files were zero length when asking for a complete set of historical
        sources.

        * A bug in _a_e_d_i_s_t(1) has been fixed, it was forcing regression test on
        the receiving side even if the change set does not require it and
        _d_e_f_a_u_l_t___t_e_s_t___e_x_e_m_p_t_i_o_n was set to true.  It was annoying especially if
        the test suite take a long time to run completely.

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

        * A bug has been fixed in the _a_e_c_p_u(1), _a_e_m_t_u(1), _a_e_m_v_u(1), _a_e_n_f_u(1),
        _a_e_n_t_u(1) and _a_e_r_m_u(1) commands. They were not repairing the symlinks
        (_e_t_c) required by the _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e settings.

        * A bug has been fixed in the _C_h_a_n_g_e___F_i_l_e_s listing; it was not showing
        the locked-by information.

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

        * A bug has been fixed in the _a_e_d_i_s_t _-_s_e_n_d _-_e_n_t_r_i_e_-_s_o_u_r_c_e command,
        where it would segfault in some cases.

        * A bug has been fixed in reading plain _d_i_f_f(1) format patches.  This
        was particularly obvious because _a_e_a_n_n_o_t_a_t_e(1) uses this form of diff
        by default.

        * A bug has been fixed in _a_e_g_e_t(1) where it was showing removed source
        files as available for download.

        * A bug has been fixed in _a_e_g_e_t(1) where it produced invalid output if
        the SCRIPT_NAME environment was not set.

        * A bug has been fixed in _a_e_g_e_t(1) where it would sometimes ignore
        modifiers.  This was particularly noticable in the download pages.

        * A bug has been fixed in the _a_e_i_m_p_o_r_t(1) command.  It was using the
        old work area style configuration file parameters, instead of the new
        _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e settings.

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

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

        * Several build problems have been fixed.

        * The _a_e_i_n_t_e_g_r_a_t_q(1) command has a new -loop _o_p_t_i_o_n_s_, _w_h_i_c_h _c_a_u_s_e_s _i_t
        _t_o _k_e_e_p _p_r_o_c_e_s_s_i_n_g _c_h_a_n_g_e_s _t_h_a_t _b_e_c_o_m_e _a_v_a_i_l_a_b_l_e _w_h_i_l_e _i_t _i_s _r_u_n_n_i_n_g_.

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

        * The _a_e_d(1) man page has been updated to better describe the
        behaviour around the merge command.

        * The _a_e_t_a_r _-_s_e_n_d command now accepts an -include-build option that
        also add build files, registered with _a_e_g_i_s _-_n_e_w_-_f_i_l_e _-_b_u_i_l_d, to the
        ouput archive.  A -not-include-build option is also accepted.

        * The _a_e_t_a_r _-_r_e_c_e_i_v_e command now avoids copying build files from the
        baseline because this operation is forbidden and the error stops the
        processing.

        * There is a new _$_{_C_h_a_n_g_e___A_t_t_r_i_b_u_t_e_} substitution, which is replaced
        by the values of the change attributes named.

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

        * The _a_e_t _-_n_o_p_e_r_s_e_v_e_r_e option now also stops for _n_o _r_e_s_u_l_t as well as
        _f_a_i_l.

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

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command has been enhanced to perform file merges
        if necessary.

        * There is a new _a_e_d_i_s_t _-_r_e_p_l_a_y option.  When used in with an _a_e_g_e_t(1)
        server, it can be used to synchronize two repositories.  The _a_e_d_i_s_t
        _-_m_i_s_s_i_n_g option may be used to show what would be downloaded.

        * The _a_e_f_a(1) command, with the -edit option, now shows you the
        content type, rather than adding it silently.

        * There is a new _a_e_d_i_f_f _-_-_c_o_m_m_a_n_d option, allowing you to specify the
        command you want to use to display the difference.  For example, you
        could use _t_k_d_i_f_f(1) or _m_g_d_i_f_f(1) to display the change graphically.

        * The _a_e_d_i_f_f(1) command now adds labels when it is producing a context
        or unified diff output.

        * There is a new optional _r_e_v_i_e_w___p_o_l_i_c_y___c_o_m_m_a_n_d field in the project
        confioguration file.  This allows for customised review policies for
        each project, including multiple reviewers and specific reviewers for
        portions of the sources.

        * There is a new ${Change_Reviewer_List} substitution, which is
        replaced by a space separated list of reviewers of the current change,
        since the last develop end. This is of particular use to the _r_e_v_i_e_w___-
        _p_o_l_i_c_y___c_o_m_m_a_n_d field of the project configuartion file.

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

        * There is a new ${quoted_email_address} substitution, which replaces
        it arguments with the email addresses of the names users.  See
        _a_e_s_u_b(5) for more information.

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

        * The remaining _a_e_g_i_s_._c_g_i(1) functions have been reproduced in
        _a_e_g_e_t(1).  The _a_e_g_i_s_._c_g_i(1) script is now deprecated.

        * When the UUID of a change is cleared it (because some operation on
        the change set invalidates it) is saved in a change attribute named
        _o_r_i_g_i_n_a_l_-_U_U_I_D.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command is now able to use the original-UUID
        attribute of the incoming change set to select the delta to merge
        with.

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

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

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command has been enhanced to allow you to select
        the branch of the delta to merge with.

        * Several classes within the source have been refactored.

   VVeerrssiioonn 44..1199 ((3300--SSeepp--22000044))
        PPlleeaassee NNoottee:: Users are advised to check the history command settings
        in their project configuration files.  With the advent of file UUIDs,
        the history mechanism now decouples source file names from history
        file names.  In particular, the assumption that the history file
        basename is the same as the source file basename is no longer true.
        Correct settings may be found in the _l_i_b_/_c_o_n_f_i_g_._e_x_a_m_p_l_e_/ directory of
        the source distribution.

        * There is a new _d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y___s_t_y_l_e field of the project
        configuration file.  This allows CVS-style and Arch-style work areas,
        in addition to the BCS-style and viewpath work areas already
        supported.  These new work area styles permit many existing projects
        to use Aegis with no change to their build systems.  The libsndfile
        and OpenLDAP projects, for example, have been imported and built
        without modification.  See _a_e_p_c_o_n_f(5) and the _D_e_p_e_n_d_e_n_c_y _M_a_i_n_t_e_n_a_n_c_e
        _T_o_o_l chapter of the User Guide for more information.

        * There is a new _a_e_d_i_f_f(1) command, which may be used to obtain a
        _d_i_f_f(1) listing of a file for different deltas.

        * There is a new _a_e_p_r_o_m_p_t_c_m_d(1) command, used with bash's
        PROMPT_COMMAND environment variable.  It can be used to obtain a
        colored prompt, simulating the process described in Kent Beck's book
        _T_e_s_t _D_r_i_v_e_n _D_e_v_e_l_o_p_m_e_n_t.

        * There is a new _s_i_g_n_e_d___o_f_f___b_y field of the project configuration
        file.  Set it to true if you want "Signed-off-by" lines appended to
        change set descriptions as the changes pass through the Aegis process.
        The _a_e_d_e(1) and _a_e_r_p_a_s_s(1) commands now understand two new --ssiiggnneedd--
        ooffff--bbyy and --nnoo--ssiiggnneedd--ooffff--bbyy options, to override the project setting.
        The _a_e_d_i_s_t _-_s_e_n_d and _a_e_p_a_t_c_h _-_s_e_n_d commands also understand the new
        --ssiiggnneedd--ooffff--bbyy option, to add the "Signed-off-by" line to the outgoing
        change set description.  Conforming to: http://www.ussg.iu.edu/-
        hypermail/linux/kernel/0405.2/1301.html and http://www.osdl.org/-
        newsroom/press_releases/2004/2004_05_24_dco.html

        * The _a_e_t(1) command has been enhanced to allow integrators to run
        specific tests.

        * The _a_e_s_u_b(1) command can now read the text to be substituted from a
        file or standard input.

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

        * It is now possible to customize the _a_e_g_e_t(1) web interface using
        project specific attributes.

        * The _a_e_l(1) command and the _a_e_g_e_t(1) web interface now have file
        inventory pages, for the project file inventory and the change file
        inventory.

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

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

        * The _a_e_d_i_s_t(1) command now runs all tests required for the change
        set, and honors test exemptions.

        * The _a_e_d_i_s_t(1) command now sleeps for a second to ensure that the
        last-time-modified of derived files will be strictly later than source
        files, and that the _a_e_b(1) timestamp will also be strictly later then
        the last-time-modified for the source files.

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

        * All commands which accept the --cchhaannggee option may now be given a
        change set UUID.  You can discover a change's UUID using the _a_e_l _c_d
        (list change details) or _a_e_l _i_n_v_e_n_t_o_r_y listings.

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

        * The _a_e_t_a_r _-_s_e_n_d command now has an --aadddd--ppaatthh--pprreeffiixx option, so that
        you can add a path prefix to all of the files in a tarball.  The
        _a_e_g_e_t(1) CGI interface now adds a path prefix to generated tarballs by
        default.

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

        * The _a_e_p_a_t_c_h(1) command now uses _d_i_f_f _-_u by default.

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

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

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

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

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

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

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

        * A bug has been fixed in the _a_e_g_e_t(1) command for file contents.  It
        was giving a "multiple permissions set (bug)" error message.

        * A bug in the _a_e_d_i_s_t _-_r_e_c_e_i_v_e command, where it was not accurately
        manipulating the incoming change set UUID.

        * A bug has been fixed in _a_e_d(1) which caused it to SEGFAULT.

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

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

        * A bug has been fixed in the command line processing of the _a_e_f_a(1)
        command.

        * A bug has been fixed in the _a_e_g_i_s _-_r_e_v_i_e_w_-_b_e_g_i_n command; it was not
        operating correctly when the change was in _a_w_a_i_t_i_n_g___r_e_v_i_e_w but the
        project was in _g_o_t_o___b_e_i_n_g___r_e_v_i_e_w_e_d.

        * A bug has been fixed in the $basename substitution; it now functions
        exactly like _b_a_s_e_n_a_m_e(1) command.

        * A bug has been fixed in the _a_e_t _-_b_l command; it erroneously stated
        that the $Search_Path_Executable substitution was mandatory, when it
        actually optional.

   VVeerrssiioonn 44..1188 ((1100--JJuunn--22000044))
        * A number of build problems have been fixed, particularly concerning
        GCC 3.3 and later.

        * The _a_e_m_v(1) command has been enhanced to accept more than two file
        names.  You are now able to move serveral files in the one command.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command has been enhanced to process move
        operations in a batched way.  This improved performance when receiving
        a change that renames many files.

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

        * A bug has been fixed in the _a_e_p_a_t_c_h(1) command.  It would SEGFAULT
        when a non-source file was patched.

        * A bug has been fixed in the _a_e_m_e_a_s_u_r_e(1) command.  It would SEGFAULT
        when no files were named on the command line.

        * The Russian error message catalogue has been updated.

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

        * The ./configure --sysconfdir option is now honored.  It is _v_e_r_y
        important to set it to _/_e_t_c when you configure Aegis.

   VVeerrssiioonn 44..1177 ((33--JJuunn--22000044))
        * Each new change set is now assigned a Universally Unique Identifier
        (UUID) to allow it to be tracked across geographically distributed
        development.  The _a_e_d_i_s_t(1) and _a_e_p_a_t_c_h(1) commands now send the
        change set UUIDs, and preserve them on receipt.

        * Each file now has a Universally Unique Identifier (UUID) which
        allows tracking files across renames, even on geographically separate
        sites.  (The _a_e_d_i_s_t(1) and _a_e_p_a_t_c_h(1) commands send the file UUIDs,
        the next release will take advantage of them on receipt.)

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

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

        * There is a new _a_e_c_v_s_s_e_r_v_e_r(1) command, which presents Aegis projects
        and change sets as CVS modules.  All of the core CVS functions are
        supported.  This code needs to be exersized and tested by users.

        * It is now possible to specify arbitrary attribute names and value
        for each source file.  The _a_e_f_a(1) command may be used to edit file
        attributes.  The _a_e_d_i_s_t(1) and _a_e_p_a_t_c_h(1) send these attributes; a
        future release will take advantage of the information on receipt.

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

        * The _a_e_p_a_t_c_h(1) command now includes change set meta-data as a
        compressed BASE64 encoded block at the top of the patch, after the
        human-readable text but before the files.  This means that _a_e_p_a_t_c_h(1)
        can be as effective as _a_e_d_i_s_t(1) is transmitting chaneg sets.  Patches
        without meta-data still work as before.

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

        * The _a_e_g_e_t(1) web interface has been improved.  The _a_e_p_a_t_c_h(1)
        download now accepts compat=_N modifier, and there is a new Project
        Staff page.

        * There is a new _a_e_-_c_v_s_-_c_i(1) support script which may be used as an
        _i_n_t_e_g_r_a_t_e___p_a_s_s___n_o_t_i_f_y___c_o_m_m_a_n_d to commit change sets to CVS in
        parallel.

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

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

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

        * The behaviour of the _a_e_d_e_u(1) command has changed slightly.  When
        changes are in the _b_e_i_n_g _r_e_v_i_e_w_e_d state, and Aegis has been configured
        to use the _a_w_a_i_t_i_n_g _r_e_v_i_e_w state, the _a_e_d_e_u(1) command will now report
        an error.  This is so that reviewers don't waste their time reviewing
        changes which have already been returned to the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state.
        Think of the change as "belonging" to the reviewer while in the _b_e_i_n_g
        _r_e_v_i_e_w_e_d state.

        * The _a_e_d_i_s_t _-_s_e_n_d command has a new _-_c_o_m_p_a_t_i_b_i_l_i_t_y option, use to
        indicate the version of the rreecceeiivviinngg aedist program.  This, in turn,
        selects the features which may be added to or omitted form the
        generated .ae file.

        * There is a new config file usage, and a corresponding _a_e_n_f
        _-_c_o_n_f_i_g_u_r_e command line option.  It is now possible to move project
        configuration files.  It is now possible to remove project
        configuration files, provided there is at least one left.  The
        _a_e_i_m_p_o_r_t(1) command now avoids files which have the same name as the
        default project configuration file ("aegis.conf" or "config") and will
        use something else.

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

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

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

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

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

        * A bug has been fixed in the _a_e_n_f(1) command.  It now correctly
        ignores difference files when given a directory name.

        * A bug has been fixed in _a_e_d_i_s_t(1) where one of the _a_e_g_i_s _-_n_e_w_-_f_i_l_e
        commands was missing a _-_n_o_-_t_e_m_p_l_a_t_e argument.  Under some
        circumstances, this resulted in change sets which could not be _a_e_d_i_s_t
        _-_r_e_c_e_i_v_ed.

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

        * A bug has been fixed in the _a_e_p_a_t_c_h(1) command.  It was creating
        empty patches for some changes in completed project branches.  This
        also affected _a_e_d_i_s_t _-_s_e_n_d and _a_e_c_p _-_d_e_l_t_a and _a_e_c_p _-_r_e_s_c_i_n_d in some
        cases.  It was caused by a subtle flaw in the non-detailed case for
        the _p_r_o_j_e_c_t___f_i_l_e___r_o_l_l___f_o_r_w_a_r_d function.

        * A bug has been fixed in the handling of the MANPATH enviromnet
        variable by the _p_r_o_f_i_l_e and _c_s_h_r_c scripts.

        * A bug has been fixed in the _a_e_d_i_s_t _-_r_e_c_e_i_v_e and _a_e_p_a_t_c_h _-_r_e_c_e_i_v_e
        commands has been fixed.  There were cases where these commands could
        access off the end of an array and SEGFAULT.

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

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

        * A bug has been fixed which caused the _a_e_d_i_s_t(1) command to reprt the
        wrong error when the input file did not exist.

        * A bug has been fixed in the _a_e_n_b_r_u(1) command which made project
        aliases disappear.

        * A bug has been fixed in the _a_e_d_e command.  It would fail with new
        build files already in the baseline.

   VVeerrssiioonn 44..1166 ((1144--JJaann--22000044))
        * There is a new _a_e_c_p _-_k_e_e_p option, causing _a_e_c_p(1) nnoott to overwrite
        file contents in the development directory.

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e option now understands changing the type of a
        file.

        * It is now possible to specify a URL to the --ffiillee option on the
        command line of _a_e_d_i_s_t(1), _a_e_p_a_t_c_h(1) and _a_e_t_a_r(1).  The data will be
        downloaded and applied.

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

        * The project list (see _a_e_l(1), _a_e_g_e_t(1), etc) is now sorted in a
        slightly more natural way, as are the version statistics at the end of
        an _a_e_a_n_n_o_t_a_t_e(1) listing.

        * A bug has been fixed in _a_e_d_e(1) for branches, where Aegis would
        complain about build source files (created by the _a_e_n_f _-_b_u_i_l_d command)
        being out-of-date.  This, of course, was difficult or impossible to
        fix, and unnecessary because the next build would fix them.

        * A bug has been fixed in the _a_e_c_p _-_i_n_d_e_p_e_n_d_e_n_t command, where it did
        not preserve the execute bit, nor honour the user's umask.

        * The missing _a_e_m_t and _a_e_m_t_u alias ve been added to the profile.

        * More detail has been added to _a_e_p_c_o_n_f(5) detailing how to create the
        project configuration file for the first time.

        * A bug has been fixed in _a_e_d_i_s_t(1) and _a_e_p_a_t_c_h(1) which would cause
        an assertion failure (or segfault) when you tried to _a_e_d_i_s_t _-_s_e_n_d
        _-_d_e_l_t_a _-_e_s files which did not exist at that delta.

        * A bug has been fixed in _a_e_d_i_s_t(1) and _a_e_p_a_t_c_h(1) which caused an
        assert failure (or segfault) when you tried to send a file which had
        been created and removed in a branch, and after the branch was
        integrated only a remove record exists in the parent branch.

        * The problem with test 134 failing has been fixed.

        * A bug has been fixed in _a_e_i_p_a_s_s(1) which prevented changing a file's
        usage from being as straight-forward as it should have been.

        * The source RPM (and the _s_p_e_c file) now has Build Prequisites
        specified.

        * The --CChhaannggee option now accepts more than just a change number.  It
        now accepts many forms similar to those used by the _$_{_v_e_r_s_i_o_n_}
        substitution, allowing its output to be used directly as command line
        input; forms such as -c 1.2.C34 and --c=5.6.D78 are now understood to
        imply a --bbrraanncchh option as well as either --cchhaannggee or --cchhaannggee--ffrroomm--
        ddeellttaa, respectively.  In addition, you may prepend a project name, to
        imply the --pprroojjeecctt option as well; form such as -c aegis.4.15.C28 are
        understood.

        * The _a_e_m_e_a_s_u_r_e(1) program now also generates Halstead metrics.

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

        * A bug has been fixed in the test of _a_e_d_i_s_t(1) for moved files.
        There was nothing wrong with _a_e_d_i_s_t(1), the test itself was broken.

   VVeerrssiioonn 44..1155 ((1177--NNoovv--22000033))
        * A bug has been fixed in "ael cf".  It used to fail an assertion when
        there were no files in the change.

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

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

        * A bug has been fixed which caused _a_e_d_i_s_t(1) and _a_e_a_n_n_o_t_a_t_e(1) to
        segfault.  It was caused by the roll forward history mechanism
        ignoring some branches in some cases.

        * A  bugs has been fixed in the _a_e_n_r_v _-_D_e_s_c_e_n_d___P_r_o_j_e_c_t___T_r_e_e option,
        which was free()ing a project twice, sometimes causing segfaults.

        * The _a_e_g_e_t CGI interface is now able to retrieve historical versions
        of files.

        * The _a_e_g_e_t CGI interface now has support for file metrics.

        * The _a_e_g_e_t CGI interface has been enhanced to provide more
        information about project files and change files: activity, conflicts,
        history.

        * The _a_e_i_p_a_s_s(1) command now sets the AEGIS_INTEGRATION_DIRECTORY
        environment variable before running the _i_n_t_e_g_r_a_t_e___p_a_s_s___n_o_t_i_f_y___c_o_m_m_a_n_d,
        so that you can add a symlink for compilers which insist on placing
        absolute paths into debugging information in object files.

        * The _a_e_g_e_t CGI interface has been enhanced to provide more
        information about project files and change files - activity,
        conflicts, history.

        * The _a_e_g_e_t CGI interface now reports more project information.

        * The _a_e_g_e_t CGI interface now has download links in many of its menus,
        allowing more and better downloads than the old _a_e_g_i_s_._c_g_i(1) script.

        * The way _a_e_n_f(1) and _a_e_n_t(1) work have been made more generous.  It
        is now possible to _a_e_r_m(1) a file and then _a_e_n_f(1) or _a_e_n_t(1) the same
        file in the same change.  This is useful for changing the type of a
        file.  Previously this has to be done as two consecutive changes.

        * The _a_e_c_p _-_i_n_d_e_p_e_n_d_e_n_t command has been enhanced to allow you to
        extract versions of built files (created with _a_e_n_f _-_b_u_i_l_d and
        maintained at _a_e_i_p_a_s_s(1) time).

        * Documentation has been added to _a_e_r(5) for the try/catch mechanism.

        * There was a disagreement between the _a_e_r_e_p_o_r_t(1), _a_e_a_n_n_o_t_a_t_e(1),
        _a_e_d_i_s_t(1), _a_e_f_i_n_d(1), _a_e_i_m_p_o_r_t(1), _a_e_l_s(1), _a_e_p_a_t_c_h(1), _a_e_r_e_c_t(1),
        _a_e_t_a_r(1) and _a_e_x_m_l(1) man pages and the commands themselves about the
        existence of the --vveerrssiioonn option.  The commands now behave as
        documented.

        * There is a new _P_r_o_j_e_c_t___B_r_a_n_c_h___D_a_t_e_s report, which may be used to see
        when branches of a project were begun and completed.

   VVeerrssiioonn 44..1122 ((2299--SSeepp--22000033))
        * A bug has been fixed in _a_e_d_i_s_t(1) where it handled moved files
        incorrectly.

        * There is a new experimental _a_e_g_e_t(1) program.  It is a potentially
        faster, potentially more capable replacement for the _a_e_g_i_s_._c_g_i(1)
        script.  At the moment it isn't, it's experimental.

        * A bug has been fixed in _a_e_d_i_s_t(1) where it would sometimes segfault
        when sending transparent files.

        * Command completion now works for the _a_e_m_t(1) and _a_e_m_t_u(1) commands.

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

        * Change file notification commands have been added for the _a_e_m_t(1)
        and _a_e_m_t_u(1) commands.  See _a_e_p_c_o_n_f(5) for more information.

        * A bug has been fixed in _a_e_f_i_n_d(1) command where it could report
        files which had been removed.

        * A bug has been fixed in the _a_e_c_p(1) command where it would scramble
        the _a_e_t _-_r_e_g exemption.

        * A bug has been fixed in the _a_e_d_e(1) command.  The problem manifested
        as an _a_e_t _-_r_e_g command which terminated early.

        * There is a new _a_e_x_m_l(1) command.  You can now obtain various pieces
        of the Aegis database as XML.  See _a_e_x_m_l(1) for more information.

        * The the _n_e_w___f_i_l_e___c_o_m_m_a_n_d, _c_o_p_y___f_i_l_e___c_o_m_m_a_n_d and _r_e_m_o_v_e___f_i_l_e___c_o_m_m_a_n_d
        fields of the project _c_o_n_f_i_g file are now defaulted correctly.

        * Theer is a new _$_c_h_a_n_g_e___f_i_l_e_s substitution.  See _a_e_s_u_b(5) for more
        information.

        * The project config file has a new _a_r_c_h_i_t_e_c_t_u_r_e___d_i_s_c_r_i_m_i_n_a_t_o_r___c_o_m_m_a_n_d
        field.  Now you can use an arbitrary command (rather than _u_n_a_m_e(2)
        information) to determine the architecture.  See _a_e_p_c_o_n_f(5) for more
        information.

        * The Russian message translation has been updated.

        * The German message translation has been updated.

        * The _a_e_l(1) command now has a new _i_n_c_o_m_p_l_e_t_e listing.  It lists
        changes between _a_w_a_i_t_i_n_g _r_e_v_i_e_w and _b_e_i_n_g _i_n_t_e_g_r_a_t_e_d. inclusive.

        * The _a_e_l(1) command now accepts arguments for the listings.  The
        _d_e_f_a_u_l_t_-_c_h_a_n_g_e, _d_e_f_a_u_l_t_-_p_r_o_j_e_c_t, _o_u_t_s_t_a_n_d_i_n_g_-_c_h_a_n_g_e_s and _u_s_e_r_-_c_h_a_n_g_e_s
        lists now accept a user name argument.

        * The _a_e_m_t(1) command now understand the --UUNNCCHHaannggeedd option, so that
        files which are in the branch, but unchanged from the deeper branch,
        may be made transparent.

        * A bug has been fixed in the _w_e_c_p(1) command where the --OOvveerrWWrriittee
        option did not honor the presence/absence of the --RReeaaddOOnnllyy flag.

        * There is a new _a_e_e_d_i_t script.  See _a_e_e_d_i_t(1) for more information.

        * A bug has been fixed in the file history mechanism (as used by the
        _-_d_e_l_t_a options, _a_e_a_n_n_o_t_a_t_e(1), _a_e_d_i_s_t(1), _a_e_p_a_t_c_h(1), etc) which did
        not correctly understand transparent files.

        * The _a_e_c_l_e_a_n(1) command now touches all of the source sfiles.  It
        also accepts a --NNooTToouucchh option.

        * There is a new _$_c_h_a_n_g_e___f_i_l_e_s substitution.  See _a_e_s_u_b(5) for more
        information.

        * The _a_e_c_l_e_a_n command now touches the source files as well.  Use the
        now --nnoo--ttoouucchh ooppttiioonn iiff yyoouu ddoonn''tt wwaanntt tthhiiss..

        * There have been several improvements to the output of the _a_e_g_i_s_._c_g_i
        script and the web site.

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

   VVeerrssiioonn 44..1111 ((2299--JJaann--22000033))
        * For Aegis developers: the developer build now uses _s_u_d_o(8) to
        simplify and automate the tricky bit.  The regular distribution build
        is unchanged.

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

        * A partial Romainian translation has been added.

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

        * The French localization has been improved.

        * The _a_e_d_i_s_t(1) command now preserves the executable bit on files.

        * There is a new _-_d_e_s_c_e_n_d_-_p_r_o_j_e_c_t_-_t_r_e_e option for the _a_e_n_a(1),
        _a_e_r_a(1), _a_e_n_d(1), _a_e_r_d(1), _a_e_n_i(1), _a_e_r_i(1), _a_e_n_r_v(1), _a_e_r_r_v(1) and
        _a_e_p_a(1) commands, to apply the action to all descendant branches of
        the project.

        * A bug has been fixed in _t_k_a_e_r(1) which stopped it working on some
        systems.

        * The _a_e_i_n_t_e_g_r_a_t_q(1) command now copes better with changes leaving the
        _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n state.

        * A bug has been fixed in the _a_e_i_m_p_o_r_t(1) command which misunderstood
        RCS branches.

        * A bug has been fixed where there _a_e_n_f(1) command would use the new
        _c_o_n_f_i_g file about to be created, which was almost always wrong.

        * There is a new _$_{_s_u_b_s_t_r_} substitution.  See _a_e_s_u_b(5) for more
        information.

        * The _a_e_c_l_o_n_e(1) command now understands transparent files.

        * The _a_e_c_p_u(1) command now restores test exemptions in some cases.

        * There is a new _a_e_m_e_a_s_u_r_e(1) command, which procudes simple file
        metrics for use with Aegis.

        * There is a new _p_r_o_j_e_c_t _a_n_c_e_s_t_o_r_s report.

        * Trunk version number no longer have a leading dot.

        * Command line completion now works for _z_s_h(1).

        * The _a_e_t_a_r(1) command now preserves the executable bit on files.

        * A bug has been fixed which caused _a_e_t_a_r(1) to hang.

        * The _a_e_r_e_p_o_r_t(1) and _a_e_s_u_b(1) commands now gave the same email
        address for users.

        * The _a_e_a_n_n_o_t_a_t_e(1) command now olny prints caption columns if their
        value changes.  This highlights the differences, and is less
        distracting.

   VVeerrssiioonn 44..1100 ((2244--DDeecc--22000022))
        * There is a new _a_e_m_t(1) command, used to make branch files
        "transparent".  This is like an _a_e_c_p_u(1) command for branches, but
        done through the agency of a change set.

        NNoottee:: The behaviour of the view path in the presence of transparent
        files is complete, however full support for _a_e_c_p _-_d_e_l_t_a and reports is
        not.  Support will be present in the next release.  File transparency
        information stored by this release will be able to be used by _a_e_c_p
        _-_d_e_l_t_a and reports in the next release.

        * There is a new _a_e_m_t_u(1) command, to undo the effects of the _a_e_m_t(1)
        command.

        * It is now possible to use the _a_e_c_l_o_n_e(1) command on changes in the
        _a_w_a_i_t_i_n_g _d_e_v_e_l_o_p_m_e_n_t state.

        * The problematics directory permissions check has been removed from
        the _a_e_i_n_t_e_g_r_a_t_q(1) command.

        * A bug has been fixed in _a_e_c_p(1) when retrieving deltas before files
        were removed.

        * There are new _$_{_s_p_l_i_t_} and _$_{_u_n_s_p_l_i_t_} substitutions for manipulating
        search paths (_e_t_c_).  See _a_e_s_u_b(5) for more information.

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

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

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

        * A bug with _a_e_i_m_p_o_r_t(1) and removed files has been fixed.

        * A problem has been fixed with the transition case when a project
        changed from develop_end_action = goto_being_reviewed to
        goto_awaiting_review while having changes in the _b_e_i_n_g _r_e_v_i_e_w_e_d state.

        * A problem with long command lines has been fixed in the _a_e_d_i_s_t
        _-_r_e_c_e_i_v_e, _a_e_p_a_t_c_h _-_r_e_c_e_i_v_e and _a_e_t_a_r _-_r_e_c_e_i_v_e commands.

        * A problem with _a_e_i_m_p_o_r_t(1) and binary files has been fixed.

   VVeerrssiioonn 44..99 ((2233--OOcctt--22000022))
        * The _a_e_p_a_t_c_h(1) and _a_e_t_a_r(1) commands now accept -add-path-prefix and
        -remove-path-prefix options, for manipulating the filenames when
        unpacking an creating a change set.  The _a_e_p_a_t_c_h(1) documentation has
        been significantly improved.

        * There is a new _a_e_c_p _-_r_e_s_c_i_n_d option, which may be used to rescind
        (roll back) a completed change.  See _a_e_c_p(1) for more information.

        * The Debian _/_e_t_c_/_m_a_i_l_n_a_m_e file is now understood by the _$_{_u_s_e_r _e_m_a_i_l_}
        substitution.

        * There is a new _p_r_o_j_e_c_t___g_a_n_t_t report, which produces comma-separated-
        value (CSV) output, for extracting data to import into Ms. Project.
        Unfortunately, Mr. Project does not yet know how to import CSV files.

        * It is now possible to provide a comment to the _a_e_r_p_a_s_s(1) command,
        just as you always could to the _a_e_r_f_a_i_l(1) command.

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

        * The Russian error messages have been updated.

        * The _a_e_i_m_p_o_r_t(1) program now understands the CVS Attic directory.

        * There are new _p_e_r_l, _P_L_u_r_a_l___F_o_r_m_s, _c_a_p_i_t_a_l_i_z_e, _d_o_w_n_c_a_s_e and _u_p_c_a_s_e
        substitutions.  See _a_e_r(5) for more information.

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

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

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

        * Some build problems have been fixed.

        * Numerous improvements have been made to the web interface.

   VVeerrssiioonn 44..88 ((1199--AAuugg--22000022))
        * A bugs has been fixed in the _a_e_t_a_r _-_r_e_c_e_i_v_e command, where it
        incorrectly complained about shorty input files.

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

        * Several build issues have been resolved.

        * A bug has been fixed in the _a_e_i_m_p_o_r_t(1) command.  The symptom was
        that the _a_e_c_p _-_d_e_l_t_a command misbehaved.  The probelm was that the
        first delta needed a timestamp _p_r_i_o_r _t_o the first change set taken
        from the import sets.

        * A bug has been fixed in the _a_e_p_a_t_c_h _-_s_e_n_d command, where it would
        add Index lines for files with no differences.

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

   VVeerrssiioonn 44..77 ((66--AAuugg--22000022))
        * The _a_e_f_i_n_d(1) command now has -resolve as the default.  To get the
        previous behaviour, use the -NoResolve _o_p_t_i_o_n_.

        * In the _a_e_c_a _-_e and _a_e_p_a _-_e commands, it is now possible to quote
        strings with at-signs (@) instead of double quotes.  This type of
        string allows newlines within the string.  See _a_e_g_i_s(5) for more
        information.

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

        * The _a_e_d_i_s_t(1) command has two new options, -patch and -nopatch,
        which may be used to control how and when _a_e_d_i_s_t uses patches.  See
        _a_e_p_a_t_c_h(1) for more information.

        * A bug has been fixed inthe _s_t_r_n_c_a_s_e_c_m_p function.  This only affected
        you if your system did not have a native version of this function.

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

        * The _a_e_d_i_s_t _-_r_e_c_e_i_v_e command now runs the _a_e_c_a _-_f_i_x_a_r_c_h command when
        a change set arrives which modified the project _c_o_n_f_i_g file.  This
        should fix many of the "architecture not in project configuration
        file" problems when seeding new projects.

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

        * There is a new _a_e_t_a_r(1) command.  It may be used to send and receive
        tarballs as Aegis change sets.  See _a_e_t_a_r(1) for more information.

        * Missing documentation on the _a_e_p_c_o_n_f(5) man page about the fine
        grained file change notification commands has been added.

        * Some changes have been made to the Aegis web interface, with more
        back links.  Also uses _h_t_m_l_2_d_i_f_f(1) if available.

        * It is now possible for reviewers to use the _a_e_t(1) command to run
        tests against the changes they are reviewing.

        * The command completion for the _a_e_t(1) command now works better; it
        now completes project test names as well as change test names.

        * The _a_e_p_a_t_c_h(1) and _a_e_d_i_s_t(1) commands now cope with a wider range of
        input vagueries, including some weird things done by MTAs and more
        content transfer encoding synonyms.

   VVeerrssiioonn 44..66 ((1111--JJuull--22000022))
        * The _a_e_i_p_a_s_s(1) command now sleeps, rather than issue the rather
        alarming "warning: file modification times extend into the future"
        message.  There is a new project _c_o_n_f_i_g file field, _b_u_i_l_d___t_i_m_e___a_d_j_u_s_t,
        which controls this behaviour, but it is strongly recommended that you
        leave it on the default setting.

        * There is a new _$_{_b_a_s_e___r_e_l_a_t_i_v_e_} substitiontion, almost the inverse
        of _$_{_s_o_u_r_c_e_}.  See _a_e_s_u_b(5) for more information.

        * A bug has been fixed with the _a_e_c_a and _a_e_p_a _-_e_d_i_t option.  It was
        caused by the change in the previous release which added editor user
        preferences.

        * A few build problems have been fixed.

        * A bugs has been fixed in the _t_k_a_e_p_a script.  It would sometimes fail
        the "OK" button.

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

   VVeerrssiioonn 44..55 ((2266--JJuunn--22000022))
        * It is now possible to set pager and editor preferences in your
        _._a_e_g_i_s_r_c file.  See _a_e_u_c_o_n_f(5) for more information.

        * A bug in _a_e_p_a_t_c_h _-_r_e_c_e_i_v_e has been fixed, where it would sometimes
        misapply a patch. The search used to determine the patch position
        (when it needs to be offset) has been improved.

        * The _a_e_d_i_s_t(1) and _a_e_p_a_t_c_h(1) commands now accept -delta and -delta-
        date options.

        * The _i_n_t_e_g_r_a_t_e___q_._s_h shell script has been replaced by the
        _a_e_i_n_t_e_g_r_a_t_q(1) Perl script.  It can now lots more useful things.  See
        _a_e_i_n_t_e_g_r_a_t_q(1) for more information.

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

        * A bug has been fixed in _a_e_p_a_t_c_h _-_r_e_c_e_i_v_e, where it sometimes
        complain of "no uudecode data in file", for files which did not
        require uudecoding.

        * There are more change-specific substitutions available.  See
        _$_{_c_h_a_n_g_e _._._._}  within _a_e_s_u_b(5) for more information.

        * The _a_e_p_a_t_c_h(1) command now understands ordinary diff listings, in
        addition to the context and unified differences it already understood.

        * There is a new _a_e_a_n_n_o_t_a_t_e(1) command, used to produce annotated
        source file listings.  See _a_e_a_n_n_o_t_a_t_e(1) for more information.

   VVeerrssiioonn 44..44 ((1122--MMaayy--22000022))
        * It is now possible to specify system wide user preferences.  See
        _a_e_u_c_o_n_f(5) for more information.

        * The _a_e_p_a_t_c_h(1) command now understands the quoted-printable content
        transfer encoding.

        * The _a_e_p_a_t_c_h(1) is more robust when receiving patches that want to
        use a change number that has already been used.

        * The Dutch error message translations have been updated.

        * There was a problem with the way the install directory for _a_e_g_i_s_._c_g_i
        was being determined.  The _a_e_g_i_s_._c_g_i script is now installed into
        $bindir by default.  There is a _a_e_g_i_s_._c_g_i_._i helper script to find your
        web server's _c_g_i_-_b_i_n directory and copy _a_e_g_i_s_._c_g_i there, but this is
        not done automatically.  See _a_e_g_i_s_._c_g_i(1) for more information.

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

        * A French error message translation has been contributed.

        * A problem with _a_e_d_i_s_t _-_r_e_c_e_i_v_e has been fixed, where the new
        _c_o_n_f_i_g_u_r_a_t_i_o_n___d_i_r_e_c_t_o_r_y could interact with the order of file
        creation.

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

        * A bug has been fiexed in the context diff parsing, where it would
        get the last hunk wrong if it was a hunk which deleted lines, due to
        incorrect end-of-file handling.  This affected both _a_e_p_a_t_c_h _-_r_e_c_e_i_v_e
        and _a_e_d_i_s_t _-_r_e_c_e_i_v_e, because _a_e_d_i_s_t(1) now includes patches for better
        merge behaviour.

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

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

        * More information about the "mod times extend into the future"
        warning issued by _a_e_i_p_a_s_s(1) has been added to the man page.

        * Some improvements have been made to the web pages.

   VVeerrssiioonn 44..33 ((1166--AApprr--22000022))
        * The notification shell scripts all now use sendmail consistently.
        Autoconf support for locating sendmail is not yet present.

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

        * The _a_e_d_e(1) command now gives a more informative error message when
        files in a branch require merging.

        * There is now an interconnection between the _a_e_i_b(1) and the _a_e_b(1)
        command.  When you specify a minimum integrate begin, you also get a
        minimum integrate build.

        * A bug has been fixed which caused _a_e_n_f(1) to dump core if you used
        the file name accept pattern.

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

        * A bug has been fixed in the "_a_e_c_p _-_i_n_d" command, where it would give
        a "there is no development directory" error when you tried to extract
        a file version from history of a completed branch.

        * Many of the web pages have been updated to provide a more consistent
        and intuitive interface.  It is also possible to get patches, via the
        _a_e_p_a_t_c_h command.

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

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

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

        * Some error message translations have been improved.

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

        * You can now use shell (#) and C++ (//) comments in your project
        _c_o_n_f_i_g file, if you prefer them to C comments.

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

        * There is a new project attribute, _p_r_o_t_e_c_t___d_e_v_e_l_o_p_m_e_n_t___d_i_r_e_c_t_o_r_y,
        which when true causes the development directory to be read-only in
        states between _a_w_a_i_t_i_n_g___r_e_v_i_e_w and _b_e_i_n_g___i_n_t_e_g_r_a_t_e_d.

        * A problem has been fixed where some reports would fail is users had
        made their _._a_e_g_i_s_r_c files unreadable.

        * A number of small build problems have been fixed.

        * Command completion has been added for the _a_e_b(1), _a_e___c(1), _a_e_c_a(1),
        _a_e_c_d(1), _a_e_c_h_o_w_n(1), _a_e_c_l_e_a_n(1), _a_e_c_p(1), _a_e_c_p_u(1), _a_e_d_b(1), _a_e_d_b_u(1),
        _a_e_d_e(1), _a_e_d_e_u(1), _a_e_d_n(1), _a_e_i_b(1), _a_e_i_b_u(1), _a_e_i_p_a_s_s(1), _a_e_i_f_a_i_l(1),
        _a_e_n_a(1), _a_e_n_c_u(1), _a_e_n_d(1), _a_e_n_f(1), _a_e_n_f_u(1), _a_e_n_i(1), _a_e_n_r_v(1),
        _a_e_n_t_u(1), _a_e___p(1), _a_e_p_a(1), _a_e_r_a(1), _a_e_r_b(1), _a_e_r_b_u(1), _a_e_r_d(1),
        _a_e_r_f_a_i_l(1), _a_e_r_i(1), _a_e_r_m(1), _a_e_r_m_u(1), _a_e_r_p_a_s_s(1), _a_e_r_p_u(1), _a_e_r_r_v(1)
        and _a_e_t(1) commands.  More will be added in the future.

        * It is now possible to specify a directory to contain project _c_o_n_f_i_g
        file fragments.  These fragments are then read in as if catenated as a
        single project _c_o_n_f_i_g file.  See _a_e_p_f_o_n_f(5) for more information.

   VVeerrssiioonn 44..22 ((2266--FFeebb--22000022))
        * There is a new "--No-Page-Headers" option which may be used to
        suppress page and column headers in listings and reports.

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

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

        * There is a new _h_i_s_t_o_r_y___l_a_b_e_l___c_o_m_m_a_n_d which may be used to label your
        history files at each integration.  See _a_e_p_c_o_n_f(5) for more
        information.

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

        * There is a new _C_h_a_n_g_e___L_o_g report, which generates reports in the
        style of common Internet change logs.

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

        * A bug has been fixed in the "_a_e_c_p _-_d_e_l_t_a" command (for all delta
        variants).  The problem occurred when you wanted to copy a version of
        the file before the file has been modified by the branch (but it
        wasonly a problem for files modified later in the branch, files never
        modified by the branch were OK).  As a side-effect of the bug fix,
        "_a_e_c_p _-_d_e_l_t_a" now goes significantly faster (_N times faster, where _N
        is the number of files you are copying).

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

        * A number of oversights in handling the new _a_w_a_i_t_i_n_g _r_e_v_i_e_w state
        have been corrected.

        * The _$_{_e_x_p_r_} substitution has been enhanced to include modulo,
        logical not and the six relative operators.  All using the usual C
        syntax and precedences.  See _a_e_s_u_b(5) for more information.

        * There is a new _$_{_s_w_i_t_c_h_} substitution, see _a_e_s_u_b(5) for more
        information.

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

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

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

        * The _c_h_a_n_g_e___f_i_l_e___c_o_m_m_a_n_d field of the project _c_o_n_f_i_g file is now
        available at a finer granularity.  There are 8 new commands (the
        _c_o_p_y___f_i_l_e___c_o_m_m_a_n_d, _c_o_p_y___f_i_l_e___u_n_d_o___c_o_m_m_a_n_d, _n_e_w___f_i_l_e___c_o_m_m_a_n_d, _n_e_w___-
        _f_i_l_e___u_n_d_o___c_o_m_m_a_n_d, _n_e_w___t_e_s_t___c_o_m_m_a_n_d, _n_e_w___t_e_s_t___u_n_d_o___c_o_m_m_a_n_d, _r_e_m_o_v_e___-
        _f_i_l_e___c_o_m_m_a_n_d and _r_e_m_o_v_e___f_i_l_e___u_n_d_o___c_o_m_m_a_n_d fields) which may be
        individually configured.  They default to the previous behaviour, for
        backwards compatibility.  See _a_e_p_c_o_n_f(5) for more information.

        * A bug has been fixed in the _a_e_p_a_t_c_h(1) command, which prevented it
        form constructing patches for changes on completed branches.

        * The _a_e_i_p_a_s_s(1) command now issues an error message if the build
        changes a source file.  (Previously it erroneously reported that the
        history tool had done the damage.)

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

        * The missing _a_e_m_v_u(1) man page has been added.

   VVeerrssiioonn 44..11 ((66--DDeecc--22000011))
        NNoottee:: You will need to upgrade all of your Aegis machines
        simultaneously for this release.  It introduces database changes which
        older Aegis release will not be able to cope with.

        * A bug has been fixed in _a_e_d(1), which tried to access a nonexistent
        files under some circumstances.

        * A bug has been fixed in _a_e_d_e.  When two changes created the same
        file, the second change received a misleading message from _a_e_d_e.

        * There is a new German message translation.

        * There is a new _t_k_a_e_p_a(1) command, giving GUI access to the _a_e_p_a(1)
        command.

        * The _a_e_c_l_o_n_e(1) command now runs the _c_h_a_n_g_e___f_i_l_e___c_o_m_m_a_n_d and
        _p_r_o_j_e_c_t___f_i_l_e___c_o_m_m_a_n_d from the project _c_o_n_f_i_g file.  This is in order
        to be more consistent withthe _a_e_c_p(1) command.

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

        * The _h_i_s_t_o_r_y___p_u_t___c_o_m_m_a_n_d and _h_i_s_t_o_r_y___c_r_e_a_t_e___c_o_m_m_a_n_d field of the
        project _c_o_n_f_i_g file are strongly recommended to be identical.  It is
        now possible to only specify the first one, and the second will
        default to it.

        * A bug has been fixed in the _a_e_i_b(1) command, when the _l_i_n_k___-
        _i_n_t_e_g_r_a_t_i_o_n___d_i_r_e_c_t_o_r_y field in the project _c_o_n_f_i_g file is false.

        * There is a new _a_w_a_i_t_i_n_g _r_e_v_i_e_w state, and new _a_e_r_b(1) and _a_e_r_b_u(1)
        commands to go with it.  It is now possible to configure your project
        to have changes enter the _a_w_a_i_t_i_n_g _r_e_v_i_e_w state after _a_e_d_e(1), rather
        than the _b_e_i_n_g _r_e_v_i_e_w_e_d state.  It is also possible to skip the review
        states altogether and immediatelt enter the _a_w_a_i_t_i_n_g _i_n_t_e_g_r_a_t_i_o_n
        state.

        * There is a new _m_o_d_e_P _f_i_e_l_d _f_o_r _t_h_e _s_p_e_c_i_f_i_c_a_t_i_o_n _o_f _a_r_c_h_i_t_e_c_t_u_r_e_s _i_n
        _t_h_e _p_r_o_j_e_c_t _c_o_n_f_i_g _f_i_l_e_.  _T_h_e _m_e_a_n_s _t_h_a_t _y_o_u _c_a_n _d_e_s_i_g_n_a_t_e _s_o_m_e
        _a_r_c_h_i_t_e_c_t_u_r_e_s _a_s _m_a_n_d_a_t_o_r_y _a_n_d _s_o_m_e _a_s _o_p_t_i_o_n_a_l_.  _S_e_e _a_e_p_c_o_n_f_(_5_) _f_o_r
        _m_o_r_e _i_n_f_o_r_m_a_t_i_o_n_.

        * The _a_e_n_b_r(1) command now populates the new branch's baseline with
        symlinks if the project _c_o_n_f_i_g file is set so that they would remain
        after an integration build.  This is more consistent with the _a_e_d_b(1)
        behaviour in the same situation.

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

        * There is a new _a_e_l_s(1) command, which may be used to list
        directories, annotated with Aegis' file attribute information.

        * The _a_e_c_l_e_a_n(1) command now accepts the --KKeeeepp option, so that it
        reports what it would do, rather than actually do anything.

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

   VVeerrssiioonn 33..2299 ((3311--OOcctt--22000011))
        * The _a_e_i_m_p_o_r_t(1) command can now import CVS repositories which
        contain binary files.

        * There is a new _$_{_R_e_a_d___F_i_l_e___S_i_m_p_l_e_} substritution.  It is like
        _$_{_R_e_a_d___F_i_l_e_}, but is does not substitute into the file contents.

        * The _a_e_c_p _-_i_n_d_e_p_e_n_d_e_n_t command now accepts a _-_o_u_t_p_u_t option.

        * There is a new _$_{_e_n_v_i_r_o_n_m_e_n_t_} substitution, allowing you to access
        environment variables within substitutions.  See _a_e_s_u_b(5) for more
        information.

        * There is a new _$_{_p_r_o_j_e_c_t_-_s_p_e_c_i_f_i_c_} substitution, allowing you to
        define project specific value to be inserted into various commands.
        See _a_e_s_u_b(5) and _a_e_p_c_o_n_f(5) for more information.

        * The _a_e_f_i_n_d(1) command now works with completed change.  It searches
        the baseline.

        * A problem with using the ${source} substitution within the
        _i_n_t_e_g_r_a_t_e___p_a_s_s___n_o_t_i_f_y___c_o_m_m_a_n_d has been fixed.  It was getting the path
        wrong.

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

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

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

   VVeerrssiioonn 33..2288 ((2211--AAuugg--22000011))
        * There is a new _a_e_p_a_t_c_h(1) program, which may be used to send an
        receive changes using the classic open source patch format.  See
        _a_e_p_a_t_c_h(1) for more information.

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

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

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

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

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

        * There is a new _$_{_d_e_v_e_l_o_p_e_r _e_m_a_i_l_} substitution, for inserting users'
        preferred email addresses into commands.  Useful for the state
        transition notification commands.

        * There is now more text in the _a_e_p_c_o_n_f(5) man page, explaining how
        each of the pattern fields are applied to file names.  It is now
        explicit when patterns applied to whole file names, and when they only
        applied to path name elements.

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

        * The _a_e_s_u_b _$_s_o_u_r_c_e substitution now works in combination with the
        --BBaasseeLLiinnee option.

        * The _a_e_g_i_s_._s_p_e_c file now mentions the executables again.

   VVeerrssiioonn 33..2277 ((2266--JJuunn--22000011))
        * 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.

   VVeerrssiioonn 33..2266 ((2211--JJuunn--22000011))
        * 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).

   VVeerrssiioonn 33..2255 ((33--AApprr--22000011))
        * 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.

   VVeerrssiioonn 33..2244 ((1100--MMaarr--22000011))
        * There is a new _a_e_i_m_p_o_r_t(1) command, which may be used to import CVS
        archives into Aegis.

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

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

        * There is now a _$_{_c_h_a_n_g_e _d_e_s_c_r_i_p_t_i_o_n_} substitution, allowing you
        access to the brief description of a change in a substitution.  (The
        suggested RCS history command have been changed to use it.)

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

        * Project administrators can also use the _a_e_i_b_u(1) command.  Handy for
        abandoned integrations which inconvenience everyone else.

        * There is a new project _c_o_n_f_i_g file field, called build_covers_all_-
        architectures, which allows you to tell Aegis that your build process
        can cover all architectures simultaneously.

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

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

        * The report generator, _a_e_r_e_p_o_r_t(1), can now access fields of the
        _._a_e_g_i_s_r_c file.  This is important for accessing the preferred email
        address in various reports.  * The "_a_e_c_p _-_d_e_l_t_a" command now adds
        removed files to the change as removed files instead of adding them as
        copied-but-empty files.  This should make reproducing projects more
        accurate, but you need to use _a_e_r_m_u(1) to get rid of them ,rather than
        _a_e_c_p_u(1).

        * The _a_e_d_i_s_t program now adds a "Content-Disposition" header to the
        files it generates.  This means MIME programs will unpack it into a
        correctly named file more often.

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

        Contributions have started to roll in using the "aedist" format.  This
        is very encouraging.  The instructions for how to do this are
        contained in the "Howto", in the _D_e_v_e_l_o_p_e_r section.

   VVeerrssiioonn 33..2233 ((2299--OOcctt--22000000))
        * 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 ----tteemmppllaattee and ----nnoo--
        tteemmppllaattee 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.

   VVeerrssiioonn 33..2222 ((1133--MMaayy--22000000))
        * PPlleeaassee NNoottee:: 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.

   VVeerrssiioonn 33..2211 ((1122--MMaarr--22000000))
        * 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).

   VVeerrssiioonn 33..2200 ((1199--OOcctt--11999999))
        * 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 "--BBRRaanncchh --" as a synonym for the "--TTRRuunnkk 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 --iinntteerraaccttiivvee option has been fixed.  It will actually
        ask you, now.

   VVeerrssiioonn 33..1199 ((44--AAuugg--11999999))
        * 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.

   VVeerrssiioonn 33..1188 ((88--JJuull--11999999))
        * 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.

   VVeerrssiioonn 33..1177 ((2222--JJuunn--11999999))
        * 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.

   VVeerrssiioonn 33..1166 ((1155--JJuunn--11999999))
        * 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.

   VVeerrssiioonn 33..1155 ((22--MMaayy--11999999))
        * The "_a_e_d_i_s_t _-_r_e_c_e_i_v_e" command now accepts a --ddeellttaa 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.

   VVeerrssiioonn 33..1122 ((2266--MMaarr--11999999))
        * The way the Apache configuration files are scanned for and read has
        been changed, to adapt to recent Apache changes.  The _._/_c_o_n_f_i_g_u_r_e
        script will now find it more often.

        * The "_a_e_d_i_s_t _-_r_e_c_e_i_v_e" command has been enhanced to be more robust
        about change sets without headers (some browsers _g_e_n_e_r_o_u_s_l_y strip them
        all off.

        * A bug has been fixed in the "_a_e_d_i_s_t _-_r_e_c_e_i_v_e" command which
        sometimes caused decompression failures.  An unfortunate interaction
        with the Windows NT support caused CRLF sequences in the compressed
        data to be mangled in some cases.

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

        * The way MANPATH is handled on Linux has been improved in the _c_h_s_r_c
        and _p_r_o_f_i_l_e commands.  It will not over-ride _/_e_t_c_/_m_a_n_._c_o_n_f_i_g now.

        * The _a_e_g_i_s_._c_g_i script has been made more robust in coping with _a_e_d_i_s_t
        errors.

        * The _s_y_m_l_i_n_k___e_x_c_e_p_t_i_o_n field of the project _c_o_n_f_i_g file now accepts
        filename patterns, not simply literal filenames.

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

   VVeerrssiioonn 33..1111 ((1177--MMaarr--11999999))
        * 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.

   VVeerrssiioonn 33..1100 ((66--MMaarr--11999999))
        * As of this release you must have zzlliibb 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 --oouuttppuutt
        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 --oouuttppuutt 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.

   VVeerrssiioonn 33..99 ((77--FFeebb--11999999))
        * 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.

   VVeerrssiioonn 33..88 ((11--OOcctt--11999988))
        * 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).

   VVeerrssiioonn 33..77 ((2222--SSeepp--11999988))
        * 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 ----ddeellttaa--ddaattee 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 ----bbaassee--rreellaattiivvee 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.

   VVeerrssiioonn 33..66 ((55--JJuull--11999988))
        * 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 oouutt 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.

   VVeerrssiioonn 33..55 ((2288--MMaayy--11999988))
        * 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.

   VVeerrssiioonn 33..44 ((2222--MMaayy--11999988))
        * 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_.

   VVeerrssiioonn 33..33 ((44--AApprr--11999988))
        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.

   VVeerrssiioonn 33..22 ((2222--MMaarr--11999988))
        * 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.

   VVeerrssiioonn 33..11 ((1155--JJaann--11999988))
        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.

   VVeerrssiioonn 33..00
        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.

   VVeerrssiioonn 33..00 MMaajjoorr NNeeww FFeeaattuurreess
        * 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.

   VVeerrssiioonn 33..00 MMiinnoorr NNeeww FFeeaattuurreess
        * 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 --MMAAXXiimmuumm 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.

   VVeerrssiioonn 33..00 BBuugg FFiixxeess
        * 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.

   VVeerrssiioonn 22..33
        * 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 --EEddiitt option now check for most errors
        before commencing the edit.  This avoids wasted edits in many error
        cases.

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

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

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

        * It is now possible to specify patterns for acceptable and
        unacceptable filenames in the project configuration file.  See
        _a_e_p_c_o_n_f(5) for more information.

        * Four more functions have been added to the report language: _l_e_n_g_t_h,
        _s_p_l_i_t, _s_u_b_s_t_r and _w_r_a_p.  See _a_e_r(5) for more information.

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

        * The _l_i_b_/_c_o_n_f_i_g_._e_x_a_m_p_l_e directory of the distribution now contains
        files with example portions of the project _c_o_n_f_i_g file.  May thanks to
        David R Shue <shue@ll.mit.edu> for this suggestion.

        Changes made in the previous release included:

   VVeerrssiioonn 22..22
        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 --UUNNCChhaannggeedd 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.

   VVeerrssiioonn 22..11
        * Can now ask for history to maintained for file generated by the
        build.  This is useful for generating patch files.

   VVeerrssiioonn 22..00
        * 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
        --EEddiitt command line argument.  See the relevant manual pages for more
        information.

        * The _a_e_n_p_r command now understands the --MMAAJJoorr and --MMIINNOOrr options,
        allowing the initial version of a project to be something other than
        1.0.

        * The _a_e_d command now understands the --AANNttiicciippaattee 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.

   VVeerrssiioonn 11..44
        * 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                      Read Me(Aegis)
