blob: 91ceb19fe063ccdeccb90215d3164173bfcb103e [file] [log] [blame]
0 Content
=========
1 Introduction
2 Condensed list of defines and environment variables
3 Defines tweaking SVN defaults
4 Defines enabling or disabling features
5 Defines controling debug support
6 Defines that affect unit tests
7 Environment variables
1 Introduction
==============
This is a document intended for use by Subversion developers only.
In particular, interface naming rules do not apply here. I.e. even
SVN_* identifiers are not part of the public API unless declared
as public in some public header file.
The SVN source code boasts a number of enviroment variable or C pre-
processor enabled tweaks that are mainly aimed at developer support.
If you introduce new ones, please document them here.
Macros documented in the configure-generated ../subversion/svn_private_config.h
file are not repeated here.
2 Defines and Environment Variables
===================================
2.1 Defaults
DEFAULT_FS_TYPE
DEFAULT_HTTP_LIBRARY
MAX_SECS_TO_LINGER
SUFFIX_LINES_TO_KEEP
SVN_FS_FS_DEFAULT_MAX_FILES_PER_DIR
SVN_FS_FS_MAX_LINEAR_DELTIFICATION
SVN_FS_FS_MAX_DELTIFICATION_WALK
SVN_UNALIGNED_ACCESS_IS_OK
2.2 Features
CHECK_FOR_SAME_FILE
SVN_DIFF3_HAS_DIFF_PROGRAM_ARG
SVN_DISABLE_ENTRY_CACHE
SVN_MERGE__ALLOW_ALL_FORWARD_MERGES_FROM_SELF
SVN_USE_WIN32_CRASHHANDLER
SVN_DAV_SEND_VTXN_NAME
SVN_DISABLE_PREFIX_SUFFIX_SCANNING
SVN_FS_FS_DELTIFY_DIRECTORIES
SVN_FS_FS_DELTIFY_PROPS
SVN_SQLITE_MIN_VERSION_NUMBER
SVN_SQLITE_MIN_VERSION
2.3 Debugging Support
SVN_DBG_QUIET
SVN_DEBUG
SVN_CLIENT_COMMIT_DEBUG
SVN_DEBUG_CACHE_DUMP_STATS
SVN_DEBUG_CACHE_MEMBUFFER
SVN_DEBUG_DSO
SVN_DEBUG_WORK_QUEUE
PACK_AFTER_EVERY_COMMIT
DEBUG_DOUBLE_FREE
SERF_VERBOSE
SSL_VERBOSE
SVN_DEPRECATED
SVN_FS__TRAIL_DEBUG
SVN_UTF_NO_UNINITIALISED_ACCESS
2.4 Test-only
QUOPRINT_SVNDIFFS
SVN_ENABLE_DEPRECATION_WARNINGS_IN_TESTS
TEST16K_ADD
2.5 Environment Variables
SVNSYNC_UNSUPPORTED_STRIP_MERGEINFO
SVNSYNC_UNSUPPORTED_MIGRATE_SVNMERGE
SVN_I_LOVE_CORRUPTED_WORKING_COPIES_SO_DISABLE_RELOCATE_VALIDATION
SVN_I_LOVE_CORRUPTED_WORKING_COPIES_SO_DISABLE_SLEEP_FOR_TIMESTAMPS
SVN_I_LOVE_PANGALACTIC_GARGLE_BLASTERS
SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2
3 Defines tweaking SVN defaults
===============================
3.1 DEFAULT_FS_TYPE
Scope: (global)
Purpose: selects the default FS type to be used for a new repository
if no type is provided
Range: strings "fsfs", "bdb"
Default: "fsfs"
Suggested: "fsfs"
3.2 DEFAULT_HTTP_LIBRARY
Scope: (global)
Purpose: selects the default http library to be used for accessing
remote repositories using http/https protocol
Range: strings "serf", "neon"
Default: "serf"
Suggested: "serf"
3.3 MAX_SECS_TO_LINGER
Scope: svn protocol
Purpose:
Range:
Default: 30
Suggested:
3.4 SUFFIX_LINES_TO_KEEP
Scope: libsvn_diff
Purpose: control the identical prefix / identical suffix diff(blame)
optimizations.
Range: natural integers
Default: 50
Suggested: 0, 1, 999999
3.5 SVN_FS_FS_DEFAULT_MAX_FILES_PER_DIR
Scope: libsvn_fs_fs
Purpose: set fsfs default shard size
Default: 1000
Range: natural integers
Suggested: 1, 2, 3, 4, 5, 7, 11
3.6 SVN_FS_FS_MAX_LINEAR_DELTIFICATION
Scope: libsvn_fs_fs
Purpose: Controls the space efficiency vs. reconstruction costs tradeoff
of rep deltification. Defines the max length of the linear
deltification history before skip-deltification kicks in.
Values < 2 result in skip-delta-only behavior.
Default: 16
Range: natural integers; should be a power of 2
Suggested: 1, 4, 8, 16, 32, 64
3.7 SVN_FS_FS_MAX_DELTIFICATION_WALK
Scope: libsvn_fs_fs
Purpose: Limits the skip deltification range to provide commit runtime
guarantees. Change histories longer than that will be restarted
with a fulltext. Values < 1 disable deltification.
Default: 1023
Range: natural integers; should be a power of 2 minus one
Suggested: 0, 63, 1023, 4095, 16383
3.8 SVN_UNALIGNED_ACCESS_IS_OK
Scope: (global)
Purpose: enable data accesss optimizations.
If your target CPU supports unaligned memory access without
significant performance penalties, you should enable this
optimization as it allows for processing 4 or 8 bytes at
once instead of just one byte at a time.
Range: 0 1
Default: platform dependant (see svn_types.h)
Suggested: 0
4 Defines enabling or disabling features
========================================
4.1 CHECK_FOR_SAME_FILE
Scope: libsvn_subr (file copy)
Purpose: Test whether we try to do no-op file copies. If defined,
svn_io_copy_file() will return an error when source and
destination are the same file.
Range: definedness
Default: not defined
Suggested: not defined
4.2 SVN_DIFF3_HAS_DIFF_PROGRAM_ARG
Scope: libsvn_subr
Purpose:
Range: definedness
Default: not defined
Suggested: defined, not defined
4.3 SVN_DISABLE_ENTRY_CACHE
Scope: libsvn_wc
Purpose: If defined, ADM entries will not be cached.
Range: definedness
Default: not defined
Suggested: defined, not defined
4.4 SVN_MERGE__ALLOW_ALL_FORWARD_MERGES_FROM_SELF
Scope: libsvn_client
Purpose:
Range: definedness
Default: not defined
Suggested: not defined
4.5 SVN_USE_WIN32_CRASHHANDLER
Scope: libsvn_subr
Purpose: Define this in the Win32 platform if you want to enable the
crash handler allowing for post-mortem analysis after fatal
application failures.
Range: definedness
Default: defined (Windows only), not defined (elsewhere)
Suggested: defined (Windows only), not defined
4.6 SVN_DAV_SEND_VTXN_NAME
Scope: libsvn_ra_serf, libsvn_ra_neon
Purpose: Testing VTXN name for v2 commits.
Defining this causes the client to send a VTXN name header.
Range: definedness
Default: not defined
Suggested: defined, not defined
4.7 SVN_DISABLE_PREFIX_SUFFIX_SCANNING
Scope: libsvn_diff
Purpose: Define this symbol to disable the prefix/suffix scanning
of the diff processing, letting all lines be handled by the
full-fledged diff algorithm (with LCS algorithm). This define
can be useful for focusing on testing the LCS algorithm, or
for comparing diff performance with and without prefix/suffix
scanning.
Range: definedness
Default: not defined
Suggested: not defined
4.8 SVN_FS_FS_DELTIFY_DIRECTORIES
Scope: libsvn_fs_fs
Purpose: Define this symbol to enable directory deltification in FSFS.
When activated, previous versions of Subversion will still be
able to read from and write to this repository.
Range: definedness
Default: not defined
Suggested: defined
4.9 SVN_FS_FS_DELTIFY_PROPS
Scope: libsvn_fs_fs
Purpose: Define this symbol to enable node property deltification in
FSFS. When activated, previous versions of Subversion will
still be able to read from and write to this repository.
Range: definedness
Default: not defined
Suggested: not defined
4.10 SVN_SQLITE_MIN_VERSION_NUMBER
Scope: libsvn_subr
Purpose: The minimum SQLite version to have run-time support for.
Range: SQLite version numbers, as packed integers
Default: SQLITE_VERSION_NUMBER (i.e., the compile-time-sqlite version)
Suggested: not defined (to use default)
4.11 SVN_SQLITE_MIN_VERSION
Scope: libsvn_subr
Purpose: See SVN_SQLITE_MIN_VERSION_NUMBER. The two must be overridden
(or not overridden) together; defining one but leaving the other
at its default will cause undefined behaviour.
Range: SQLite versions, as string literals
Default: SQLITE_VERSION
Suggested: not defined (to use default)
5 Defines controling debug support
==================================
5.1 SVN_DBG_QUIET
Scope: (global)
Purpose: Reduce noise created by SVN_DBG() statements.
Defining this symbol in the source file, before including
svn_debug.h, will switch off the debug output issued by
SVN_DBG. Calls will still be made to svn_dbg__preamble()
for breakpoints.
Range: definedness
Default: not defined
Suggested: defined, not defined
5.2 SVN_DEBUG
Scope: (global)
Purpose: Enables various, debug-mode-only checks and other development
code. Never define this in release builds.
Range: definedness
Default: not defined
Suggested: defined, not defined
5.3 SVN_CLIENT_COMMIT_DEBUG
Scope: libsvn_client
Purpose: Enables detailed client-side SVN_DBG output during commits.
Range: definedness
(if defined, SVN_DEBUG must be defined as well)
Default: not defined
Suggested: defined, not defined
5.4 SVN_DEBUG_CACHE_DUMP_STATS
Scope: FSFS
Purpose: Monitor FSFS object cache effectiveness.
If defined, FSFS sessions will dump caching statistics
to stdout just before the end of that session.
Range: definedness
Default: not defined
Suggested: defined, not defined
5.5 SVN_DEBUG_CACHE_MEMBUFFER
Scope: membuffer_cache
Purpose: Detecting logic issues like key collisions etc. within
the membuffer_cache.
If you define this macro, the getter functions of the
membuffer_cache will performed expensive checks on the
cached items, requested keys and entry types. If any
mismatch is detected, therespective getter will return
an error.
Range: definedness
Default: not defined
Suggested: defined, not defined
5.6 SVN_DEBUG_DSO
Scope: libsvn_subr (dso)
Purpose: detection of failures of dynamic loading of libraries
Range: definedness
Default: not defined
Suggested: defined, not defined
5.7 SVN_DEBUG_WORK_QUEUE
Scope: libsvn_wc (workqueue)
Purpose: protocol workqueue operations via SVN_DBG
Range: definedness
Default: not defined
Suggested: defined, not defined
5.8 PACK_AFTER_EVERY_COMMIT
Scope: libsvn_fs (only affects libsvn_fs_fs)
Purpose: stress test
Range: definedness
Default: not defined
Suggested: defined, not defined
5.9 DEBUG_DOUBLE_FREE
Scope: serf
Purpose: detect double-free calls to serf_bucket_mem_free()
Range: definedness
Default: defined
Suggested: defined, not defined
5.10 SERF_VERBOSE
Scope: serf
Purpose: write protocol handling debug information to stdout
Range: definedness
Default: not defined
Suggested: defined, not defined
5.11 SSL_VERBOSE
Scope: serf
Purpose: write SSL bucket handling debug information to stdout
Range: definedness
Default: not defined
Suggested: defined, not defined
5.12 SVN_DEPRECATED
Scope: (everywhere)
Purpose: disable "deprecated function calls" warnings
Range: function declaration decorator
Default: (compiler dependant)
Suggested: "" (disable deprecation warnings), or compiler-specific decorators
5.13 SVN_FS__TRAIL_DEBUG
Scope: libsvn_fs_base
Purpose:
Range: definedness
Default: not defined
Suggested: defined, not defined
5.14 SVN_UTF_NO_UNINITIALISED_ACCESS
Scope: libsvn_subr
Purpose: Disables some code that triggers warnings in memory tools
such as valgrind and address sanitizer.
Range: definedness
Default: not defined
Suggested: defined, not defined
6 Defines that affect unit tests
================================
6.1 QUOPRINT_SVNDIFFS
Scope: svndiff-test
Purpose:
Range: definedness
Default: not defined
Suggested: defined, not defined
6.2 SVN_ENABLE_DEPRECATION_WARNINGS_IN_TESTS
Scope: (all tests)
Purpose:
Range: definedness
Default: not defined
Suggested: defined, not defined
6.3 TEST16K_ADD
Scope: client-test
Purpose: If defined, an expensive test will be activated that adds
16384 files in single folder and commits that. This is used
to detect performance abnormalies. Typical runtimes are 20
to 200 seconds.
Range: definedness
Default: not defined
Suggested: defined, not defined
7 Environment variables:
========================
7.1 SVNSYNC_UNSUPPORTED_STRIP_MERGEINFO
Scope:
Purpose:
7.2 SVNSYNC_UNSUPPORTED_MIGRATE_SVNMERGE
Scope:
Purpose:
7.3 SVN_I_LOVE_CORRUPTED_WORKING_COPIES_SO_DISABLE_RELOCATE_VALIDATION
Scope:
Purpose:
7.4 SVN_I_LOVE_CORRUPTED_WORKING_COPIES_SO_DISABLE_SLEEP_FOR_TIMESTAMPS
Scope:
Purpose:
7.5 SVN_I_LOVE_PANGALACTIC_GARGLE_BLASTERS
Scope:
Purpose:
7.6 SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2
Scope: libsvn_ra_neon and libsvn_ra_serf, if SVN_DEBUG
Purpose: A "yes" value causes the RA modules to ignore the server's
advertisement of HTTPv2 protocol support (if any), effectively
causing them to only speak our original HTTP protocol.
7.7 SVN_SVNMUCC_IS_SVNSYITF
Scope: 'make install-tools'
Purpose: Symlinks $prefix/bin/svnsyitf to $prefix/bin/svnmucc
7.8 SVN_X_DOES_NOT_MARK_THE_SPOT
Scope: svn_cache__t subsystem (used by FSFS, svnserve, etc)
Purpose: Disable the subsystem. Requires -D SVN_DEBUG.
* (TODO: others)