]> 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:

fix register when config file is overridden
[code/myrepos.git] / mr
diff --git a/mr b/mr
index 2247e52a2bc0d8eaa078ada6951d72fc886bd124..4fc7971f4fcc97ff4c3cc4e8d5d0f19288a12028 100755 (executable)
--- a/mr
+++ b/mr
@@ -224,7 +224,9 @@ is an alias, and its value is the action to use.
 All other sections add repositories. The section header specifies the
 directory where the repository is located. This is relative to the directory
 that contains the mrconfig file, but you can also choose to use absolute
 All other sections add repositories. The section header specifies the
 directory where the repository is located. This is relative to the directory
 that contains the mrconfig file, but you can also choose to use absolute
-paths.
+paths. (Note that you can use environment variables in section names; they
+will be passed through the shell for expansion. For example, 
+"[$HOSTNAME]", or "[${HOSTNAME}foo]")
 
 Within a section, each parameter defines a shell command to run to handle a
 given action. mr contains default handlers for "update", "status",
 
 Within a section, each parameter defines a shell command to run to handle a
 given action. mr contains default handlers for "update", "status",
@@ -423,6 +425,8 @@ sub action { #{{{
                       $config{$topdir}{$subdir}{lib}."\n" : "";
        my $is_checkout=($action eq 'checkout');
 
                       $config{$topdir}{$subdir}{lib}."\n" : "";
        my $is_checkout=($action eq 'checkout');
 
+       $ENV{MR_REPO}=$dir;
+
        if ($is_checkout) {
                if (-d $dir) {
                        print "mr $action: $dir already exists, skipping checkout\n" if $verbose;
        if ($is_checkout) {
                if (-d $dir) {
                        print "mr $action: $dir already exists, skipping checkout\n" if $verbose;
@@ -437,8 +441,6 @@ sub action { #{{{
                }
        }
 
                }
        }
 
-       $ENV{MR_REPO}=$dir;
-
        my $skiptest=findcommand("skip", $dir, $topdir, $subdir, $is_checkout);
        my $command=findcommand($action, $dir, $topdir, $subdir, $is_checkout);
 
        my $skiptest=findcommand("skip", $dir, $topdir, $subdir, $is_checkout);
        my $command=findcommand($action, $dir, $topdir, $subdir, $is_checkout);
 
@@ -717,6 +719,18 @@ sub selectrepos { #{{{
        return @repos;
 } #}}}
 
        return @repos;
 } #}}}
 
+sub expandenv { #{{{
+       my $val=shift;
+       
+
+       if ($val=~/\$/) {
+               $val=`echo "$val"`;
+               chomp $val;
+       }
+       
+       return $val;
+} #}}}
+
 my %loaded;
 sub loadconfig { #{{{
        my $f=shift;
 my %loaded;
 sub loadconfig { #{{{
        my $f=shift;
@@ -777,7 +791,7 @@ sub loadconfig { #{{{
                chomp;
                next if /^\s*\#/ || /^\s*$/;
                if (/^\[([^\]]*)\]\s*$/) {
                chomp;
                next if /^\s*\#/ || /^\s*$/;
                if (/^\[([^\]]*)\]\s*$/) {
-                       $section=$1;
+                       $section=expandenv($1);
                }
                elsif (/^(\w+)\s*=\s*(.*)/) {
                        my $parameter=$1;
                }
                elsif (/^(\w+)\s*=\s*(.*)/) {
                        my $parameter=$1;
@@ -900,7 +914,7 @@ sub modifyconfig { #{{{
                                $addfields->();
                        }
 
                                $addfields->();
                        }
 
-                       $section=$1;
+                       $section=expandenv($1);
 
                        push @out, $_;
                }
 
                        push @out, $_;
                }
@@ -1013,7 +1027,9 @@ sub config { #{{{
 } #}}}
 
 sub register { #{{{
 } #}}}
 
 sub register { #{{{
-       if (! $config_overridden) {
+       if ($config_overridden) {
+               ($directory)=$ENV{MR_CONFIG}=~/^(.*\/)[^\/]+$/;
+       } else {
                # Find the closest known mrconfig file to the current
                # directory.
                $directory.="/" unless $directory=~/\/$/;
                # Find the closest known mrconfig file to the current
                # directory.
                $directory.="/" unless $directory=~/\/$/;
@@ -1207,7 +1223,7 @@ git_status = git status "$@" || true
 bzr_status = bzr status "$@"
 cvs_status = cvs status "$@"
 hg_status  = hg status "$@"
 bzr_status = bzr status "$@"
 cvs_status = cvs status "$@"
 hg_status  = hg status "$@"
-darcs_status = darcs whatsnew -ls "$@"
+darcs_status = darcs whatsnew -ls "$@" || true
 
 svn_commit = svn commit "$@"
 git_commit = git commit -a "$@" && git push --all
 
 svn_commit = svn commit "$@"
 git_commit = git commit -a "$@" && git push --all