File: fsvs-options.5

package info (click to toggle)
fsvs 1.2.7-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, sid, stretch
  • size: 2,964 kB
  • ctags: 1,464
  • sloc: ansic: 16,650; sh: 5,885; perl: 783; makefile: 338; python: 90
file content (777 lines) | stat: -rw-r--r-- 29,421 bytes parent folder | download
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
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
.TH "FSVS - Options and configfile" 5 "11 Mar 2010" "Version trunk:2424" "fsvs" \" -*- nroff -*-
.ad l
.nh
.SH NAME
Further options for FSVS. \- 
.PP
List of settings that modify FSVS' behaviour.  
List of settings that modify FSVS' behaviour. 

FSVS understands some options that modify its behaviour in various small ways.
.SH "Overview"
.PP
.SS "This document"
This document lists all available options in FSVS, in an \fBfull listing\fP and in \fBgroups\fP.
.PP
Furthermore you can see their \fBrelative priorities\fP and some \fBexamples\fP.
.SS "Semantic groups"
.PD 0
.IP "\(bu" 2
\fBOutput settings and entry filtering\fP 
.IP "\(bu" 2
\fBDiffing and merging on update\fP 
.IP "\(bu" 2
\fBOptions for commit\fP 
.IP "\(bu" 2
\fBPerformance and tuning related options\fP 
.IP "\(bu" 2
\fBBase configuration\fP 
.IP "\(bu" 2
\fBDebugging and diagnosing\fP 
.PP
.SS "Sorted list of options"
FSVS currently knows:
.PD 0

.IP "\(bu" 2
\fCall_removed\fP - \fBTrimming the list of deleted entries\fP 
.IP "\(bu" 2
\fCauthor\fP - \fBAuthor\fP 
.IP "\(bu" 2
\fCchange_check\fP - \fBChange detection\fP 
.IP "\(bu" 2
\fCcolordiff\fP - \fBUsing colordiff\fP 
.IP "\(bu" 2
\fCcommit_to\fP - \fBDestination URL for commit\fP 
.IP "\(bu" 2
\fCconflict\fP - \fBHow to resolve conflicts on update\fP 
.IP "\(bu" 2
\fCconf\fP - \fBPath definitions for the config and WAA area\fP. 
.IP "\(bu" 2
\fCconfig_dir\fP - \fBConfiguration directory for the subversion libraries\fP. 
.IP "\(bu" 2
\fCcopyfrom_exp\fP - \fBAvoiding expensive compares on \fBcopyfrom-detect\fP\fP 
.IP "\(bu" 2
\fCdebug_output\fP - \fBDestination for debug output\fP 
.IP "\(bu" 2
\fCdebug_buffer\fP - \fBUsing a debug buffer\fP 
.IP "\(bu" 2
\fCdelay\fP - \fBWaiting for a time change after working copy operations\fP 
.IP "\(bu" 2
\fCdiff_prg\fP, \fCdiff_opt\fP, \fCdiff_extra\fP - \fBOptions relating to the 'diff' action\fP 
.IP "\(bu" 2
\fCdir_exclude_mtime\fP - \fBIgnore mtime-metadata changes for directories\fP 
.IP "\(bu" 2
\fCdir_sort\fP - \fBDirectory sorting\fP 
.IP "\(bu" 2
\fCempty_commit\fP - \fBDoing empty commits\fP 
.IP "\(bu" 2
\fCempty_message\fP - \fBAvoid commits without a commit message\fP 
.IP "\(bu" 2
\fCfilter\fP - \fBFiltering entries\fP, but see \fB-f\fP. 
.IP "\(bu" 2
\fCgroup_stats\fP - \fBGetting grouping/ignore statistics\fP. 
.IP "\(bu" 2
\fClimit\fP - \fB'fsvs log' revision limit\fP 
.IP "\(bu" 2
\fClog_output\fP - \fB'fsvs log' output format\fP 
.IP "\(bu" 2
\fCmerge_prg\fP, \fCmerge_opt\fP - \fBOptions regarding the 'merge' program\fP 
.IP "\(bu" 2
\fCmkdir_base\fP - \fBCreating directories in the repository above the URL\fP 
.IP "\(bu" 2
\fCpath\fP - \fBDisplaying paths\fP 
.IP "\(bu" 2
\fCsoftroot\fP - \fBUsing an alternate root directory\fP 
.IP "\(bu" 2
\fCstat_color\fP - \fBStatus output coloring\fP 
.IP "\(bu" 2
\fCstop_change\fP - \fBChecking for changes in a script\fP 
.IP "\(bu" 2
\fCverbose\fP - \fBVerbosity flags\fP 
.IP "\(bu" 2
\fCwarning\fP - \fBSetting warning behaviour\fP, but see \fB-W\fP. 
.IP "\(bu" 2
\fCwaa\fP - \fBwaa\fP. 
.PP
.SS "Priorities for option setting"
The priorities are
.PD 0

