=item lib
-The "lib" parameter can specify some shell code that will be run before each
-command, this can be a useful way to define shell functions for other commands
-to use.
+The "lib" parameter can specify some shell code that will be run
+before each command, this can be a useful way to define shell
+functions for other commands to use.
+
+Unlike most other parameters, this can be specified multiple times, in
+which case the chunks of shell code are accumulatively concatenated
+together.
=item fixups
like permissions fixups, or other tweaks to the repository content,
whenever the repository is changed.
-=item pre_ and post_
-
-If a "pre_action" parameter is set, its command is run before mr performs the
-specified action. Similarly, "post_action" parameters are run after mr
-successfully performs the specified action. For example, "pre_commit" is
-run before committing; "post_update" is run after updating.
-
-=back
+=item VCS_action
When looking for a command to run for a given action, mr first looks for
a parameter with the same name as the action. If that is not found, it
override these VCS specific actions. To add a new version control system,
you can just add VCS specific actions for it.
+=item pre_ and post_
+
+If a "pre_action" parameter is set, its command is run before mr performs the
+specified action. Similarly, "post_action" parameters are run after mr
+successfully performs the specified action. For example, "pre_commit" is
+run before committing; "post_update" is run after updating.
+
+=item _append
+
+Any parameter can be suffixed with C<_append>, to add an additional value
+to the existing value of the parameter. In this way, actions
+can be constructed accumulatively.
+
+=back
+
=head1 UNTRUSTED MRCONFIG FILES
Since mrconfig files can contain arbitrary shell commands, they can do
if ($section eq 'ALIAS') {
$alias{$parameter}=$value;
}
- elsif ($parameter eq 'lib') {
- $config{$dir}{$section}{lib}.=$value."\n";
+ elsif ($parameter eq 'lib' or $parameter =~ s/_append$//) {
+ $config{$dir}{$section}{$parameter}.="\n".$value."\n";
}
else {
$config{$dir}{$section}{$parameter}=$value;