B<mr> [options] log
-B<mr> [options] register repository
+B<mr> [options] register [repository]
B<mr> [options] config section [parameter=[value] ...]
=item register
-The next parameter is the directory of an existing repository. The
-repository will be registered in the mrconfig file.
+Register an existing repository in the mrconfig file. By default, the
+epository in the current directory is registered, or you can specify a
+directory to register.
=item config
-Modifies the mrconfig file. The next parameter is the name of the section
-to add or modify, and it is followed by one or more instances of
-"parameter=value". Use "parameter=" to remove a parameter.
+Adds, modifies, removed, or prints a value from the mrconfig file. The next
+parameter is the name of the section the value is in. To add or modify a
+value, follow it by one or more instances of "parameter=value". Use
+"parameter=" to remove a parameter. Use just "parameter" to get the value
+of a parameter.
For example, to add (or edit) a repository in src/foo:
$section=$1;
}
}
- my %fields;
+ my %changefields;
foreach (@ARGV) {
if (/^([^=]+)=(.*)$/) {
- $fields{$1}=$2;
+ $changefields{$1}=$2;
}
else {
- die "mr config: expected parameter=value, not \"$_\"\n";
+ foreach my $topdir (sort keys %config) {
+ if (exists $config{$topdir}{$section} &&
+ exists $config{$topdir}{$section}{$_}) {
+ print $config{$topdir}{$section}{$_}."\n";
+ }
+ }
}
}
- modifyconfig($config, $section, %fields);
+ modifyconfig($config, $section, %changefields) if %changefields;
exit 0;
}
elsif ($action eq 'register') {
error "unknown repo type" \
fi
register = \
- if [ -z "$1" ]; then \
- error "repository directory not specified" \
+ if [ -n "$1" ]; then \
+ cd "$1" \
fi \
- cd "$1" \
basedir="$(basename $(pwd))" \
if [ -d .svn ]; then \
- url=$(LANG=C svn info . | \
+ url=$(LANG=C svn info . | \
grep -i ^URL: | cut -d ' ' -f 2) \
if [ -z "$url" ]; then \
error "cannot determine svn url" \
echo "Registering svn url: $url" \
mr config "$(pwd)" checkout="svn co $url $basedir" \
elif [ -d .git ]; then \
- url=$(LANG=C git-config --get remote.origin.url) \
+ url=$(LANG=C git-config --get remote.origin.url) \
if [ -z "$url" ]; then \
error "cannot determine git url" \
fi \