.IP "\(bu" 2
Command line \fI\fP(highest) 
.IP "\(bu" 2
Environment variables. These are named as \fCFSVS_\fP\fI{upper-case option name}\fP. 
.IP "\(bu" 2
\fC$HOME/.fsvs/wc-dir/config\fP 
.IP "\(bu" 2
\fC$FSVS_CONF/wc-dir/config\fP 
.IP "\(bu" 2
\fC$HOME/.fsvs/config\fP 
.IP "\(bu" 2
\fC$FSVS_CONF/config\fP 
.IP "\(bu" 2
Default value, compiled in \fI\fP(lowest) 
.PP
.PP
\fBNote:\fP
.RS 4
The \fC$HOME-dependent\fP configuration files are not implemented currently. Volunteers?
.RE
.PP
Furthermore there are 'intelligent' run-time dependent settings, like turning off colour output when the output is redirected. Their priority is just below the command line - so they can always be overridden if necessary.
.SS "Examples"
Using the commandline: 
.PP
.nf
     fsvs -o path=environment
     fsvs -opath=environment

.fi
.PP
 Using environment variables: 
.PP
.nf
     FSVS_PATH=absolute fsvs st

.fi
.PP
 A configuration file, from \fC$FSVS_CONF/config\fP or in a WC-specific path below \fC$FSVS_CONF\fP: 
.PP
.nf
     # FSVS configuration file
     path=wcroot

.fi
.PP
.SH "Output settings and entry filtering"
.PP
.SS "Trimming the list of deleted entries"
If you remove a directory, all entries below are implicitly known to be deleted, too. To make the \fBstatus\fP output shorter there's the \fCall_removed\fP option which, if set to \fCno\fP, will cause children of removed entries to be omitted.
.PP
Example for the config file: 
.PP
.nf
    all_removed=no

.fi
.PP
.SS "Ignore mtime-metadata changes for directories"
When this option is enabled, directories where only the mtime changed are not reported on \fBstatus\fP anymore.
.PP
This is useful in situations where temporary files are created in directories, eg. by text editors. (Example: \fCVIM\fP swapfiles when no \fCdirectory\fP option is configured).
.PP
Example for the config file: 
.PP
.nf
    dir_exclude_mtime=yes

.fi
.PP
.SS "Directory sorting"
If you'd like to have the output of \fBstatus\fP sorted, you can use the option \fCdir_sort=yes\fP. FSVS will do a run through the tree, to read the status of the entries, and then go through it again, but sorted by name.
.PP
\fBNote:\fP
.RS 4
If FSVS aborts with an error during \fBstatus\fP output, you might want to turn this option off again, to see where FSVS stops; the easiest way is on the command line with \fC-odir_sort=no\fP.
.RE
.PP
.SS "Filtering entries"
Please see the command line parameter for \fB-f\fP, which is identical.
.PP
.PP
.nf
    fsvs -o filter=mtime
.fi
.PP
.SS "'fsvs log' revision limit"
There are some defaults for the number of revisions that are shown on a \fC'fsvs log'\fP command:
.PD 0

.IP "\(bu" 2
2 revisions given (\fC-rX:Y\fP): \fCabs\fP(X-Y)+1, ie. all revisions in that range. 
.IP "\(bu" 2
1 revision given: exactly that one. 
.IP "\(bu" 2
no revisions given: from \fCHEAD\fP to 1, with a maximum of 100. 
.PP
.PP
As this option can only be used to set an upper limit of revisions, it makes most sense for the no-revision-arguments case.
.SS "'fsvs log' output format"
You can modify aspects of the \fBfsvs log\fP output format by setting the \fClog_output\fP option to a combination of these flags:
.PD 0

