X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/5e6baa9997df5897ee4e46eb6ba3473761deac1b..55aa3f5eb153f5e46a5d795bc3fd40fa3f35646b:/mr diff --git a/mr b/mr index 886aa65..53f7a06 100755 --- a/mr +++ b/mr @@ -272,7 +272,7 @@ my %alias; Getopt::Long::Configure("no_permute"); my $result=GetOptions( "d|directory=s" => sub { $directory=abs_path($_[1]) }, - "c|config=s" => sub { $ENV{MR_CONFIG}=abs_path($_[1]) }, + "c|config=s" => \$ENV{MR_CONFIG}, "v|verbose" => \$verbose, "s|stats" => \$stats, "n|no-recurse" => \$no_recurse, @@ -283,6 +283,13 @@ if (! $result || @ARGV < 1) { } +# Make sure MR_CONFIG is an absolute path, but don't use abs_path since +# the config file might be a symlink to elsewhere, and the directory it's +# in is significant. +if ($ENV{MR_CONFIG} !~ /^\//) { + $ENV{MR_CONFIG}=getcwd()."/".$ENV{MR_CONFIG}; +} + loadconfig(\*DATA); loadconfig($ENV{MR_CONFIG}); #use Data::Dumper; @@ -325,6 +332,8 @@ elsif ($action eq 'config') { if ($section=~/^\//) { # try to convert to a path relative to the config file my ($dir)=$ENV{MR_CONFIG}=~/^(.*\/)[^\/]+$/; + $dir=abs_path($dir); + $dir.="/" unless $dir=~/\/$/; if ($section=~/^\Q$dir\E(.*)/) { $section=$1; } @@ -887,6 +896,15 @@ register = fi echo "Registering bzr url: $url" mr -c "$MR_CONFIG" config "$(pwd)" checkout="bzr clone $url $basedir" + elif [ -d CVS ]; then + repo=$(cat CVS/Repository) + root=$(cat CVS/Root) + if [ -z "$root" ]; then + error "cannot determine cvs root" + fi + echo "Registering cvs repository $repo at root $root" + mr -c "$MR_CONFIG" config "$(pwd)" \ + checkout="cvs -d '$root' co -d $basedir $repo" else error "unable to register this repo type" fi