]>
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:
If the .mrconfig file includes a repository named ".", that
is checked out into the top of the specified directory.
If the .mrconfig file includes a repository named ".", that
is checked out into the top of the specified directory.
-To bootstrap from a SSL url with an untrusted certificate, you may
-need to specify the -k option.
-
=item list (or ls)
List the repositories that mr will act on.
=item list (or ls)
List the repositories that mr will act on.
Here is an example .mrconfig file:
Here is an example .mrconfig file:
or even to add other commands for 'mr online' to run. If the file is
present, mr assumes it is in offline mode.
or even to add other commands for 'mr online' to run. If the file is
present, mr assumes it is in offline mode.
-=head1 "UNTRUSTED MRCONFIG FILES"
+=head1 UNTRUSTED MRCONFIG FILES
Since mrconfig files can contain arbitrary shell commands, they can do
Since mrconfig files can contain arbitrary shell commands, they can do
-anything. This flexa bility is good, but it also allows a malicious mrconfig
+anything. This flexi bility is good, but it also allows a malicious mrconfig
file to delete your whole home directory. Such a file might be contained
inside a repository that your main ~/.mrconfig checks out and chains to. To
avoid worries about evil commands in a mrconfig file, mr
file to delete your whole home directory. Such a file might be contained
inside a repository that your main ~/.mrconfig checks out and chains to. To
avoid worries about evil commands in a mrconfig file, mr
+sub repodir {
+ my $repo=shift;
+ my $topdir=$repo->{topdir};
+ my $subdir=$repo->{subdir};
+ my $ret=($subdir =~/^\//) ? $subdir : $topdir.$subdir;
+ $ret=~s/\/\.$//;
+ return $ret;
+}
+
# figure out which repos to act on
sub selectrepos {
my @repos;
# figure out which repos to act on
sub selectrepos {
my @repos;
my $subdir=$repo->{subdir};
next if $subdir eq 'DEFAULT';
my $subdir=$repo->{subdir};
next if $subdir eq 'DEFAULT';
- my $dir=($subdir =~/^\//) ? $subdir : $topdir.$subdir ;
+ my $dir=repodir($repo) ;
my $d=$directory;
$dir.="/" unless $dir=~/\/$/;
$d.="/" unless $d=~/\/$/;
my $d=$directory;
$dir.="/" unless $dir=~/\/$/;
$d.="/" unless $d=~/\/$/;
my $subdir=$repo->{subdir};
next if $subdir eq 'DEFAULT';
my $subdir=$repo->{subdir};
next if $subdir eq 'DEFAULT';
- my $dir=($subdir =~/^\//) ? $subdir : $topdir.$subdir ;
+ my $dir=repodir($repo) ;
my $d=$directory;
$dir.="/" unless $dir=~/\/$/;
$d.="/" unless $d=~/\/$/;
my $d=$directory;
$dir.="/" unless $dir=~/\/$/;
$d.="/" unless $d=~/\/$/;
}
}
$section=expandenv($section) if $trusted;
}
}
$section=expandenv($section) if $trusted;
+ if ($section ne 'ALIAS' &&
+ ! exists $config{$dir}{$section} &&
+ exists $config{$dir}{DEFAULT}) {
+ # copy in defaults
+ $config{$dir}{$section}={ %{$config{$dir}{DEFAULT}} };
+ }
}
elsif (/^(\w+)\s*=\s*(.*)/) {
my $parameter=$1;
}
elsif (/^(\w+)\s*=\s*(.*)/) {
my $parameter=$1;
if (! defined $section) {
die "$f line $.: parameter ($parameter) not in section\n";
}
if (! defined $section) {
die "$f line $.: parameter ($parameter) not in section\n";
}
- if ($section ne 'ALIAS' &&
- ! exists $config{$dir}{$section} &&
- exists $config{$dir}{DEFAULT}) {
- # copy in defaults
- $config{$dir}{$section}={ %{$config{$dir}{DEFAULT}} };
- }
if ($section eq 'ALIAS') {
$alias{$parameter}=$value;
}
if ($section eq 'ALIAS') {
$alias{$parameter}=$value;
}
eval q{use File::Temp};
die $@ if $@;
my $tmpconfig=File::Temp->new();
eval q{use File::Temp};
die $@ if $@;
my $tmpconfig=File::Temp->new();
- my @curlargs = ("curl", "-A", "mr", "-s", $url, "-o", $tmpconfig);
+ my @curlargs = ("curl", "-A", "mr", "-L", "- s", $url, "-o", $tmpconfig);
push(@curlargs, "-k") if $insecure;
my $curlstatus = system(@curlargs);
die "mr bootstrap: invalid SSL certificate for $url (consider -k)\n" if $curlstatus >> 8 == 60;
push(@curlargs, "-k") if $insecure;
my $curlstatus = system(@curlargs);
die "mr bootstrap: invalid SSL certificate for $url (consider -k)\n" if $curlstatus >> 8 == 60;
"v|verbose" => \$verbose,
"q|quiet" => \$quiet,
"s|stats" => \$stats,
"v|verbose" => \$verbose,
"q|quiet" => \$quiet,
"s|stats" => \$stats,
- "k|insecure" => \$insecure,
+ "k|insecure" => \$insecure,
"i|interactive" => \$interactive,
"n|no-recurse:i" => \$max_depth,
"j|jobs:i" => \$jobs,
"i|interactive" => \$interactive,
"n|no-recurse:i" => \$max_depth,
"j|jobs:i" => \$jobs,
fi
delta=`perl -wle 'print -f shift() ? int((-M _) * 24) : 9999' "$flagfile"`
if [ "$delta" -lt "$2" ]; then
fi
delta=`perl -wle 'print -f shift() ? int((-M _) * 24) : 9999' "$flagfile"`
if [ "$delta" -lt "$2" ]; then
darcs_update = darcs pull -a "$@"
svn_status = svn status "$@"
darcs_update = darcs pull -a "$@"
svn_status = svn status "$@"
-git_status = git status "$@" || true
-bzr_status = bzr status "$@"
+git_status = git status -s "$@" || true
+bzr_status = bzr status --short "$@"
cvs_status = cvs status "$@"
hg_status = hg status "$@"
darcs_status = darcs whatsnew -ls "$@" || true
cvs_status = cvs status "$@"
hg_status = hg status "$@"
darcs_status = darcs whatsnew -ls "$@" || true