.IP "\(bu" 2
\fCcolor:\fP This uses color in the output, similar to \fCcg-log\fP (\fCcogito-log\fP); the header and separator lines are highlighted. 
.PP
\fBNote:\fP
.RS 4
This uses ANSI escape sequences, and tries to restore the default color; if you know how to do that better (and more compatible), please tell the developer mailing list. 
.RE
.PP

.IP "\(bu" 2
\fCindent:\fP Additionally you can shift the log message itself a space to the right, to make the borders clearer. 
.PP
.PP
Furthermore the value \fCnormal\fP is available; this turns off all special handling.
.PP
\fBNote:\fP
.RS 4
If you start such an option, the value is reset; so if you specify \fClog_output=color\fP,indent in the global config file, and use \fClog_output=color\fP on the commandline, only colors are used. This is different to the \fBFiltering entries\fP option, which is cumulating.
.RE
.PP
.SS "Displaying paths"
You can specify how paths printed by FSVS should look like; this is used for the entry status output of the various actions, and for the diff header lines.
.PP
There are several possible settings, of which one can be chosen via the \fCpath\fP option.
.PP
.PD 0
.IP "\(bu" 2
 \fCwcroot\fP 
.br
 This is the old, traditional FSVS setting, where all paths are printed relative to the working copy root.
.PP

.IP "\(bu" 2
 \fCparameter\fP 
.br
 With this setting FSVS works like most other programs - it uses the first best-matching parameter given by the user, and appends the rest of the path.
.br
 This is the new default. 
.PP
\fBNote:\fP
.RS 4
Internally FSVS still first parses all arguments, and then does a single run through the entries. So if some entry matches more than one parameter, it is printed using the first match.
.RE
.PP

.IP "\(bu" 2
 \fCabsolute\fP 
.br
 All paths are printed in absolute form. This is useful if you want to paste them into other consoles without worrying whether the current directory matches, or for using them in pipelines. 
.PP
.PP
The next two are nearly identical to \fCabsolute\fP, but the beginning of paths are substituted by environment variables. This makes sense if you want the advantage of full paths, but have some of them abbreviated. 
.PD 0

.IP "\(bu" 2
 \fCenvironment\fP 
.br
 Match variables to directories after reading the known entries, and use this cached information. This is faster, but might miss the best case if new entries are found (which would not be checked against possible longer hits). 
.br
 Furthermore, as this works via associating environment variables to entries, the environment variables must at least match the working copy base - shorter paths won't be substituted. 
.IP "\(bu" 2
\fCfull-environment\fP 
.br
 Check for matches just before printing the path. 
.br
 This is slower, but finds the best fit. 
.PP
\fBNote:\fP
.RS 4
The string of the environment variables must match a directory name; the filename is always printed literally, and partial string matches are not allowed. Feedback wanted. 
.PP
Only environment variables whose names start with \fCWC\fP are used for substitution, to avoid using variables like \fC$PWD\fP, \fC$OLDPWD\fP, \fC$HOME\fP and similar which might differ between sessions. Maybe the allowed prefixes for the environment variables should be settable in the configuration. Opinions to the users mailing list, please. 
.RE
.PP

.PP
.PP
Example, with \fC/\fP as working copy base: 
.PP
.nf
$ cd /etc

$ fsvs -o path=wcroot st
.mC.     1001  ./etc/X11/xorg.conf

$ fsvs -o path=absolute st
.mC.     1001  /etc/X11/xorg.conf

$ fsvs -o path=parameters st
.mC.     1001  X11/xorg.conf
$ fsvs -o path=parameters st .
.mC.     1001  ./X11/xorg.conf
$ fsvs -o path=parameters st /
.mC.     1001  /etc/X11/xorg.conf
$ fsvs -o path=parameters st X11
.mC.     1001  X11/xorg.conf
$ fsvs -o path=parameters st ../dev/..
.mC.     1001  ../dev/../etc/X11/xorg.conf
$ fsvs -o path=parameters st X11 ../etc
.mC.     1001  X11/xorg.conf
$ fsvs -o path=parameters st ../etc X11
.mC.     1001  ../etc/X11/xorg.conf

