Rules for selecting versions of elements to appear in a view
mkbranch branch-type-name [ -override ]
...
[ end mkbranch [ branch-type-name ] ]
time date-time
...
[ end time [ date-time ] ]
A view's config spec (configuration specification) contains an ordered set of rules for selecting versions of ClearCase elements. The view's associated view_server process populates a view with versions by evaluating the config spec rules.
In a dynamic view, version selection is dynamic. Each time a reference is made to a file or directory element-either by ClearCase software or by standard programs-the view_server uses the config spec to select a particular version of the element. (In practice, a variety of caching techniques and optimizations reduce the computational requirements.)
In a snapshot view, users invoke an update operation to select versions from the VOB.
Each view is created with a copy of the systemwide default config spec, ccase-home-dir\default_config_spec:
element * CHECKEDOUT | (For any element, select the checked out version, if any) |
element * \main\LATEST | (otherwise, select most recent version on the main branch) |
Modifying this file changes the config spec that newly created views receive, but does not affect any existing view.
An individual view's config spec is stored in its view storage directory, in two forms:
Do not modify either of these files directly; instead, use the commands listed below. Different views' config specs are independent: they may contain the same set of rules, but changing one view's config spec never affects any other view.
ClearCase commands for manipulating config specs:
catcs | Lists a view's config spec. |
Makes a specified file a view's config spec. | |
Revises the current config spec of a view. | |
update -add_loadrules | Adds load rules to the config spec of a snapshot view while updating the view. |
You can edit a config spec on the Config Spec tab in the Properties of View Browser or during view creation with the View Creation Wizard.
The set of elements considered for version selection is different for the two kinds of views:
For each element, the following procedure determines which version, if any, is in the view.
cleartool: Error: Trouble looking up element "ht.c" in directory ".". |
Standard commands that access the element print errors like this one:
The request could not be performed because of an I/O device error. |
Because the rules in a config spec are processed in order, varying the order may affect version selection. For example, suppose this rule appears near the beginning of a config spec:
element * \main\LATEST
Any subsequent rules in the config spec will never be used, because the rule will always provide a match; every element has a most-recent version on its main branch.
NOTE: The order in which the load rules for a snapshot view are specified is not important.
The config spec for a snapshot view must contain element * CHECKEDOUT as the first element rule.
If no version of an element matches any rule in the config spec:
not found error when attempting to access the element.
[no version selected] annotation. You can specify the element in commands that access the VOB database only, such as describe, lsvtree, and mklabel.
A view's config spec has no effect on the private objects in a view, such as view-private files, links, directories; or, in the case of a dynamic view, derived objects. View-private objects are always accessible.
Exception: (Dynamic views only) If a config spec lacks a CHECKEDOUT rule, the view-private file that is a file element's checked-out version is not visible. See Special Version Selectors below.
Each config spec rule must be contained within a single physical text line; you cannot use a caret (^) or other line continuation character to continue a rule onto the next line. Multiple rules can be placed on a single line, separated by semicolon (;) characters.
Lines that begin with a number sign (#) are comments.
Extra white space (SPACE, TAB, vertical-tab, and form-feed) characters are ignored, except within the version selector. If a version selector includes white space, enclose it in single quotes.
If a load rule specifies a file or directory name that includes one or more SPACE characters, you must enclose the entire pathname in either single-quotes (`) or double quotes (").
In general, VOBs, views, and the ClearCase tools that access them are case-sensitive. Therefore, config spec rules must use case-correct pathnames.
You can use slashes ( / ) or backslashes ( \ ) as pathname separators in pathname patterns and version selectors unless you are sharing the config spec between UNIX and Windows hosts. In that case, you must use slashes. (See SHARING CONFIG SPECS BETWEEN UNIX AND WINDOWS HOSTS.)
Windows and UNIX ClearCase clients can share config specs, which are portable between the two operating systems. That is, clients on both systems, using views whose storage directories reside on either kind of host, can set and edit the same set of config specs. However, Windows and UNIX network regions often use different VOB-tags to register the same VOBs. Only single-component VOB-tag names, like \src2vob, are permitted on Windows clients; multiple-component VOB-tags, like /vobs/src/proj1, are common on UNIX. When the VOB-tags diverge between regions, config spec element rules that use full pathnames (which include VOB-tags) are resolvable (at config spec compile time) only by hosts in the applicable network region. This implies a general restriction regarding shared config specs: a given config spec must be compiled only by hosts on one operating system or the other-the operating system for which full pathnames in element rules make sense. That is, a config spec with full pathnames can be shared across network regions, even when VOB-tags disagree, but it must be compiled in the right place.
This restriction does not apply if any of the following are true:
An in-use config spec exists in both text file and compiled formats (both of which are visible in the view's storage directory). A config spec in its compiled form is portable. The restriction is that full VOB pathnames in element rules must be resolvable at compile time. A config spec is compiled if a client executes either of these cleartool commands: edcs or setcs -current. Therefore, if a client on the "wrong" operating system recompiles a config spec with one of these commands, the config spec becomes unusable by any client using that view. If this happens, simply recompile the config spec on the "right" operating system.
A sample element rule that could be problematic:
element /vob_p2/src/* /main/rel2/LATEST
If the VOB is registered with VOB-tag \vob_p2 on a Windows network region, but with VOB-tag /vobs/vob_p2 on a UNIX network region, only Windows ClearCase clients can compile the config spec.
When writing config specs to be shared by Windows and UNIX ClearCase clients, use the slash (/), not the backslash (\), as the pathname separator in pathname patterns and version selectors. ClearCase on Windows can parse either separator in pathnames; ClearCase on UNIX recognizes / only.
A standard version-selection rule takes this form:
The following subsections describe these components.
The scope specifies that the rule applies to all elements, or restricts the rule to a particular type of element.
Selecting Versions of VOB Symbolic Links. There is no VOB symbolic link scope. A VOB symbolic link is cataloged (listed) in one or more versions of a directory element. The link appears in a view if both of these conditions are true:
A pathname pattern, which can include any ClearCase wildcard (see the wildcards_ccase reference page for a complete list). For example:
The setcs or edcs command fails if it encounters an invalid location in any config spec rule:
cleartool: Error: No registered VOB tag in path: "..."
You can use a version label, version-ID, or any other standard ClearCase version selector. See the version_selector reference page for a complete list. Some examples follow:
Standard version selectors cannot select checked-out versions in a config spec rule. (They can in other ClearCase contexts, such as the find command.) Instead, you must use the special version selector, CHECKEDOUT, described below.
Special Version Selectors. The following special version selectors are valid only in a config spec rule, not in any other ClearCase version-selection context:
No such file or directory) error when a standard UNIX operating system program references the element. For dynamic views:
|
|
|
error on reference.Some config spec rules can include an additional clause, which modifies the rule's meaning.
date | := | day-of-week | long-date |
time | := | h[h]:m[m][:s[s]] [UTC [ [ + | - ]h[h][:m[m] ] ] ] |
day-of-week | := | today |yesterday |Sunday | ... |Saturday |Sun | ... |Sat |
long-date | := | d[d]-month[-[yy]yy] |
month | := | January |... |December |Jan |... |Dec |
create version event records. (No error occurs if you use a -time clause in a rule that does not involve the version label LATEST; the clause has no effect.)\main\LATEST -time 10-Jul.19:00 | Most recent version on main branch, as of 7 P.M. on July 10. |
...\bugfix\LATEST -time yesterday | Most recent version on a branch named bugfix (which can be at any branching level), as of the beginning of yesterday (12 A.M.). |
\main\bugfix\LATEST -time Wed.12:00 | Most recent version on subbranch bugfix of the main branch, as of noon on the most recent Wednesday. |
-time 5-Dec.13:00 | December 5, at 1 P.M. |
-time 11:23:00 | Today, at 11:23 A.M. |
-time 12-jun-99 | June 12, 1999, at 00:00 A.M. |
-time now | Today, at this moment. |
-time 9-Aug.10:00UTC | August 9, at 10 A.M. GMT. |
|
|
A config spec can include a cascade of auto-make-branch rules, causing checkout to create multiple branching levels at once. checkout keeps performing auto-make-branch until version 0 on the newly created branch is not selected by a rule with a -mkbranch clause; then, it checks out that version. For example:
| (1) | element * CHECKEDOUT |
| (2) | element * ...\br2\LATEST |
| (3) | element * ...\br1\LATEST -mkbranch br2 |
| (4) | element * MYLABEL -mkbranch br1 |
| (5) | element * \main\LATEST |
If you check out an element in a view that currently selects the version labeled MYLABEL:
A create branch rule takes the following form:
mkbranch branch-type-name [ -override ]
<config spec lines>
[ end mkbranch [ branch-type-name ] ]
This rule is similar to the -mkbranch clause; use it when you want to add a -mkbranch clause to many lines in a complex config spec.
mkbranch and end mkbranch rules may be nested. For example:
element * .../branch2/LATEST
mkbranch branch2
element * .../branch1/LATEST
mkbranch branch1
element * /main/LATEST
end mkbranch branch1
end mkbranch branch2
Checking out foo.c creates foo.c@@/main/branch1/branch2/CHECKEDOUT. This is a multiple-level mkbranch.
time date-time
[ end time [ date-time ] ]
It is analogous to the optional -time clause. A time rule modifies the meaning of the special version label LATEST in subsequent rules, with the following exceptions:
Use end time to limit the effect of a time rule to a certain range. The date-time argument is optional with end time, but if you include it, it must match the date-time argument specified with the time rule.
The date-time specification is evaluated when you set or edit the config spec, and whenever the view_server process is started (for example, with startview or setview (dynamic views only)). Thus, the meaning of a relative specification, such as today, may change over time. However, the date-time is not evaluated at run time. So if you last performed one of the commands listed above four days ago, the meaning of a relative specification, such as today, has the value of the date four days ago, not the value of the date today.
A file-inclusion rule takes this form:
The argument specifies a text file containing one or more config spec rules (possibly other include rules). Include files are reread on each execution of setcs and edcs. A file-inclusion rule must be the last rule in a line. For example,
time date-time; include config-spec-pname
Load rules define which elements are loaded (copied) into a snapshot view (by contrast, element rules define which version of an element is selected). A load rule takes this form:
The argument specifies one or more file or directory elements. Naming a directory element implies the directory and all elements below the directory. Naming a file element specifies that element only.
More than one load rule can appear in a config spec; you must have at least one to see any files in a snapshot view. (Load rules in the config spec of a dynamic view are ignored.)
Load rules can be positioned anywhere in a config spec, and their order is irrelevant.
An element can be selected by more than one load rule without causing an error.
VOB links (both symbolic links and hard links) are followed, and the link target is copied into the snapshot view at the location in which the link appeared.
include \proj\cspecs\v1_bugfix_rules
time 10-Jul.19:00
element \atria\lib\* ...\new\LATEST
element * \main\LATEST
end time
element \proj1\include\utility.h \main\3
element *.c \main\LATEST
element * ...\bugfix\LATEST
element * CHECKEDOUT | (If no checked-out version, select latest version on the 'maint' branch, which may or may not be a direct subbranch of main) |
element * BL2.6 | (Else, select version labeled 'BL2.6' from any branch) |
element * \main\LATEST |
|
element * CHECKEDOUT |
|
element -file *.c \main\{RESPONSIBLE=="jpb"} | (For any '.c' file, select latest version on main branch for which 'jpb' is responsible) |
element -file \project\utils\...\*.c \main\BL2.6 | (Else, select version labeled BL2.6 on main branch from \project\utils directory, or any of its subdirectories) |
element * \main\LATEST |
|
element * CHECKEDOUT | (If no version is checked out, select latest version on 'bl3_bugs' branch) |
element -file * BL2.6 -mkbranch bl3_bugs | (Else, select version labeled 'BL2.6' and create 'bl3_bugs' branch on checkout) |
element -file * \main\LATEST -mkbranch bl3_bugs | (Else, select latest version on main branch and create new branch on checkout) |
element * CHECKEDOUT
element * ...\bl3_bugs\LATEST
mkbranch bl3_bugs
element -file * BL2.6
element -file * \main\LATEST
end mkbranch bl3_bugs
element * REL3 -nocheckout
element * CHECKEDOUT
element * bug_fix_v1.1.1\LATEST
element * ...\bug_fix_v1.1\LATEST -mkbranch bug_fix_v1.1.1
element * ...\bug_fix_v1\LATEST -mkbranch bug_fix_v1.1
element * \main\LATEST -mkbranch bug_fix_v1
When a user checks out an element for which none of these branches yet exists, a cascade of
auto-make-branch activity takes place:
Z:\myvob> cleartool checkout -nc .
Created branch "bug_fix_v1" from "." version "\main\0".
Created branch "bug_fix_v1.1" from "." version "\main\bug_fix_v1\0".
Created branch "bug_fix_v1.1.1" from "." version "\main\bug_fix_v1\bug_fix_v1.1\0".
Checked out "." from version "\main\bug_fix_v1\bug_fix_v1.1\bug_fix_v1.1.1\0".
element * CHECKEDOUT
mkbranch bug_fix_v2 -override
element * bug_fix_v1.1.1\LATEST
element * ...\bug_fix_v1.1\LATEST -mkbranch bug_fix_v1.1.1
element * ...\bug_fix_v1\LATEST -mkbranch bug_fix_v1.1
element * \main\LATEST -mkbranch bug_fix_v1
end mkbranch bug_fix_v2
element * CHECKEDOUT
element *... \main\LATEST
load \applets\cmdlg
load \applets\testdlg\opendlg.h
ccase-home-dir\default_config_spec
view-storage-directory\config_spec
view-storage-directory\.compiled_spec
catcs, checkout, checkin, edcs, ls, mkbranch, setcs, setview, version_selector, view, view_server
|
Feedback on the documentation in this site? We welcome any comments!
Copyright © 1999 by Rational Software Corporation. All rights reserved. |