fsvs-options (5) - Linux Manuals
fsvs-options: FSVS understands some other options, that modify its behaviour.
NAME
Further options for FSVS. - FSVS understands some other options, that modify its behaviour.
Short list of options
FSVS currently knows:
- *
- all_removed - Trimming the list of deleted entries
- *
- author - Author
- *
- change_check - Change detection
- *
- colordiff - Using colordiff
- *
- commit_to - Destination URL for commit
- *
- conflict - How to resolve conflicts on update
- *
- conf - Path definitions for the config and WAA area.
- *
- config_dir - Configuration directory for the subversion libraries.
- *
- copyfrom_exp - Avoiding expensive compares on copyfrom-detect
- *
- debug_output - Destination for debug output
- *
- delay - Waiting for a time change after working copy operations
- *
- diff_prg, diff_opt, diff_extra - Options relating to the 'diff' action
- *
- dir_sort - Directory sorting
- *
- empty_commit - Doing empty commits
- *
- filter - Filtering entries, but see -f.
- *
- limit - 'fsvs log' revision limit
- *
- log_output - 'fsvs log' output format
- *
- merge_prg, merge_opt - Options regarding the 'merge' programm
- *
- path - Displaying paths
- *
- softroot - Using an alternate root directory
- *
- stat_color - Status output coloring
- *
- stop_on_change - Stopping status reports as soon as changes are found
- *
- warning - Setting warning behaviour, but see -W.
- *
- waa - o_waa.
Priorities for option setting
The priorities are
- *
- Command line (highest)
- *
- Environment variables. These are named as FSVS_{upper-case option name}.
- *
- $HOME/.fsvs/wc-dir/config
- *
- $FSVS_CONF/wc-dir/config
- *
- $HOME/.fsvs/config
- *
- $FSVS_CONF/config
- *
- Default value, compiled in (lowest)
Note:
- The $HOME-dependent configuration files are not implemented currently. Volunteers?
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.
Examples
Using the commandline:
fsvs -o path=environment fsvs -opath=environment
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.
There are several possible settings, of which one can be chosen via the path option.
Note:
The next two are nearly identical to absolute, 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.
Note:
Only environment variables whose names start with WC are used for substitution, to avoid using variables like $PWD, $OLDPWD, $HOME 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.
Example, with / as working copy base:
Note:
The diff is not done internally in FSVS, but some other program is called, to get the highest flexibility.
There are several option values:
The call is done as
Note:
Very advanced users might be interested in exported environmentvariables', too.
If you have colordiff installed on your system, you might be interested in the colordiff option.
It can take on of these values:
Please note that if STDOUT is not a tty (eg. is redirected into a file), this option must be given on the command line to take effect.
Please see the command line parameter for -f, which is identical.
If you remove a directory, all entries below are implicitly known to be deleted, too. To make the status output shorter there's the all_removed option; which, if set to yes, will cause children of removed entries to be omitted.
Example for the config file:
This options allows to specify the trade-off between speed and accuracy.
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 every file (in case a file has changed, but its mtime not), you can use this option to change FSVS' behaviour.
On the command line there's a shortcut for that: for every '-C' another check in this option is chosen.
The recognized specifications are noneResets the check bitmask to 'no checks'. file_mtimeCheck files for modifications via MD5 if the mtime is different - default dirCheck all directories for new entries - this happens normally if a directory ha allfilesCheck all files with MD5 for changes (tripwire -like operation). fullAll available checks.
You can give multiple options; they're accumulated unless overridden by none.
Note:
Please see the command line parameter -W, which is identical.
This is a path that is prepended to $FSVS_WAA and $FSVS_CONF (or their default values, see Files used by fsvs), if they do not already start with it, and it is cut off for the directory-name MD5 calculation.
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 chroot environment.
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.
This is used for recovery; see the example in Recovery for a non-booting system.
So how does this work?
Previously you'd have to export your data back to the filesystem and call urls 'fsvs urls' and fsvs sync-repos again, to get the WAA data back.
Note:
The easy way to understand softroot is: If you want to do a chroot() into the given directory (or boot with it as /), you'll want this set.
As this value is used for finding the correct working copy root (by trying to find a conf-path, it cannot be set from a per-wc config file. Only the environment, global configuration or command line parameter make sense.
There are some defaults for the number of revisions that are shown on a 'fsvs log' command:
So this command is mostly useful to get more than the default number of revisions on when running without revision arguments, or to get fewer.
You can modify aspects of the fsvs log output format by setting the log_output option to a combination of these flags:
Note:
Furthermore the value normal is available; this turns off all special handling.
Note:
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 -v) will be given in the default color.
For this you can set stat_color=yes; this is turned off per default.
As with the other colorizing options this gets turned off automatically if the output is not on a tty; on the command line you can override this, though.
If you'd like to have the output of status sorted, you can use the option dir_sort=yes. 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. (See dir_enumerator().)
Note:
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 '$', the value is replaced by the environment variable named.
Empty strings are ignored; that allows an /etc/fsvs/config like this:
Note:
If you defined multiple URLs for your working copy, FSVS needs to know which URL to commit to.
For this you would set commit_to to the name of the URL; see this example:
See -d.
Example:
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.
If you would like to avoid such revisions, set this option to no; then such commits will be avoided.
Example:
If you've got big files that are seen as new, doing the MD5 comparison can be time consuming. So there's the option copyfrom_exp, which takes the usual yes (default) and no arguments.
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 status later; this is because the timestamp granularity of fsvs is 1 second.
For backward compatibility the default value is no (don't delay). You can set it to any combination of
for yes all of these actions are delayed until the clock seconds change.
Example how to set that option via an environment variable:
If you want to use FSVS in scripts, you might simply want to know whether anything was changed.
For this use the stop_on_change option, possibly combined with Filtering entries :
If you start an update, but one of the entries that was changed in the repository is changed locally too, you get a conflict.
There are some ways to resolve a conflict:
These files will be seen as New; the conflict must be solved manually, and the resolution made known to FSVS via resolve.
Note:
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 both variant, and have to tell FSVS that the conflict is resolved by resolve.
Note:
Like with diff, the merge operation is not done internally in FSVS.
To have better control
The option '-p' is always used:
The paths given here are used to store the persistent configuration data needed by FSVS; please see Files used by fsvs and Priorities for option setting for more details, and the Using an alternate root directory parameter as well as the Recovery for a non-booting system for further discussion.
Note:
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.
The default value is $FSVS_CONF/auth/.
/etc/fsvs/config could have eg.
FSVS_PATH=absolute fsvs st
# FSVS configuration file
path=wcroot
Displaying paths
$ cd /etc
$ fsvs -o path=wcroot st
$ fsvs -o path=absolute st
$ fsvs -o path=parameters st
$ fsvs -o path=parameters st .
$ fsvs -o path=parameters st /
$ fsvs -o path=parameters st X11
$ fsvs -o path=parameters st ../dev/..
$ fsvs -o path=parameters st X11 ../etc
$ fsvs -o path=parameters st ../etc X11
$ fsvs -o path=environ st
$ WCBAR=/etc fsvs -o path=wcroot st
$ WCBAR=/etc fsvs -o path=wcroot st /
$ WCBAR=/e fsvs -o path=wcroot st
$ WCBAR=/etc WCFOO=/etc/X11 fsvs -o path=wcroot st
$ touch /etc/X11/xinit/xinitrc
$ fsvs -o path=parameters st
$ fsvs -o path=parameters st X11 /etc/X11/xinit
Options relating to the 'diff' action
$diff_prg $diff_opt $file1 --label '$label1' $file2 --label '$label2' diff_extra
Using colordiff
Filtering entries
fsvs -o filter=mtime
Trimming the list of deleted entries
all_removed=yes
Change detection
fsvs -o change_check=allfiles status
Setting warning behaviour
fsvs -o warning=diff-status=ignore
Using an alternate root directory
'fsvs log' revision limit
'fsvs log' output format
Status output coloring
Directory sorting
Author
author=unknown
author=$LOGNAME
author=$SUDO_USER
environment='FSVS_AUTHOR=some_user' ssh-rsa ...
Destination URL for commit
fsvs urls N:master,P:10,http://... N:local,P:20,file:///...
fsvs ci /etc/passwd -m 'New user defined' -ocommit_to=local
Destination for debug output
fsvs -o debug_output=/tmp/debug.out -d st /etc
Doing empty commits
fsvs commit -o empty_commit=no -m 'cron' /etc
Avoiding expensive compares on \ref cpfd 'copyfrom-detect'
fsvs copyfrom-detect -o copyfrom_exp=no some_directory
Waiting for a time change after working copy operations
export FSVS_DELAY=commit,revert
Stopping status reports as soon as changes are found
fsvs -o stop_change=yes st /etc
fsvs -o stop_change=yes -o filter=text status /etc/init.d
How to resolve conflicts on update
Options regarding the 'merge' programm
$merge_prg $merge_opt -p $file1 $common $file2
Path definitions for the config and WAA area
FSVS_CONF=/home/user/.fsvs-conf fsvs -o waa=/home/user/.fsvs-waa st
Configuration directory for the subversion libraries
config_dir=/root/.subversion