]> git.madduck.net Git - code/myrepos.git/blobdiff - mr

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Merge branch 'master' into mrconfig_bestguess
[code/myrepos.git] / mr
diff --git a/mr b/mr
index 14f41656fee0844aac030602aea22c059e0ba0d2..19c29aa68f064595d5e4aa6c421ddbf383d0e4c1 100755 (executable)
--- a/mr
+++ b/mr
@@ -276,7 +276,7 @@ my %alias;
 Getopt::Long::Configure("no_permute");
 my $result=GetOptions(
        "d|directory=s" => sub { $directory=abs_path($_[1]) },
 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,
        "v|verbose" => \$verbose,
        "s|stats" => \$stats,
        "n|no-recurse" => \$no_recurse,
@@ -287,6 +287,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;
 loadconfig(\*DATA);
 loadconfig($ENV{MR_CONFIG});
 #use Data::Dumper;
@@ -329,6 +336,8 @@ elsif ($action eq 'config') {
        if ($section=~/^\//) {
                # try to convert to a path relative to the config file
                my ($dir)=$ENV{MR_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;
                }
                if ($section=~/^\Q$dir\E(.*)/) {
                        $section=$1;
                }
@@ -895,6 +904,15 @@ register =
                fi
                echo "Registering bzr url: $url in $MR_CONFIG"
                mr -c "$MR_CONFIG" config "$(pwd)" checkout="bzr clone $url $basedir"
                fi
                echo "Registering bzr url: $url in $MR_CONFIG"
                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
        else
                error "unable to register this repo type"
        fi