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

The -p flag is now enabled by default.
authorJoey Hess <joey@kitenet.net>
Wed, 19 Jan 2011 18:28:06 +0000 (14:28 -0400)
committerJoey Hess <joey@kitenet.net>
Wed, 19 Jan 2011 18:28:06 +0000 (14:28 -0400)
mr first reads ~/.mrconfig, and then looks for an additional .mrconfig file in
the current directory or one of its parent directories. Closes: #557963

TODO
debian/changelog
mr

diff --git a/TODO b/TODO
index 43eae035375c1a48c16e7af91a84015edd3e8798..34ba317a16ebb373a3b654cef773133a07340c33 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,12 +1,3 @@
-* After the mtrust flag day, consider making something similar to -p 
-  be enabled by default. 
-
-  It should not be identical to -p, for the following reason: -p causes
-  mr to only look at the mrconfig it finds in the path (like -c only looks
-  at the specified file). But by default, mr should certianly load the
-  ~/.mrconfig (and files it chains). This allows a user to globally
-  configure mr with aliases, etc. (Closes: #557963)
-
 * a way to detect repos in a tree that are not registered, and warn
   about or even auto-register them. (svn externals make this quite
   difficult!)
 * a way to detect repos in a tree that are not registered, and warn
   about or even auto-register them. (svn externals make this quite
   difficult!)
index 29dd8773d975a16ce878758e1e9a3310752dda0a..0a44ad2ce931bc55a2950dcc371427bba693d893 100644 (file)
@@ -2,6 +2,9 @@ mr (1.00) UNRELEASED; urgency=low
 
   * Trust flag day. All mrconfig files except the main ~/.mrconfig are
     now untrusted by default, until listed in ~/.mrtrust.
 
   * Trust flag day. All mrconfig files except the main ~/.mrconfig are
     now untrusted by default, until listed in ~/.mrtrust.
+  * The -p flag is now enabled by default. mr first reads ~/.mrconfig,
+    and then looks for an additional .mrconfig file in the current
+    directory or one of its parent directories. Closes: #557963
 
  -- Joey Hess <joeyh@debian.org>  Wed, 19 Jan 2011 13:39:43 -0400
 
 
  -- Joey Hess <joeyh@debian.org>  Wed, 19 Jan 2011 13:39:43 -0400
 
diff --git a/mr b/mr
index 41a5362e95cec0f5f66f601fba2792c5e264f725..3f04b5b95041eb9b4e8d24458c64cdb2b45d1a3d 100755 (executable)
--- a/mr
+++ b/mr
@@ -49,7 +49,9 @@ and work on only that repository,
 
 B<mr> is configured by .mrconfig files, which list the repositories. It
 starts by reading the .mrconfig file in your home directory, and this can
 
 B<mr> is configured by .mrconfig files, which list the repositories. It
 starts by reading the .mrconfig file in your home directory, and this can
-in turn chain load .mrconfig files from repositories.
+in turn chain load .mrconfig files from repositories. It also automatically
+looks for a .mrconfig file in the current directory, or in one of its
+parent directories.
 
 These predefined commands should be fairly familiar to users of any revision
 control system:
 
 These predefined commands should be fairly familiar to users of any revision
 control system:
@@ -128,7 +130,7 @@ repository in the current directory is registered, or you can specify a
 directory to register.
 
 The mrconfig file that is modified is chosen by either the -c option, or by
 directory to register.
 
 The mrconfig file that is modified is chosen by either the -c option, or by
-looking for the closest known one at or below the current directory.
+looking for the closest known one at or in a parent of the current directory.
 
 =item config
 
 
 =item config
 
@@ -149,8 +151,8 @@ To see the built-in library of shell functions contained in mr:
 
   mr config DEFAULT lib
 
 
   mr config DEFAULT lib
 
-The ~/.mrconfig file is used by default. To use a different config file,
-use the -c option.
+The mrconfig file that is used is chosen by either the -c option, or by
+looking for the closest known one at or in a parent of the current directory.
 
 =item offline
 
 
 =item offline
 
@@ -200,14 +202,9 @@ the current working directory.
 
 =item --config mrconfig
 
 
 =item --config mrconfig
 
-Use the specified mrconfig file. The default is B<~/.mrconfig>
-
-=item -p
-
-=item --path
-
-Search in the current directory, and its parent directories and use
-the first B<.mrconfig> found, instead of the default B<~/.mrconfig>.
+Use the specified mrconfig file. The default is to use both B<~/.mrconfig>
+as well as look for a .mrconfig file in the current directory, or in one
+of its parent directories.
 
 =item -v
 
 
 =item -v
 
@@ -272,6 +269,12 @@ a good speedup in updates without loading the machine too much.
 Trust all mrconfig files even if they are not listed in ~/.mrtrust.
 Use with caution.
 
 Trust all mrconfig files even if they are not listed in ~/.mrtrust.
 Use with caution.
 
+=item -p
+
+=item --path
+
+This obsolete flag is ignored.
+
 =back
 
 =head1 MRCONFIG FILES
 =back
 
 =head1 MRCONFIG FILES
@@ -468,7 +471,8 @@ my $no_chdir=0;
 my $jobs=1;
 my $trust_all=0;
 my $directory=getcwd();
 my $jobs=1;
 my $trust_all=0;
 my $directory=getcwd();
-$ENV{MR_CONFIG}="$ENV{HOME}/.mrconfig";
+
+$ENV{MR_CONFIG}=find_mrconfig();
 
 # globals :-(
 my %config;
 
 # globals :-(
 my %config;
@@ -1486,7 +1490,7 @@ sub expandaction {
        return $action;
 }
 
        return $action;
 }
 
-sub find_nearest_mrconfig {
+sub find_mrconfig {
        my $dir=getcwd();
        while (length $dir) {
                if (-e "$dir/.mrconfig") {
        my $dir=getcwd();
        while (length $dir) {
                if (-e "$dir/.mrconfig") {
@@ -1494,7 +1498,7 @@ sub find_nearest_mrconfig {
                }
                $dir=~s/\/[^\/]*$//;
        }
                }
                $dir=~s/\/[^\/]*$//;
        }
-       die "no .mrconfig found in path\n";
+       return "$ENV{HOME}/.mrconfig";
 }
 
 sub getopts {
 }
 
 sub getopts {
@@ -1503,7 +1507,7 @@ sub getopts {
        my $result=GetOptions(
                "d|directory=s" => sub { $directory=abs_path($_[1]) },
                "c|config=s" => sub { $ENV{MR_CONFIG}=$_[1]; $config_overridden=1 },
        my $result=GetOptions(
                "d|directory=s" => sub { $directory=abs_path($_[1]) },
                "c|config=s" => sub { $ENV{MR_CONFIG}=$_[1]; $config_overridden=1 },
-               "p|path" => sub { $ENV{MR_CONFIG}=find_nearest_mrconfig(); $config_overridden=1 },
+               "p|path" => sub { }, # now default, ignore
                "v|verbose" => \$verbose,
                "q|quiet" => \$quiet,
                "s|stats" => \$stats,
                "v|verbose" => \$verbose,
                "q|quiet" => \$quiet,
                "s|stats" => \$stats,
@@ -1563,6 +1567,7 @@ sub main {
        init();
 
        startingconfig();
        init();
 
        startingconfig();
+       loadconfig("$ENV{HOME}/.mrconfig");
        loadconfig($ENV{MR_CONFIG});
        #use Data::Dumper; print Dumper(\%config);
        
        loadconfig($ENV{MR_CONFIG});
        #use Data::Dumper; print Dumper(\%config);