X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/2f861a437094ba6d5106b3b96823788b935f82f2..54b2aa669527829d36eeb92dbda13977200d5545:/mr diff --git a/mr b/mr index 96f3a16..db209d2 100755 --- a/mr +++ b/mr @@ -18,7 +18,7 @@ B [options] diff B [options] log -B [options] register repository +B [options] register [repository] B [options] config section [parameter=[value] ...] @@ -80,14 +80,17 @@ List the repositories that mr will act on. =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: @@ -281,16 +284,21 @@ elsif ($action eq 'config') { $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') { @@ -710,13 +718,12 @@ log = \ 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=$(svn info . | \ + url=$(LANG=C svn info . | \ grep -i ^URL: | cut -d ' ' -f 2) \ if [ -z "$url" ]; then \ error "cannot determine svn url" \ @@ -724,12 +731,19 @@ register = \ echo "Registering svn url: $url" \ mr config "$(pwd)" checkout="svn co $url $basedir" \ elif [ -d .git ]; then \ - url=$(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 \ echo "Registering git url: $url" \ mr config "$(pwd)" checkout="git clone $url $basedir" \ + elif [ -d .bzr ]; then \ + url=$(cat .bzr/branch/parent) \ + if [ -z "$url" ]; then \ + error "cannot determine bzr url" \ + fi \ + echo "Registering bzr url: $url" \ + mr config "$(pwd)" checkout="bzr clone $url $basedir" \ else \ error "unable to register this repo type" \ fi