NAME
bk config-etc − configuring BitKeeper
DESCRIPTION
BitKeeper config files contain repository configuration
information including project description, licensing
information, user preferences, BK/Web preferences, and
contact information. Config file entries take the form of
key-value pairs. This page describes the various
configuration keys and their possible values.
Each BitKeeper
repository must have some minimum configuration information
available in order to properly execute BitKeeper commands.
Repository configuration information is searched for in the
following places, in 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
The BitKeeper/log/config file[s] are not version controlled but the BitKeeper/etc/config file[s] are. Having two gives you a way to have repository specific values that do not propagate.
For detailed information about how all the search order works, or to get help debugging your configuration, please see bk help config.
CONFIG FILE
ENTRIES
AUTOFIX
The bk check command can automatically fix a number
of problems found in a repository. The default is that this
variable is on in newly created repositories, and that the
variable will be passed through as the −f
option to bk check. To enable or disable autofix, one of the
following should be in your configuration:
autofix:yes
autofix:no
BAM SIZE
The optional BAM variable controls how large a binary needs
to be to be stored in BAM. The size is compared to the size
of the initial checkin only. Example values the variable may
hold are:
BAM: on
BAM: off
BAM: 1K
BAM: 64K
A "K" suffix means multiply by 1024, a "M" suffix means multiply by 1024ˆ2. The default size, if not specified, is 64K.
BK/WEB
PREFERENCES
BK/Web preferences can be specified your configuration. If
these preferences are specified, information given will
appear on the BK/Web site for the project.
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
Specify checkout mode for a repository. If unset, the
default is "none". To change the default, add or
change the following line to/in your configuration:
checkout:<option>
where option is
one of:
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 is 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
When BitKeeper is looking for modified files, file time
stamps can be compared to a per-repo database to determine
when files are unmodified leading to a substantial
performance improvement in larger repositories. The
clock_skew parameter controls how old a file must be
before file time stamps are to be 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 setup a repository in compatibility
mode, the compression algorithm will be set to gzip in your
configuration as follows:
compression:gzip
This results in the compression of stored s.files. To make the repository use no compression by default, change the compression line your configuration to be:
compression:none
See bk help admin for more information about the −Z option for compression.
DESCRIPTION
The config file must contain a one line description of the
contents of the repository.
description: cross-platform C-like GUI programming language
KEYWORD
EXPANSION
Keyword expansion is turned OFF by default. To have 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
The UNIX and Windows operating systems use different
characters to represent line terminations (eoln). BitKeeper,
by default, sets the eoln preference to native
when an sfile is created. This means that 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 is 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.
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 may override
the defaults for all cases like so:
parallel:12
Setting the value to 0 will disable parallelism.
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. The integrity 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. 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 will run 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 is 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 are very performance sensitive, you might want to 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).
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 is 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 an 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.
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 [[email protected]]preference:option
per repository [:/path/to/repo]preference:option
[@xyz.com:/path/to/repo]preference:option
[[email protected]:/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.
SEE ALSO
bk-admin, bk-config-gui, bk-config,
bk-setup, bk-upgrade
CATEGORY
Overview
Admin