BK-CHANGES(1)
π
bk changes β show changeset history β¨
ok so this is from the BitKeeper User's Manual, page bk changes(none), and bestie it's a lot but we're gonna get through it together π«Ά
πΈ SYNOPSIS
bk changes [options] [-rrevs | -]
bk changes [options] repo [repo ...]
bk changes -L [options] [repo ...]
bk changes -R [options] [repo ...]
bk changes -L -R [options] [repo ...]
β¨ DESCRIPTION
So the changes command is your lil overview engine β it shows you the changes made to a repository. And there are so many options to slice and dice that: search for particular changesets, view only tagged changesets, limit the search to a particular user, view only local changes, view only remote changes, view changes relative to a set of repositories, etc. etc. etc. π
Here's the vibe check on the five forms up top, in order:
- β The first form shows changes in the local repository. If the last argument is a
-then the revisions to be listed are specified β as keys, tags, and/or revisions β on stdin. - β The second form shows changes in the named repository.
- β The third form lists changes found in the local repository but not in the remote repository. If the remote repository isn't specified, the outgoing parent[s] of the local repository is/are used, i.e., the listing is what would be sent on a push (when used with
-a). π - β The fourth form lists changes found in the remote repository but not in the local repository. If the remote repository isn't specified, the incoming parent[s] of the local repository is/are used, i.e., the listing is what would be received on a pull (when used with
-a). π - β The fifth form lists changes unique to either the remote or the local repository. The local changes are listed first, then the remote changes, and both sets of changes have a title line to separate them. π
In all but the second form, the changes command must be run from within a repository, and that repository is the local repository while the named repository is the remote repository. All the other selection options are applied to the list of local-or-remote-only changesets. iykyk π
The changesets to be listed may be limited to a revision, a range of revisions, the last (or first) N changesets, or a list of revisions on stdin. The default is all revisions. And heads up: specifying revisions is incompatible with the -R/-L options. β οΈ
π OPTIONS
-nβ a numeric argument that limits the number of changesets printed.-/str/[igt]β list only those changesets whose comments contain the string str. str may be a regular expression, or if thegoption is specified, a glob. If there's a trailingithen ignore case in the search. If there's a trailingtthen search only in tag names. And yes, it would be nice if this worked on (meta)data other than the comments but as of now it does not π.-aβ list all deltas, including tag deltas. The default is to list the tag name on the changeset implied by the tag. Implies-e. An additional-eafter this option will turn off the listing of the empty merge deltas (the-eoption is inverted from its previous value each time the option is seen) π.--begin=scriptβ the dspec v2 language (seebk help dspec, in particular the examples) is awk like and has begin/end sections. This option allows you to specify the body of a begin section (if the file also has a begin section then both are run; order is undefined π). A begin script is typically used with an on disk dspec file that has been written in a way to do one thing by default and another if a variable is set to non-zero.-cdatesβ specifies the changesets to be listed as a date range, i.e.,-c-6W..lists the last 6 weeks worth of changes. ποΈ-Dβ when showing local or remote only changes and there are multiple local or remote repositories specified (or implied via the parent pointer[s]), there may be duplicate changesets which are present in more than one repository. If this option is specified, then the duplicates are filtered out such that the changesets listed are a unique set. This option combined with-aLor-aRis used to answer the questions: "What is only in this repository relative to all of the specified repositories?" or "What is only in one or more of the remote repositories but not in this local repository?" respectively. π-ddspecβ override the default dspec, allows for arbitrary output formats.--dspecf=fileβ like-dbut read the dspec from a file.-eβ show empty merge changesets. By default, these are not shown.-fβ print the changes in forward (oldest to newest) order. The default is backwards in time, i.e., most recent to least recent order. βͺ--htmlβ produce html as output. May not be combined with-d. π«-ipatβ include information only from changesets involving files matching pat pattern (see below).-kβ produce a list of matching changeset keys, usually for scripts. Equivalent to-Dnd:KEY:.-Lβ list only those changesets which are unique to the local repository. Requires either a BK url or a valid repository parent. Will not report tags, or empty merges. Use with-ato see tags and empty merges, i.e., everything which would be sent back with abk pushπ.--latticeβ restrict the changesets to those on the lattice between the two range endpoints. Unlike a range, the lower bound is included in the output. Empty merge nodes are included (unlike the default output). πΈοΈ--longestβ restrict the changesets to those on the longest line between the two range endpoints. Unlike a range, the lower bound is included in the output. Empty merge nodes are included (unlike the default output). π-mβ do not show any merge changesets, empty or not.-nβ add a newline to each printed record (sometimes useful with-d). (yes bestie,-nshows up twice in this list with two totally different jobs β that's just how it is, no cap)-qβ when listing local/remote changes from multiple parents (or remote repositories) do not print the location of the remote repositories. This option is implied by-D. π€«-rrevsβ specifies the changesets to be listed, i.e.,1.100...-Rβ list only those changesets which are unique to the remote repository. Requires either a BK url or a valid repository parent. Will not report tags, or empty merges. Use with-ato see tags and empty merges, i.e., everything which would be brought over with abk pullπ«³.--onelineβ print a summary of every cset in a single line. It is an alias for:bk changes -nd'$if(:CHANGESET: && !:COMPONENT_V:){:MD5KEY: $first(:C:)}$else{ :DPN:}'--shortβ with the system supplied dspecs, this will limit the file/commit comments to only the first line (it does so by setting the$9dspec variable to1, the system supplied dspecs use that to change their output). βοΈ--sparse-okβ when using include/exclude patterns (-i/-x) and the patterns could match in a component that is not populated, BitKeeper will refuse to perform the search and print an error. This option allows searching in sparse products (with some components not populated) without erroring. π§-t,--tagsβ only list changesets which are currently tagged. Use-tt(or--all-tags) to list all changesets which have ever been tagged, annotated with the tag's current state. π·οΈ-Tβ sort the deltas in a changeset in time order. The default is to sort by current file name. This option only affects verbose (-v) output.-uuserβ only list changesets created by user. This option may appear multiple times, in which case the changeset is listed if it matches any of the specified users. π-Uuserβ only list changesets created by someone other than user. This option may appear multiple times, in which case the changeset is not listed if it matches any of the specified users.-vβ shows individual file change history as well as changeset history. π₯-vvβ same as-vexcept that each file's change history is followed by unified diffs for that change (using the:DIFFS_UP:keyword).-xpatβ exclude information from changesets involving files matching pat pattern (see below).
ok that's the whole options list, we ate that π more coming in part 2, don't touch that dial π¦
π INCLUDE/EXCLUDE PROCESSING π
okay bestie, so this part is all about controlling which changesets get printed, and honestly it's giving bouncer-at-the-club energy π
- You can have multiple include and/or exclude patterns. Not just one. Go off.
- The patterns are a file glob as used by
bk ignoreβ same glob rules, no cap. - They're matched against the partial pathname from the root of the repository.
- If that partial pathname matches any of the exclude patterns, the changeset is skipped. Bye π
- If there are one or more include patterns but the partial pathname doesn't match any of them, the changeset is also skipped.
- Exclude processing takes precedence over include processing. Periodt. Exclude wins, every time.
Now here's the messy little plot twist π when reporting info there can be ambiguity about which name gets used for include/exclude processing, because some files may have been moved since the changeset in question. The include/exclude processing always applies to the file name as it was as of the changeset in question β not what it's called now.
Like, imagine a file that's currently deleted, but at the time of the changeset it was in src/foo.c. If you told the system to report src/*, then the file will be in the set β¨ iykyk.
π EXAMPLES π
Sample output, look at this iconic little log:
ChangeSet@1.607, 2000β02β21 14:05:25β08:00, awc@bitkeeper.com
update citool to use the "bk unedit" interface.
ChangeSet@1.606, 2000β02β21 13:35:21β08:00, awc@bitkeeper.com
Allow BitKeeper to be installed in an alternate directory.
The install directory is computed from the $PATH variable and
the bk symlink.
ChangeSet@1.605, 2000β02β20 01:32:19β08:00, lm@bitkeeper.com
Fix a diagnostic in pull.
An aborted attempt at key compression.
π SEE ALSO π
go read these next, bestie β they're all linked and lowkey essential:
bkβcommitbkβglobbkβpendingbkβlogbkβpcrebkβpullbkβpushbkβrangebkβrevtoolbkβsccslogbkβset
π CATEGORY π
CommonRepository
okay that's the whole page, and I'm obsessed with how much detail we just covered π«Ά this masterpiece was brought to you by BitKeeper Inc, version 1E1, and the footer's date slot literally says bk changes(none) β iconic, honestly π
β¨
π¦ where this page comes from
- alpine 3.24: bitkeeper-doc 7.3.3-r1 Β· Apache-2.0
- Copyright (c) 1998-2015 BitKeeper Inc
- Copyright (C) 1989, 1990, 1991, 1992, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms