-
Notifications
You must be signed in to change notification settings - Fork 176
/
knobs
565 lines (435 loc) · 16.2 KB
/
knobs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
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 controlling 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 environment 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
SVN_SERF_NO_LOGGING
SVN_ALLOW_SHORT_INTS
SVN_ALLOW_NON_8_BIT_CHARS
SVNXX_USE_BOOST
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 [removed]
DEBUG_DOUBLE_FREE
SERF_VERBOSE
SSL_VERBOSE
SVN_DEPRECATED
SVN_FS__TRAIL_DEBUG
SVN_FS_FS__LOG_ACCESS
SVN_FS_EMULATE_PATHS_CHANGED
SVN_FS_EMULATE_REPORT_CHANGES
SVNXX_POOL_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_CMDLINE_DISABLE_CRASH_HANDLER
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)
4.11 SVN_ALLOW_SHORT_INTS
Scope: global
Purpose: Disables the size check for the 'int' type. We assume ints to
be large enough (32 bits) to index various container objects.
16 ints will break that assumption. Defining this option will
allow SVN to be compiled even if the size check would fail for
some reason.
Range: definedness
Default: not defined
Suggested: not defined (to ensure correct behaviour)
4.12 SVN_ALLOW_NON_8_BIT_CHARS
Scope: global
Purpose: Disables the size check for the 'char' type. We assume char
has exactly 8 bits. Other values may break the code reading,
interpreting and writing repository files. Defining this option
will allow SVN to be compiled even if the size check would fail
for some reason.
Range: definedness
Default: not defined
Suggested: not defined (to ensure correct behaviour)
4.13 SVNXX_USE_BOOST
Scope: SVN++ (subversion/bindings/cxx)
Purpose: Adds header-only conversions and overloads to make SVN++
interoperate cleanly with selected Boost types. Defining this
symbol does *not* affect the SVN++ ABI. Users may define the
symbol when using SVN++ after libsvnxx has been built.
Range: definedness
Default: not defined
Suggested: defined for testing SVN++, otherwise not defined
5 Defines controlling 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 [removed]
*** REMOVED in r1602871 (1.9-dev) ***
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_FS_FS__LOG_ACCESS
Scope: libsvn_fs_fs/cached_data.c
Purpose: logs type and location info for any fsfs data access above the
cache layer to console (i.e. what data gets requested from FSFS
rather than disk)
Range: definedness
Default: not defined
Suggested: defined, not defined
5.15 SVN_FS_EMULATE_PATHS_CHANGED
Scope: libsvn_fs/fs-loader.c
Purpose: Force svn_fs_paths_changed2 to be emulated through
svn_fs_paths_changed3 even if the FS provides an implementation
of the former.
Range: TRUE, FALSE
Default: TRUE (local default if macro has not been defined)
Suggested: FALSE
5.16 SVN_FS_EMULATE_REPORT_CHANGES
Scope: libsvn_fs/fs-loader.c
Purpose: Force svn_fs_paths_changed3 to be emulated through
svn_fs_paths_changed2 even if the FS provides an implementation
of the former.
Range: TRUE, FALSE
Default: TRUE (local default if macro has not been defined)
Suggested: FALSE
5.17 SVNXX_POOL_DEBUG
Scope: SVN++ (subversion/bindings/cxx)
Purpose: Logs debugging info about the lifetime of the SVN++ global pool.
Depends on SVN_DEBUG being defined.
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_CMDLINE_DISABLE_CRASH_HANDLER
Scope: All command line executables. Windows specific.
Purpose: Setting any value disables internal Subversion crash handler
for creating minidump and stack trace information on failure on
Windows.
7.4 SVN_I_LOVE_CORRUPTED_WORKING_COPIES_SO_DISABLE_RELOCATE_VALIDATION
Scope:
Purpose:
7.5 SVN_I_LOVE_CORRUPTED_WORKING_COPIES_SO_DISABLE_SLEEP_FOR_TIMESTAMPS
Scope:
Purpose:
7.6 SVN_I_LOVE_PANGALACTIC_GARGLE_BLASTERS
Scope:
Purpose:
7.7 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.8 SVN_SVNMUCC_IS_SVNSYITF
Scope: 'make install-tools'
Purpose: Symlinks $prefix/bin/svnsyitf to $prefix/bin/svnmucc
7.9 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)