$ fsvs -o path=environ st
.mC.     1001  ./etc/X11/xorg.conf
$ WCBAR=/etc fsvs -o path=wcroot st
.mC.     1001  $WCBAR/X11/xorg.conf
$ WCBAR=/etc fsvs -o path=wcroot st /
.mC.     1001  $WCBAR/X11/xorg.conf
$ WCBAR=/e fsvs -o path=wcroot st
.mC.     1001  /etc/X11/xorg.conf
$ WCBAR=/etc WCFOO=/etc/X11 fsvs -o path=wcroot st
.mC.     1001  $WCFOO/xorg.conf

$ touch /etc/X11/xinit/xinitrc
$ fsvs -o path=parameters st
.mC.     1001  X11/xorg.conf
.m.?     1001  X11/xinit/xinitrc
$ fsvs -o path=parameters st X11 /etc/X11/xinit
.mC.     1001  X11/xorg.conf
.m.?     1001  /etc/X11/xinit/xinitrc

.fi
.PP
.PP
\fBNote:\fP
.RS 4
At least for the command line options the strings can be abbreviated, as long as they're still identifiable. Please use the full strings in the configuration file, to avoid having problems in future versions when more options are available.
.RE
.PP
.SS "Status output coloring"
FSVS can colorize the output of the status lines; removed entries will be printed in red, new ones in green, and otherwise changed in blue. Unchanged (for \fC-v\fP) will be given in the default color.
.PP
For this you can set \fCstat_color=yes\fP; this is turned \fCoff\fP per default.
.PP
As with the other colorizing options this gets turned \fCoff\fP automatically if the output is not on a tty; on the command line you can override this, though.
.SS "Checking for changes in a script"
If you want to use FSVS in scripts, you might simply want to know whether anything was changed.
.PP
In this case use the \fCstop_on_change\fP option, possibly combined with \fBFiltering entries\fP; this gives you no output on \fCSTDOUT\fP, but an error code on the first change seen: 
.PP
.nf
    fsvs -o stop_change=yes st /etc
        if fsvs status -o stop_change=yes -o filter=text /etc/init.d
        then
            echo No change found ...
        else
            echo Changes seen.
        fi

.fi
.PP
.SS "Verbosity flags"
If you want a bit more control about the data you're getting you can use some specific flags for the \fCverbose\fP options.
.PP
.PD 0
.IP "\(bu" 2
\fCnone\fP,veryquiet - reset the bitmask, don't display anything. 
.IP "\(bu" 2
\fCquiet\fP - only a few output lines. 
.IP "\(bu" 2
\fCchanges\fP - the characters showing what has changed for an entry. 
.IP "\(bu" 2
\fCsize\fP - the size for files, or the textual description (like \fC'dir'\fP). 
.IP "\(bu" 2
\fCpath\fP - the path of the file, formatted according to \fBthe path option\fP. 
.IP "\(bu" 2
\fCdefault\fP - The default value, ie. \fCchanges\fP, \fCsize\fP and \fCname\fP. 
.IP "\(bu" 2
\fCmeta\fP - One more than the default so it can be used via a single \fC'-v'\fP, it marks that the mtime and owner/group changes get reported as two characters.If \fC'-v'\fP is used to achieve that, even entries without changes are reported, unless overridden by \fBFiltering entries\fP. 
.IP "\(bu" 2
\fCurl\fP - Displays the entries' top priority URL 
.IP "\(bu" 2
\fCcopyfrom\fP - Displays the URL this entry has been copied from (see \fBcopy\fP). 
.IP "\(bu" 2
\fCgroup\fP - The group this entry belongs to, see \fBgroup\fP 
.IP "\(bu" 2
\fCurls\fP - Displays all known URLs of this entry 
.IP "\(bu" 2
\fCstacktrace\fP - Print the full stacktrace when reporting errors; useful for debugging. 
.IP "\(bu" 2
\fCall\fP - Sets all flags. Mostly useful for debugging. 
.PP
.PP
Please note that if you want to display \fBfewer\fP items than per default, you'll have to clear the bitmask first, like this: 
.PP
.nf
    fsvs status -o verbose=none,changes,path

