bk set(7.3ce) BitKeeper User's Manual bk set(7.3ce) NAME bk set - set operations SYNOPSIS bk set [-adeklnosSx] [-r<rev>] [-t[<type>]] [<file>] DESCRIPTION The bk set command performs set operations on a BitKeeper file. This command provides the following set operations: union, intersection, difference and symmetric difference. It also provides the member func- tion (is this element a member of the set?) as well as the list func- tion (list all sets which contain this member). If the file is not specified, it defaults to the ChangeSet file. OUTPUT OPTIONS The default output is a list of revisions, one per line. The output may be restricted to only tagged revisions, and may be forced into revision, tag, or key format. Note that only the ChangeSet file may have tags, which means that combining tag output format with a regular file has unexpected results. -k list all answers as keys, not as tags or revisions. -n prefix each output line with the filename, i.e., ChangeSet|1.3, so that the output may be fed to other programs, such as bk log. -t list all answers as tags where possible, else revisions. -tt list only those answers which are tagged and list those as the tag not the revision. -tr list only those answers which are tagged but list those as revi- sions. -tk list only those answers which are tagged but list those as keys. SPECIFYING SETS If a revision is specified for a set argument, the set is the set of deltas which make up that revision. For example, in a simple history without branches, revision 1.5 implies the set {1.1, 1.2, 1.3, 1.4, 1.5}. A revision may be specified as a revision, as a symbolic tag, or as a BitKeeper key. It may also be specified as a "-", for the second set only, in which case it expects a list of revisions (or keys) on stdin, one per line. SET OPERATIONS UNION (<setA> | <setB>) bk set [<output opts>] -o <setA> <setB> [<file>] The union operation, familiar to programmers as a "bitwise or", lists all members which occur in either set. INTERSECTION (<setA> & <setB>) bk set [<output opts>] -a <setA> <setB> [<file>] The intersection operator, familiar to programmers as a "bitwise and", lists all members which occur in both sets. DIFFERENCE (~<setA> & <setB>) bk set [<output opts>] -d <setA> <setB> [<file>] The difference operator lists all members in setB which are not in setA. This is the most useful of the set operations, see the examples below. SYMMETRIC DIFFERENCE (<setA> ^ <setB>) bk set [<output opts>] -x <setA> <setB> [<file>] The symmetric difference operator, familiar to programmers as an "exclusive or", lists all members which occur in only one of the two sets. ELEMENT bk set [<output opts>] -e -r<rev> <setA> [<file>] The element operator treats the specified revision as a single element, not as an implied set, and lists the element if it is in the set. LIST bk set -l -r<rev> [<file>] The list operator treats the specified revision as a single element, not as an implied set, and lists all sets (as revisions) which contain the element as part of their set. It is typically used to see if a bug fix is in a particular release. If the changeset has been excluded from a later changeset, the later changeset and its descendants will not be listed. SET bk set -s -r<rev> [<file>] The set operator treats the specified revision as a set, and lists all elements of that set. NESTED The set command will look at the product changeset file by default. -S perform the set operation on the current component. EXAMPLES A good use of this command is the generation of release notes. To do so, pick the starting and ending points and do this: $ bk set -d -rbk-2.0 -rbk-2.0.1 | bk changes - ChangeSet@1.1425.5.19, 2001-10-12 15:18:06, lm@work utils.c: Remove debugging. Sleep 50 milliseconds when waiting for the lock. ChangeSet@1.1425.5.20, 2001-10-15 15:57:42, lm@disks A weekend's worth of testing of locking over NFS turned into this cset. ChangeSet@1.1425.5.21, 2001-10-16 08:35:26, lm@disks The cset lock was too fine grained. This is a short term fix, the longer term fix is the per file locking Andrew is working on. TAG: bk-2.0.1 To see the tagged releases which contain bk-2.0.3: $ bk set -l -tt -rbk-2.0.3 bk-2.0.3 bk-2.0.4 bk-2.0.4b bk-2.1.2 bk-2.1.3 bk-3par_merge bk-3par_merge2 SEE ALSO bk changes bk log CATEGORY Utility BitKeeper Inc 1E1 bk set(7.3ce)