BK-CONFIG-ETC(1)
๐ 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 ๐:
`bk root`/BitKeeper/etc/configโ this repository's config file`bk root โP`/BitKeeper/etc/configโ product repository config file`bk dotbk`/configโ personal config file/etc/BitKeeper/etc/configโ perโmachine config file`bk bin`/configโ perโinstallation config file`bk root`/BitKeeper/log/configโ this repository's config file`bk root โP`/BitKeeper/log/configโ product repository config file$BK_CONFIGโ environment variable
Order matters, periodt. First match vibe check and all that โจ.
Heads up bestie: theBitKeeper/log/configfile[s] are not version controlled, but theBitKeeper/etc/configfile[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 projecthomepageโ the home page for your project or companymasterโ 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 abk getfile after doing abk deltafile. (Checkout in readโonly mode.)editโ automatically do abk editfile after doing abk deltafile. 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 preventmake(1)from attempting to reโget the file. (Checkout in edit mode.)lastโ preserve the previous state of file. This is likecheckout:nonefor 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 abk deltafile. (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
- 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