.fi
.PP
.SH "Diffing and merging on update"
.PP
.SS "Options relating to the 'diff' action"
The diff is not done internally in FSVS, but some other program is called, to get the highest flexibility.
.PP
There are several option values:
.PD 0

.IP "\(bu" 2
\fCdiff_prg\fP: The executable name, default \fC'diff'\fP. 
.IP "\(bu" 2
\fCdiff_opt\fP: The default options, default \fC'-pu'\fP. 
.IP "\(bu" 2
\fCdiff_extra\fP: Extra options, no default. 
.PP
.PP
The call is done as 
.PP
.nf
    $diff_prg $diff_opt $file1 --label '$label1' $file2 --label '$label2' $diff_extra

.fi
.PP
.PP
\fBNote:\fP
.RS 4
In \fCdiff_opt\fP you should use only use command line flags without parameters; in \fCdiff_extra\fP you can encode a single flag with parameter (like \fC'-U5'\fP). If you need more flexibility, write a shell script and pass its name as \fCdiff_prg\fP.
.RE
.PP
Advanced users might be interested in \fBexported environment variables\fP, too; with their help you can eg. start different \fCdiff\fP programs depending on the filename.
.SS "Using colordiff"
If you have \fCcolordiff\fP installed on your system, you might be interested in the \fCcolordiff\fP option.
.PP
It can take one of these values:
.PD 0

.IP "\(bu" 2
\fCno\fP, \fCoff\fP or \fCfalse:\fP Don't use \fCcolordiff\fP. 
.IP "\(bu" 2
empty (default value): Try to use \fCcolordiff\fP as executable, but don't throw an error if it can't be started; just pipe the data as-is to \fCSTDOUT\fP. (\fIAuto\fP mode.) 
.IP "\(bu" 2
anything else: Pipe the output of the \fCdiff\fP program (see \fBOptions relating to the 'diff' action\fP) to the given executable.
.PP
.PP
Please note that if \fCSTDOUT\fP is not a tty (eg. is redirected into a file), this option must be given on the command line to take effect.
.SS "How to resolve conflicts on update"
If you start an update, but one of the entries that was changed in the repository is changed locally too, you get a conflict.
.PP
There are some ways to resolve a conflict:
.PD 0

.IP "\(bu" 2
\fClocal\fP - Just take the local entry, ignore the repository. 
.IP "\(bu" 2
\fCremote\fP - Overwrite any local change with the remote version.
.PP

.IP "\(bu" 2
\fCboth\fP - Keep the local modifications in the file renamed to \fC\fIfilename\fP.mine\fP, and save the repository version as \fC\fIfilename\fP.r\fIXXX\fP\fP, ie. put the revision number after the filename.
.PP
The conflict must be solved manually, and the solution made known to FSVS via the \fBresolve\fP command.
.PP
\fBNote:\fP
.RS 4
As there's no known \fIgood\fP version after this renaming, a zero byte file gets created. 
.br
 Any \fBresolve\fP or \fBrevert\fP command would make that current, and the changes that are kept in \fC\fIfilename\fP.mine\fP would be lost! 
.br
 You should only \fBrevert\fP to the last repository version, ie. the data of \fC\fIfilename\fP.r\fIXXX\fP\fP.
.RE
.PP

.IP "\(bu" 2
\fCmerge\fP - Call the program \fCmerge\fP with the common ancestor, the local and the remote version.
.PP
If it is a clean merge, no further work is necessary; else you'll get the (partly) merged file, and the two other versions just like with the \fCboth\fP variant, and (again) have to tell FSVS that the conflict is solved, by using the \fBresolve\fP command. 
.PP
.PP
\fBNote:\fP
.RS 4
As in the subversion command line client \fCsvn\fP the auxiliary files are seen as new, although that might change in the future (so that they automatically get ignored).
.RE
.PP
.SS "Options regarding the 'merge' program"
Like with \fBdiff\fP, the \fCmerge\fP operation is not done internally in FSVS.
.PP
To have better control
.PD 0

