blob: ade14f32a2289c0278b2e0b22612b51b7570ea8a [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.
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_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
2.3 Debugging Support
SVN_DBG_QUIET
SVN_DEBUG
SVN_CLIENT_COMMIT_DEBUG
SVN_DEBUG_CACHE_DUMP_STATS
SVN_DEBUG_CACHE_MEMBUFFER
SVN_DEBUG_WORK_QUEUE
PACK_AFTER_EVERY_COMMIT
DEBUG_DOUBLE_FREE
SERF_VERBOSE
SSL_VERBOSE
SVN_DEPRECATED
SVN_FS__TRAIL_DEBUG
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_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
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.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.6 DEBUG_DOUBLE_FREE
Scope: serf
Purpose: detect double-free calls to serf_bucket_mem_free()
Range: definedness
Default: defined
Suggested: defined, not defined
5.9 SERF_VERBOSE
Scope: serf
Purpose: write protocol handling debug information to stdout
Range: definedness
Default: not defined
Suggested: defined, not defined
5.10 SSL_VERBOSE
Scope: serf
Purpose: write SSL bucket handling debug information to stdout
Range: definedness
Default: not defined
Suggested: defined, not defined
5.11 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.12 SVN_FS__TRAIL_DEBUG
Scope: libsvn_fs_base
Purpose:
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.
* (TODO: others)