All source files require a progress indicator

You can monitor the progress of individual files or determine which or how many files are in a particular state. You can use attributes to preserve this information and triggers to collect it.

In this case, you can create a string-valued attribute type, Status, which accepts a specified set of values.

Attribute definition on Linux and the UNIX system

cleartool mkattype –c "standard file levels" \
–enum ' "inactive","under_devt","QA_approved" ' Status
Created attribute type "Status". 

Attribute Definition on the Windows® system

cleartool mkattype –c "standard file levels" ^
–enum "\"inactive\",\"under_devt\",\"QA_approved\"" Status
Created attribute type "Status". 

Developers apply the Status attribute to many different versions of an element. Its value in early versions on a branch is likely to be inactive and under_devt; on later versions, its value is QA_approved. The same value can be used for several versions, or moved from an earlier version to a later version.

To enforce consistent application of this attribute to versions of all source files, you can create a CheckStatus trigger whose action script prevents developers from checking in versions that do not have a Status attribute.

Trigger definition on Linux and the UNIX system

cleartool mktrtype –element –all –preop checkin \
–c "all versions must have Status attribute" \
–exec 'Perl /public/scripts/check_status.pl' CheckStatus 

Trigger definition on the Windows® system

cleartool mktrtype –element –all –preop checkin ^ 
–c "all versions must have Status attribute" ^
–exec "ccperl \\neon\scripts\check_status.pl" CheckStatus 

Trigger action script

$pname = $ENV{CLEARCASE_PN’};
$val = "";
$val = ‘cleartool describe -short -aattr Status $pname‘;

if ($val eq "") {
exit (1);
} else {
   exit (0);
}