]>
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:
summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
4c155e7 )
-Register an existing repository in the mrconfig file. By default, the
+Register an existing repository in a mrconfig file. By default, the
repository in the current directory is registered, or you can specify a
directory to register.
repository in the current directory is registered, or you can specify a
directory to register.
-By default it registers it to the ~/.mrconfig file. To make it write to a
-different file, use the -c option .
+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 .
-Adds, modifies, removes, or prints a value from the mrconfig file. The next
+Adds, modifies, removes, or prints a value from a mrconfig file. The next
parameter is the name of the section the value is in. To add or modify
values, use one or more instances of "parameter=value". Use "parameter=" to
remove a parameter. Use just "parameter" to get the value of a parameter.
parameter is the name of the section the value is in. To add or modify
values, use one or more instances of "parameter=value". Use "parameter=" to
remove a parameter. Use just "parameter" to get the value of a parameter.
+The ~/.mrconfig file is used by default. To use a different config file,
+use the -c option.
+
=item help
Displays this help.
=item help
Displays this help.
-Use the specified mrconfig file, instead of looking for one in your home
-directory.
+Use the specified mrconfig file. The default is B<~/.mrconfig>
are run inside the repository, though not necessarily at the top of it.
The "MR_REPO" environment variable is set to the path to the top of the
are run inside the repository, though not necessarily at the top of it.
The "MR_REPO" environment variable is set to the path to the top of the
-repository, and "MR_CONFIG" is set to the .mrconfig file that defines th e
-repo being acted on, or, if the repo is not yet in a config file, the
-.mrconfig file that mr thinks it should be added t o.
+repository. The "MR_CONFIG" environment variable is set to the .mrconfig fil e
+that defines the repo being acted on, or, if the repo is not yet in a config
+file, the .mrconfig file that should be modified to register the rep o.
A few parameters have special meanings:
A few parameters have special meanings:
};
$ENV{MR_CONFIG}="$ENV{HOME}/.mrconfig";
};
$ENV{MR_CONFIG}="$ENV{HOME}/.mrconfig";
+my $config_overridden=0;
my $directory=getcwd();
my $verbose=0;
my $stats=0;
my $directory=getcwd();
my $verbose=0;
my $stats=0;
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" => \$ENV{MR_CONFIG },
+ "c|config=s" => sub { $ENV{MR_CONFIG}=$_[1]; $config_overridden=1 },
"v|verbose" => \$verbose,
"s|stats" => \$stats,
"n|no-recurse" => \$no_recurse,
"v|verbose" => \$verbose,
"s|stats" => \$stats,
"n|no-recurse" => \$no_recurse,
+# commands that do not operate on all repos
if ($action eq 'help') {
exec($config{''}{DEFAULT}{$action}) || die "exec: $!";
}
if ($action eq 'help') {
exec($config{''}{DEFAULT}{$action}) || die "exec: $!";
}
exit 0;
}
elsif ($action eq 'register') {
exit 0;
}
elsif ($action eq 'register') {
+ if (! $config_overridden) {
+ # Find the closest known mrconfig file to the current
+ # directory.
+ $directory.="/" unless $directory=~/\/$/;
+ foreach my $topdir (reverse sort keys %config) {
+ next unless length $topdir;
+ if ($directory=~/^\Q$topdir\E/) {
+ $ENV{MR_CONFIG}=$configfiles{$topdir};
+ last;
+ }
+ }
+ }
my $command="set -e; ".$config{''}{DEFAULT}{lib}."\n".
"my_action(){ $config{''}{DEFAULT}{$action}\n }; my_action ".
join(" ", map { s/\//\/\//g; s/"/\"/g; '"'.$_.'"' } @ARGV);
my $command="set -e; ".$config{''}{DEFAULT}{lib}."\n".
"my_action(){ $config{''}{DEFAULT}{$action}\n }; my_action ".
join(" ", map { s/\//\/\//g; s/"/\"/g; '"'.$_.'"' } @ARGV);
$dir=".";
}
$dir=abs_path($dir)."/";
$dir=".";
}
$dir=abs_path($dir)."/";
+
+ if (! exists $configfiles{$dir}) {
+ $configfiles{$dir}=$f;
+ }
# copy in defaults from first parent
my $parent=$dir;
# copy in defaults from first parent
my $parent=$dir;
else {
$config{$dir}{$section}{$parameter}=$value;
$knownactions{$parameter}=1;
else {
$config{$dir}{$section}{$parameter}=$value;
$knownactions{$parameter}=1;
- if (! exists $configfiles{$dir}) {
- $configfiles{$dir}=abs_path($f);
- }
if ($parameter eq 'chain' &&
length $dir && $section ne "DEFAULT" &&
-e $dir.$section."/.mrconfig") {
if ($parameter eq 'chain' &&
length $dir && $section ne "DEFAULT" &&
-e $dir.$section."/.mrconfig") {