/*
* aegis - project change supervisor
* Copyright (C) 1991-1994, 2002, 2005, 2006, 2008 Peter Miller
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see
* .
*
* normally resides at "projdir"/info/state
*
* read and written by aegis, so it needs locking
*
* If you change this file, don't forget to change
* man5/aepstate.5
*/
#include
/*
* Each test is numbered uniquely. The name is of the form
* t[0-9][0-9][0-9][0-9][am].sh ('a' for automatic and 'm' for manual.)
* It would be possible to number each test within each change, (of the
* form C???T??[AM].sh) but this would not cover -New_ReLeaSe, where the
* test numbering can not start at 1 again, otherwise tests could not be
* retained across releases. Hence, the next test number is not unique
* to any branch, but unique to the whole project.
*/
next_test_number = integer;
/*
* ================== Obsolete Fields ==================
*
* The following fields are only present for old projects. When aegis
* sees them, they will be moved into the "trunk" transaction. A very
* few will persist until the next aenrls.
*/
/*
* File permission mode mask. See umask(2) for more information.
* This value will always be OR'ed with 022, because aegis is paranoid.
*/
umask = integer;
/*
* This field contains a description of the project. Large amounts of
* prose are not required; a single line is sufficient.
*/
description = string;
/*
* This field contains the name of the user to whom baseline files
* belong.
*/
owner_name = string;
/*
* This field contains the name of the group to which baseline files
* belong.
*/
group_name = string;
/*
* If this field is true, then a developer may review her own change.
* This is probably only a good idea for projects of less than 3 people.
* The idea is for as many people as possible to critically examine a
* change.
*/
developer_may_review = boolean;
/*
* If this field is true, then a developer may integrate her own change.
* This is probably only a good idea for projects of less than 3 people.
* The idea is for as many people as possible to critically examine a
* change.
*/
developer_may_integrate = boolean;
/*
* If this field is true, then a reviewer may integrate a change she
* reviewed. This is probably only a good idea for projects of less
* than 3 people. The idea is for as many people as possible to
* critically examine a change.
*/
reviewer_may_integrate = boolean;
/*
* This field is true if developers may created changes, in addition to
* administrators. This tends to be a very useful thing, since
* developers find most of the bugs.
*/
developers_may_create_changes = boolean;
/*
* This command is used to notify a developer that a change requires
* developing; it is issued when a project administrator uses an 'aedb
* -User' command to force development of a change by a specific user.
* All of the substitutions described in aesub(5) are available. This
* field is optional.
*
* Executed as: the new developer.
* Current directory: the development directory of the change
* for the new developer.
* Exit status: ignored.
*/
forced_develop_begin_notify_command = string;
/*
* Notify that a change requires reviewing. All of the substitutions
* described in aesub(5) are available. This field is optional.
*
* This command could also be used to notify other management systems,
* such as progress and defect tracking.
*
* Executed as: the developer.
* Current directory: the development directory of the change
* Exit status: ignored.
*/
develop_end_notify_command = string;
/*
* Notify that a change has been withdrawn from review for further
* development. All of the substitutions described in aesub(5) are
* available. This field is optional.
*
* This command could also be used to notify other management systems,
* such as progress and defect tracking.
*
* Executed as: the developer.
* Current directory: the development directory of the change
* Exit status: ignored.
*/
develop_end_undo_notify_command = string;
/*
* Notify that the review has passed. All of the substitutions
* described in aesub(5) are available. This field is optional.
*
* This command could also be used to notify other management systems,
* such as progress and defect tracking.
*
* Executed as: the reviewer.
* Current directory: the development directory of the change
* Exit status: ignored.
*/
review_pass_notify_command = string;
/*
* Notify that a review pass has has been rescinded. All of the
* substitutions described in aesub(5) are available. This field is
* optional.
*
* This command could also be used to notify other management systems,
* such as progress and defect tracking.
*
* Executed as: the reviewer.
* Current directory: the development directory of the change
* Exit status: ignored.
*/
review_pass_undo_notify_command = string;
/*
* Notify that the review has failed. All of the substitutions
* described in aesub(5) are available. This field is optional.
*
* This command could also be used to notify other management systems,
* such as progress and defect tracking.
*
* Executed as: the reviewer.
* Current directory: the development directory of the change
* Exit status: ignored.
*/
review_fail_notify_command = string;
/*
* Notify that the integration has passed. All of the substitutions
* described in aesub(5) are available. This field is optional.
*
* This command could also be used to notify other management systems,
* such as progress and defect tracking.
*
* Executed as: the project owner.
* Current directory: the new project baseline
* Exit status: ignored.
*/
integrate_pass_notify_command = string;
/*
* Notify that the integration has failed. All of the substitutions
* described in aesub(5) are available. This field is optional.
*
* This command could also be used to notify other management systems,
* such as progress and defect tracking.
*
* Executed as: the integrator.
* Current directory: the development directory of the change
* Exit status: ignored.
*/
integrate_fail_notify_command = string;
/*
* The pathname of where to place new development directories. The
* pathname must be absolute. Only consulted if the uconf field of the
* same name is not set. Defaults to $HOME.
*/
default_development_directory = string;
/*
* This field contains what to do when a change is created with
* no test exemption specified.
*/
default_test_exemption = boolean;
/*
* This field contains a list of copyright years, for use in copyright
* notices, etc. It is updated each integrate_begin, if necessary, to
* include the current year. Available as the ${Copyright_Years}
* substitution, and included in the version listing.
*/
copyright_years = [ integer ];
/*
* Changes are numbered sequentially from one.
* This field records the next unused change number.
*/
next_change_number = integer;
/*
* Deltas are numbered sequentially from one.
* This field records the next unused delta number.
*/
next_delta_number = integer;
/*
* This field is a list of the files in the project.
*/
src =
[
{
/*
* The name of the file, relative to the baseline.
*/
file_name = string;
/*
* What the file is for.
*/
usage = file_usage;
/*
* The edit number of the file.
*/
edit_number = string;
/*
* The change which locked this file.
*
* Caveat: this field is redundant, you can figure it out by scanning
* all of he change files. Having it here is very convenient,
* even though it means multiple updates.
*/
locked_by = integer;
/*
* The change which is about to create this file
* for the first time.
* Same caveat as above.
*/
about_to_be_created_by = integer;
/*
* The change which last deleted this file.
* We never throw them away, becase
* (a) it may be created again, and more imortant
* (b) we need it to recreate earlier deltas.
*/
deleted_by = integer;
}
];
/*
* This field contains a history of integrations for the project.
* Update by each successful 'aegis -Integrate_Pass' command.
*/
history =
[
{
/*
* The delta number of the integration.
*/
delta_number = integer;
/*
* The number of the change which was integrated.
*/
change_number = integer;
/*
* the names by which this delta is known
*/
name = [ string ];
}
];
/*
* The list of changes which have been created to date.
*/
change = [integer];
/*
* The list of administrators of the project.
*/
administrator = [string];
/*
* The list of developers of the project.
*/
developer = [string];
/*
* The list of reviewers of the project.
*/
reviewer = [string];
/*
* The list of integrators of the project.
*/
integrator = [string];
/*
* The change currently being integrated.
* Only one change (within a project) may be integrated at a time.
* Only set when an integration is in progress.
*/
currently_integrating_change = integer;
/*
* The version numbers for (this release of) the project.
* (The major verion defaults to one if not given,
* the minor version defaults to zero if not given.)
*/
version_major = integer;
version_minor = integer;
/*
* The version number this project was derived from.
* This is of most use when producing "patch" files.
*/
version_previous = string;