/*
* aegis - project change supervisor
* Copyright (C) 1991-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
* .
*
* If you add a new project attribute, you must edit all of these files...
* aegis/aenpr.cc Where it is defaulted (if not zero)
* aegis/aenrls.cc Where it is defaulted (if not zero)
* libaegis/change/branch/*.cc Where it is set&get
* libaegis/change/branch.h Where it is in a prototype
* libaegis/change/cstate/improve.cc Where it is defaulted
* libaegis/cstate.def Where it is defined
* libaegis/pattr.def Where it is defined
* libaegis/project/*.cc Where it is set&get
* libaegis/project.h Where it is in a prototype
* libaegis/project/new_branch.cc Where it is copied
* libaegis/project/pattr/get.cc Where it is copied
* libaegis/project/pattr/set.cc Where it is copied
* lib/en/man5/aecstate.5 Where it is documented
* lib/en/man5/aepattr.5 Where it is documented
* lib/wish/proj_attr.rpt Where it is read
* script/tkaepa.in Where it is edited.
* You will also have to fix a whole bunch of tests.
*/
#include
/*
* This field contains
* a description of the project.
* Large amounts of prose are not required;
* a single line is sufficient.
*/
description = 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 begun
* 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_begin_notify_command = string;
/*
* notify that the review has no longer begun
* 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_begin_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.
* Defaults to the develop_end_notify_command field.
*
* 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;
/*
* 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 what to do when a change is created with
* no test exemption specified.
*/
default_test_exemption = boolean;
/*
* This field contains what to do when a change is created with no
* regression test exemption specified. Defaults to true if not set.
*/
default_test_regression_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 ];
/*
* The minimum change number for aenc, if no change number is specified.
* This allows the low-numbered change numbers to be used for branches
* later in the project. Defaults to 10 if not set, may not be less
* than 1.
*/
minimum_change_number = integer;
/*
* This attribute is used to control the reuse of change numbers to fill
* in gaps caused by using aencu. Defaults to true if not set.
*/
reuse_change_numbers = boolean;
/*
* The minimum branch number for aenbr, if no branch number is specified.
* Defaults to 1 if not set.
*/
minimum_branch_number = integer;
/*
* This field may be set to true if you want to skip various unlucky
* numbers for changes, branches and tests. Various traditions are
* avoided, both Eastern and Western. Defaults to false if not set.
*/
skip_unlucky = boolean;
/*
* This field may be set to true if you want to compress the database
* on writing. (It is always uncompressed on reading if necessary.)
*/
compress_database = boolean;
/*
* This field controls the state entered on a successfil develop end
* state transition. The default is "being reviewed".
*
* goto_being_reviewed
* This means that the state machine goes from the being_developed
* state to the being_reviewed state. The aerb command only sends
* informative email.
*
* goto_awaiting_review
* This means that the state machine goes from the being_developed
* state to the awaiting_review state. The aerb command is now
* essential.
*
* goto_awaiting_integration
* This means that the state machine goes from the being_developed
* state into the awaiting_inmtegartion state. Code review is
* skipped entirely.
*
* Note that the "developer_may_review" setting may not contradict the
* "develop_end_action". If developers may not review their own work,
* then you may not goto directly to being integrated (as this means
* much te same thing).
*/
develop_end_action = (goto_being_reviewed, goto_awaiting_review,
goto_awaiting_integration);
/*
* This field may be used to protect the development directory after
* the "being developed" state. It does this by making it read-only at
* develop end time. Should the change ever be returned to the "being
* developed" state, it will be made writble again.
*
* The default is false, meaning to leave the development directory
* writable while is being reviewed and integrated. Aegis' normal
* tampering detection will notice if files are changed, but there is
* no reminder to the developer that the change should be left alone.
*/
protect_development_directory = boolean;