]> git.madduck.net Git - code/myrepos.git/commitdiff

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:

don't abs_path($ENV{MR_CONFIG})
authorJoey Hess <joey@kodama.kitenet.net>
Thu, 18 Oct 2007 20:42:30 +0000 (16:42 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Thu, 18 Oct 2007 20:42:30 +0000 (16:42 -0400)
mrconfig files can be symlinks to files in other directories. But the directory
the file is is significant, as it's the directory paths in the file
are relative to. abs_path follows the symlink, so take care not to use it.

mr

diff --git a/mr b/mr
index 44ff395aa684425cc972797a140049cfc032bac0..53f7a068c9b437efd249a1de87f9699aab4db459 100755 (executable)
--- 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]) },
 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,
@@ -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;
 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}=~/^(.*\/)[^\/]+$/;
        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;
                }