BK-CONFIG-ETC(1)

๐Ÿ“ฆ version 7.3.3, in alpine 3.24

๐ŸŽ€ NAME ๐ŸŽ€

bk configโ€etc โ€” configuring BitKeeper (this is the BitKeeper User's Manual page for it, bestie, welcome) ๐Ÿ’–


โœจ DESCRIPTION โœจ

Okay so first things first: BitKeeper config files are where all the repository configuration tea lives ๐Ÿซ– โ€” that includes the project description, licensing information, user preferences, BK/Web preferences, and contact information. All of it. Every entry in a config file is literally just a keyโ€value pair, and this page is gonna walk you through the various configuration keys and their possible values. Slay.

Now, real talk: every single BitKeeper repository must have some minimum configuration information available, otherwise BitKeeper commands just won't execute properly ๐Ÿ˜ญ. No cap, it's mandatory.

So when BitKeeper goes looking for repository configuration information, it checks these places in this exact order ๐Ÿ‘‘:

  1. `bk root`/BitKeeper/etc/config โ€” this repository's config file
  2. `bk root โ€P`/BitKeeper/etc/config โ€” product repository config file
  3. `bk dotbk`/config โ€” personal config file
  4. /etc/BitKeeper/etc/config โ€” perโ€machine config file
  5. `bk bin`/config โ€” perโ€installation config file
  6. `bk root`/BitKeeper/log/config โ€” this repository's config file
  7. `bk root โ€P`/BitKeeper/log/config โ€” product repository config file
  8. $BK_CONFIG โ€” environment variable

Order matters, periodt. First match vibe check and all that โœจ.

Heads up bestie: the BitKeeper/log/config file[s] are not version controlled, but the BitKeeper/etc/config file[s] are. The whole reason you get two of them is so you have a way to keep repository specific values that just... don't propagate ๐ŸŒธ.

And if you're obsessed (like me) with the detailed information about how the whole search order works, or you wanna get help debugging your configuration, go peek at bk help config โ€” it's giving documentation main character energy ๐Ÿ’….


๐Ÿ”ง CONFIG FILE ENTRIES

Okay bestie, this is the part where the config file actually does stuff. Every entry below is a little knob you can turn. Slay responsibly. ๐Ÿ’…


๐Ÿช„ AUTOFIX

So bk check can literally fix a bunch of problems it finds in a repo all by itself. No cap.

The default vibe: this variable is on in newly created repositories, and the variable gets passed straight through as the โˆ’f option to bk check.

Wanna turn it on or off? Drop one of these into your config:

autofix:yes
autofix:no

๐Ÿ“ BAM SIZE

The optional BAM variable controls how large a binary needs to be before it gets stored in BAM. Quick heads up: the size is compared to the size of the initial checkin only. ๐Ÿ‘‘

Example values the variable can hold:

BAM: on
BAM: off
BAM: 1K
BAM: 64K

A "K" suffix means multiply by 1024, and a "M" suffix means multiply by 1024ห†2. If you don't specify anything, the default size is 64K. ๐Ÿ’–


๐ŸŒˆ BK/WEB PREFERENCES

BK/Web preferences can be specified in your configuration. If you set these, the info you give will show up on the BK/Web site for the project. Iconic little glow-up for your repo ngl. โœจ

  • bkweb โ€” specify the BK/Web address for a project
  • homepage โ€” the home page for your project or company
  • master โ€” the location from which source can be cloned

For example,

bkweb:    http://mysql.bkbits.net:8080/mysqlโ€5.0
master:   bk://mysql.bkbits.net/mysqlโ€5.0
homepage: http://www.mysql.com

๐Ÿฆ‹ CHECKOUT MODE

This one sets the checkout mode for a repository. If it's unset, the default is "none". To change the default, add or change this line in your configuration:

checkout:<option>

โ€ฆwhere option is one of these:

  • get โ€” automatically do a bk get file after doing a bk delta file. (Checkout in readโ€only mode.)
  • edit โ€” automatically do a bk edit file after doing a bk delta file. Note: this will also adjust the modification time of the s.file to be two seconds before the modification time of the gfile, which is needed in order to prevent make(1) from attempting to reโ€get the file. (Checkout in edit mode.)
  • last โ€” preserve the previous state of file. This is like checkout:none for a clone. If the file was later locked and then checked in, it will be checked out again with a lock.
  • none โ€” clear the gfile after doing a bk delta file. (This is the default.)

For those repositories with BAM data, there's a checkout mode specifically for BAM files:

BAM_checkout:option

โ€ฆwhere option is as above.

The BitKeeper support team recommends "BAM_checkout:last". ๐Ÿซถ


โฐ CLOCK SKEW

Okay so when BitKeeper is looking for modified files, file time stamps can be compared to a perโ€repo database to figure out when files are unmodified โ€” which is a substantial performance improvement in larger repositories. Literally the glow-up your big repo deserves. ๐Ÿ”ฅ

The clock_skew parameter controls how old a file must be before file time stamps are trusted. A certain amount of clock skew is strongly advised, since the use of network file systems can cause the time stamps to be incorrect. The time is in seconds and defaults to 604800 (one week).

clock_skew: on          # use system defaults
clock_skew: 86400       # one day
clock_skew: off         # disable trusting of time stamps

๐ŸŽ€ COMPRESSION

By default, when you set up a repository in compatibility mode, the compression algorithm will be set to gzip in your configuration like this:

compression:gzip

This results in the compression of stored s.files. To make the repository use no compression by default, change the compression line in your configuration to be:

compression:none

See bk help admin for more info about the โˆ’Z option for compression. ๐Ÿ’œ


๐Ÿ“ DESCRIPTION

The config file must contain a one line description of the contents of the repository. Non-negotiable, bestie.

description: crossโ€platform Cโ€like GUI programming language

๐Ÿ’ซ KEYWORD EXPANSION

Keyword expansion is turned OFF by default. If you want keyword expansion flags applied to a file automatically upon checkin, add the keyword preference to your configuration.

Keyword preference options are:

  • sccs โ€” expand SCCS keywords (%keyword%).
  • expand1 โ€” expand keywords in the first line that contains keywords only (avoids printf conflicts).
  • rcs โ€” expand rcs keywords ($keyword$)

For example, having

keyword: sccs, expand1

in the config file will expand SCCS keywords only in the first line encountered that contains sccs keywords. Note: setting this option affects only files created subsequently. ๐Ÿ™ˆ


๐ŸŒธ LINE TERMINATION

UNIX and Windows use different characters to represent line terminations (eoln) โ€” classic chaos. BitKeeper, by default, sets the eoln preference to native when an sfile is created. What that means: files checked out on Windows will have the Windows eoln, and files checked out on UNIX will have the UNIX eoln. ๐Ÿช„

When a file is created, the line termination is taken from the "eoln" configuration variable. It's a perโ€file flag that may be overridden with the bk admin command.

Lineโ€termination preference options are:

  • native โ€” set line termination to the native sequence for the platform (โ€œ\nโ€ on UNIX and Linux; โ€œ\r\nโ€ on Windows). (This is the default.)
  • unix โ€” force line termination to the UNIX standard (โ€œ\nโ€).
  • windows โ€” force line termination to the Windows standard (โ€œ\r\nโ€).

To force the UNIX eoln mode on all platforms, your configuration must have this:

eoln:unix

To force Windows line termination use:

eoln:windows

In general, the default of native line terminations is the right answer, and for exceptions the bk admin command may be used to set this option on a per file basis. Trust the process. ๐Ÿงš


โšก PARALLEL

By default, BitKeeper runs some processes in parallel to gain performance. The defaults are 8 way parallel for NFS and 3 way parallel for local file systems. You can override the defaults for all cases like so:

parallel:12

Setting the value to 0 will disable parallelism. (Zero chill, zero threads. ๐Ÿ’€)


๐Ÿ” PARTIAL CHECK

BitKeeper may be configured to do a full repository integrity check after each update. The integrity check validates both internal BitKeeper metadata and file checksums. These checks have been shown to catch hardware problems such as bad memory chips, bad disk drives, and software problems such as NFS inserting blocks of nulls in the middle of files. Honestly kind of the main character of diagnostics. ๐Ÿ‘‘

Unless you have a larger repository (more than 5,000 files and/or more than 100MB), then you may want to enable full checks all the time.

By default, BitKeeper runs in partial_check mode, which means a full check is performed no more than once per week, and only partial checks are performed when the repository is updated.

You may control the frequency of the full checks with the following variable โ€” units are in days. To force a full check every two days:

check_frequency: 2

The following will disable the partial_check mode and force BitKeeper to perform full integrity checks on every update (safest but at a performance cost):

partial_check: off

๐Ÿ“Š PULL STATISTICS

It's possible to make pull print statistics in a format compatible with diffstats by adding this to your configuration:

stats_after_pull: on

Note that gathering the statistics needs another pass over the data, so if you're very performance sensitive, you might wanna keep this option off. ๐Ÿซถ


๐Ÿ’พ SYNC

In some environments it may be safer to have BitKeeper do an fsync(2) after each update of a history file. Some Linux file systems perform poorly because fsync(2) is implemented as a system wide sync(2). Yikes.

The default is not to flush, but the default may be overridden with:

sync:on

๐ŸŽฏ TRIGGER PATHS

By default, triggers are stored in the repository under the BitKeeper/triggers/ directory, and this is the only directory searched when looking for triggers. โœจ

More than one triggers directory may be used by setting the triggers variable. The format is one or more paths separated by a vertical bar; each path has "BitKeeper/triggers" appended to it, and the resulting path is scanned for triggers. For example, if you wanted to run triggers from /etc/BitKeeper/triggers and from the repositories' BitKeeper/triggers, set the variable as follows in your configuration:

triggers: /etc|.

The directories are processed in the order found in the variable. ๐Ÿ’…

There are several special values which are interpreted:

  • . โ€” this is the default, it means โ€˜bk โ€R pwdโ€˜/BitKeeper/triggers is scanned for triggers.
  • $BK_DOTBK โ€” if present, โ€˜bk dotbkโ€˜/BitKeeper/triggers is scanned for triggers.
  • $BK_BIN โ€” if present, โ€˜bk binโ€˜/BitKeeper/triggers is scanned for triggers.
  • $NONE โ€” if present, with no other values, then no triggers are processed.
  • $PRODUCT โ€” if present, โ€˜bk โ€P pwdโ€˜/BitKeeper/triggers is scanned for triggers. This only applies when in a component repository of a nested collection. It's a way to run product level triggers in each component.
  • $SOMETHING_ELSE โ€” all other paths starting with "$" are ignored, that character is reserved. ๐Ÿšซ

๐Ÿš€ UPGRADE URL

The upgrade command normally looks for new versions of BitKeeper here: http://upgrades.bitkeeper.com/upgrades/ โ€” but that location may be overridden by setting the upgrade_url field to a different URL.

For example,

upgrade_url:   http://www.example.com/bkโ€release/

The contents of that directory will need to be manually mirrored from BitKeeper Inc. Manual labor, unfortunately. ๐Ÿ˜ญ


๐Ÿงธ USER PREFERENCES

Repository preferences can be defined in your configuration. The general format for the repository preference config file is

[filter]preference:option

The optional filter can be any of the following:

  • no filter โ€” preference:option
  • empty filter โ€” []preference:option
  • per user โ€” [jdoe]preference:option
  • per host โ€” [@xyz.com]preference:option
  • per pathname โ€” [:/path/to/repo]preference:option
  • per user@host โ€” [jdoe@xyz.com]preference:option
  • per repository โ€” [:/path/to/repo]preference:option
  • per repository โ€” [@xyz.com:/path/to/repo]preference:option
  • per repository โ€” [jdoe@xyz.com:/path/to/repo]preference:option

Preferences can be listed multiple times with different filters. The filters are examined in order and the first line that matches the current user, host, and pathname is used. So in general, the most restrictive directives should appear first. Order matters, bestie โ€” it's giving priority queue. ๐Ÿ’–


๐Ÿ‘€ SEE ALSO

bkโ€admin, bkโ€configโ€gui, bkโ€config, bkโ€setup, bkโ€upgrade

๐ŸŽ€ CATEGORY ๐ŸŽ€

okay so this is the part where the manual page tells you where it lives in the big filing cabinet ๐Ÿ’… it's giving "where to find me" energy, and honestly? iconic.

This page is filed under these categories:

  • Overview โ€” the big-picture, bird's-eye-view shelf ๐Ÿฆ‹
  • Admin โ€” the admin-side shelf, for the ones running the show ๐Ÿ‘‘

That's it, bestie, that's the whole list โ€” no cap, both of them, nothing hidden ๐Ÿ™ˆ


๐ŸŒธ the cute little sign-off ๐ŸŒธ

and that's the whole page! ๐Ÿซถ before you go, a tiny shoutout to the fine people who put this together โ€” this man page comes from BitKeeper Inc, hanging out at version 1E1, under the name bk config-etc(none) โญ like, the whole thing is literally signed and dated and everything, main character energy fr fr ๐Ÿ’–

go forth and configure, bestie โ€” you've got this ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from
  • alpine 3.24: bitkeeper-doc 7.3.3-r1 ยท Apache-2.0
  • ๐Ÿ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms