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)