.IP "\(bu" 2
\fCmerge_prg\fP: The executable name, default \fC'merge'\fP. 
.IP "\(bu" 2
\fCmerge_opt\fP: The default options, default \fC'-A'\fP. 
.PP
.PP
The option \fC'-p'\fP is always used: 
.PP
.nf
    $merge_prg $merge_opt -p $file1 $common $file2

.fi
.PP
.SH "Options for commit"
.PP
.SS "Author"
You can specify an author to be used on commit. This option has a special behaviour; if the first character of the value is an \fC'$'\fP, the value is replaced by the environment variable named.
.PP
Empty strings are ignored; that allows an \fC/etc/fsvs/config\fP like this: 
.PP
.nf
  author=unknown
  author=$LOGNAME
  author=$SUDO_USER

.fi
.PP
 where the last non-empty value is taken; and if your \fC\fP.authorized_keys has lines like 
.PP
.nf
  environment='FSVS_AUTHOR=some_user' ssh-rsa ...

.fi
.PP
 that would override the config values.
.PP
\fBNote:\fP
.RS 4
Your \fCsshd_config\fP needs the \fCPermitUserEnvironment\fP setting; you can also take a look at the \fCAcceptEnv\fP and \fCSendEnv\fP documentation.
.RE
.PP
.SS "Destination URL for commit"
If you defined multiple URLs for your working copy, FSVS needs to know which URL to commit to.
.PP
For this you would set \fCcommit_to\fP to the \fBname\fP of the URL; see this example: 
.PP
.nf
        fsvs urls N:master,P:10,http://... N:local,P:20,file:///...
        fsvs ci /etc/passwd -m 'New user defined' -ocommit_to=local

.fi
.PP
.SS "Doing empty commits"
In the default settings FSVS will happily create empty commits, ie. revisions without any changed entry. These just have a revision number, an author and a timestamp; this is nice if FSVS is run via CRON, and you want to see when FSVS gets run.
.PP
If you would like to avoid such revisions, set this option to \fCno\fP; then such commits will be avoided.
.PP
Example: 
.PP
.nf
        fsvs commit -o empty_commit=no -m 'cron' /etc

.fi
.PP
.SS "Avoid commits without a commit message"
If you don't like the behaviour that FSVS does commits with an empty message received from \fC$EDITOR\fP (eg if you found out that you don't want to commit after all), you can change this option to \fCno\fP; then FSVS won't allow empty commit messages.
.PP
Example for the config file: 
.PP
.nf
        empty_message=no

.fi
.PP
.SS "Creating directories in the repository above the URL"
If you want to keep some data versioned, the first commit is normally the creation of the base directories \fBabove\fP the given URL (to keep that data separate from the other repository data).
.PP
Previously this had to be done manually, ie. with a \fCsvn mkdir $URL --parents\fP or similar command. 
.br
 With the \fCmkdir_base\fP option you can tell FSVS to create directories as needed; this is mostly useful on the first commit.
.PP
.PP
.nf
        fsvs urls ...
        fsvs group 'group:ignore,./**'
        fsvs ci -m 'First post!' -o mkdir_base=yes
.fi
.PP
.SS "Waiting for a time change after working copy operations"
If you're using FSVS in automated systems, you might see that changes that happen in the same second as a commit are not seen with \fBstatus\fP later; this is because the timestamp granularity of FSVS is 1 second.
.PP
For backward compatibility the default value is \fCno\fP (don't delay). You can set it to any combination of
.PD 0

.IP "\(bu" 2
\fCcommit\fP, 
.IP "\(bu" 2
\fCupdate\fP, 
.IP "\(bu" 2
\fCrevert\fP and/or 
.IP "\(bu" 2
\fCcheckout\fP;
.PP
for \fCyes\fP all of these actions are delayed until the clock seconds change.
.PP
Example how to set that option via an environment variable: 
.PP
.nf
        export FSVS_DELAY=commit,revert

.fi
.PP
.SH "Performance and tuning related options"
.PP
.SS "Change detection"
This options allows one to specify the trade-off between speed and accuracy.
.PP
A file with a changed size can immediately be known as changed; but if only the modification time is changed, this is not so easy. Per default FSVS does a MD5 check on the file in this case; if you don't want that, or if you want to do the checksum calculation for \fBevery\fP file (in case a file has changed, but its mtime not), you can use this option to change FSVS' behaviour.
.PP
On the command line there's a shortcut for that: for every \fC'-C'\fP another check in this option is chosen.
.PP
The recognized specifications are noneResets the check bitmask to 'no checks'. file_mtimeCheck files for modifications (via MD5) and directories for new entries, if the mtime is different - default dirCheck all directories for new entries, regardless of the timestamp. allfilesCheck \fBall\fP files with MD5 for changes (\fCtripwire\fP -like operation). fullAll available checks. 
.PP
You can give multiple options; they're accumulated unless overridden by \fCnone\fP. 
.PP
.nf
    fsvs -o change_check=allfiles status

.fi
.PP
.PP
\fBNote:\fP
.RS 4
\fIcommit\fP and \fIupdate\fP set additionally the \fCdir\fP option, to avoid missing new files.
.RE
.PP
.SS "Avoiding expensive compares on \\ref cpfd 'copyfrom-detect'"
If you've got big files that are seen as new, doing the MD5 comparison can be time consuming. So there's the option \fCcopyfrom_exp\fP (for \fI'expensive'\fP, which takes the usual \fCyes\fP (default) and \fCno\fP arguments.
.PP
.PP
.nf
        fsvs copyfrom-detect -o copyfrom_exp=no some_directory
.fi
.PP
.SS "Getting grouping/ignore statistics"
If you need to ignore many entries of your working copy, you might find that the ignore pattern matching takes some valuable time. 
.br
 In order to optimize the order of your patterns you can specify this option to print the number of tests and matches for each pattern.
.PP
.PP
.nf
        $ fsvs status -o group_stats=yes -q

        Grouping statistics (tested, matched, groupname, pattern):

        4705  80   ignore   group:ignore,.
.fi
.PP
.PP
For optimizing you'll want to put often matching patterns at the front (to make them match sooner, and avoid unnecessary tests); but if you are using other groups than \fCignore\fP (like \fCtake\fP), you will have to take care to keep the patterns within a group together.
.PP
Please note that the first line shows how many entries were tested, and that the next lines differ by the number of matches entries for the current line, as all entries being tested against some pattern get tested for the next too, \fBunless they match the current pattern\fP.
.PP
This option is available for \fBstatus\fP and the \fBignore test\fP commands.
.SH "Base configuration"
.PP
.SS "Path definitions for the config and WAA area"
.PP
The paths given here are used to store the persistent configuration data needed by FSVS; please see \fBFiles used by fsvs\fP and \fBPriorities for option setting\fP for more details, and the \fBUsing an alternate root directory\fP parameter as well as the \fBRecovery for a non-booting system\fP for further discussion.
.PP
.PP
.nf
    FSVS_CONF=/home/user/.fsvs-conf fsvs -o waa=/home/user/.fsvs-waa st
.fi
.PP
.PP
\fBNote:\fP
.RS 4
Please note that these paths can be given \fBonly\fP as environment variables (\fC$FSVS_CONF\fP resp. \fC$FSVS_WAA\fP) or as command line parameter; settings in config files are ignored.
.RE
.PP
.SS "Configuration directory for the subversion libraries"
This path specifies where the subversion libraries should take their configuration data from; the most important aspect of that is authentication data, especially for certificate authentication.
.PP
The default value is \fC$FSVS_CONF/svn/\fP.
.PP
\fC/etc/fsvs/config\fP could have eg. 
.PP
.nf
    config_dir=/root/.subversion

.fi
.PP
.PP
Please note that this directory can hold an \fCauth\fP directory, and the \fCservers\fP and \fCconfig\fP files.
.SS "Using an alternate root directory"
This is a path that is prepended to \fC$FSVS_WAA\fP and \fC$FSVS_CONF\fP (or their default values, see \fBFiles used by fsvs\fP), if they do not already start with it, and it is cut off for the directory-name MD5 calculation.
.PP
When is that needed? Imagine that you've booted from some Live-CD like Knoppix; if you want to setup or restore a non-working system, you'd have to transfer all files needed by the FSVS binary to it, and then start in some kind of \fCchroot\fP environment.
.PP
With this parameter you can tell FSVS that it should load its libraries from the current filesystem, but use the given path as root directory for its administrative data.
.PP
This is used for recovery; see the example in \fBRecovery for a non-booting system\fP.
.PP
So how does this work?
.PD 0

.IP "\(bu" 2
The internal data paths derived from \fC$FSVS_WAA\fP and \fC$FSVS_CONF\fP use the value given for \fCsoftroot\fP as a base directory, if they do not already start with it. 
.br
 (If that creates a conflict for you, eg. in that you want to use \fC/var\fP as the \fCsoftroot\fP, and your \fC$FSVS_WAA\fP should be \fC/var/fsvs\fP, you can make the string comparison fail by using \fC/./var\fP for either path.)
.PP

.IP "\(bu" 2
When a directory name for \fC$FSVS_CONF\fP or \fC$FSVS_WAA\fP is derived from some file path, the part matching \fCsoftroot\fP is cut off, so that the generated names match the situation after rebooting. 
.PP
.PP
Previously you'd have to \fBexport\fP your data back to the filesystem and call \fBurls\fP \fC'fsvs urls'\fP and FSVS \fBsync-repos\fP again, to get the WAA data back.
.PP
\fBNote:\fP
.RS 4
A plain \fCchroot()\fP would not work, as some needed programs (eg. the decoder for update, see \fBSpecial property names\fP) would not be available.
.PP
The easy way to understand \fCsoftroot\fP is: If you want to do a \fCchroot()\fP into the given directory (or boot with it as \fC/\fP), you'll want this set.
.PP
As this value is used for finding the correct working copy root (by trying to find a \fBconf-path\fP, it cannot be set from a per-wc config file. Only the environment, global configuration or command line parameter make sense.
.RE
.PP
.SH "Debugging and diagnosing"
.PP
The next two options could be set in the global configuration file, to automatically get the last debug messages when an error happens.
.PP
To provide an easy way to get on-line debugging again, \fCdebug_output\fP and \fCdebug_buffer\fP are both reset to non-redirected, on-line output, if more than a single \fC-d\fP is specified on the command line, like this: 
.PP
.nf
fsvs commit -m '...'  -d -d filenames

.fi
.PP
.PP
In this case you'll get a message telling you about that.
.SS "Destination for debug output"
You can specify the debug output destination with the option \fCdebug_output\fP. This can be a simple filename (which gets truncated on open), or, if it starts with a \fC\fP|, a command that the output gets piped into.
.PP
If the destination cannot be opened (or none is given), debug output goes to \fCSTDOUT\fP (for easier tracing via \fCless\fP).
.PP
Example: 
.PP
.nf
fsvs -o debug_output=/tmp/debug.out -d st /etc

.fi
.PP
.PP
\fBNote:\fP
.RS 4
That string is taken only once - at the first debug output line. So you have to use the correct order of parameters: \fC-o debug_output=... -d\fP.
.RE
.PP
An example: writing the last 200 lines of debug output into a file. 
.PP
.nf
fsvs -o debug_output='| tail -200 > /tmp/debug.log' -d ....

.fi
.PP
.SS "Using a debug buffer"
With the \fCdebug_buffer\fP option you can specify the size of a buffer (in kB) that is used to capture the output, and which gets printed automatically if an error occurs.
.PP
This must be done \fBbefore\fP debugging starts, like with the \fBdebug_output\fP specification.
.PP
.PP
.nf
fsvs -o debug_buffer=128 ...
.fi
.PP
.PP
\fBNote:\fP
.RS 4
If this option is specified in the configuration file or via the environment, only the buffer is allocated; if it is used on the command line, debugging is automatically turned on, too.
.RE
.PP
.SS "Setting warning behaviour"
Please see the command line parameter \fB-W\fP, which is identical.
.PP
.PP
.nf
    fsvs -o warning=diff-status=ignore
.fi
.PP
 
.SH "Author"
.PP 
Generated automatically by Doxygen for fsvs from the source code.