]>
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:
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 repo.
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 repo.
+The "MR_ACTION" environment variable is set to the command being run
+(update, checkout, etc).
+
A few parameters have special meanings:
=over 4
A few parameters have special meanings:
=over 4
will skip acting on that repository. The command is passed the action
name in $1.
will skip acting on that repository. The command is passed the action
name in $1.
-Here are two examples. The first skips the repo unless
+Here are three examples. The first skips the repo unless
mr is run by joey. The second uses the hours_since function
(included in mr's built-in library) to skip updating the repo unless it's
mr is run by joey. The second uses the hours_since function
(included in mr's built-in library) to skip updating the repo unless it's
-been at least 12 hours since the last update.
+been at least 12 hours since the last update. The third skips operating
+on the repo unless it already exists (use mr checkout to enable the repo).
skip = test `whoami` != joey
skip = [ "$1" = update ] && ! hours_since "$1" 12
skip = test `whoami` != joey
skip = [ "$1" = update ] && ! hours_since "$1" 12
my $is_update=($action =~ /update/);
$ENV{MR_REPO}=$dir;
my $is_update=($action =~ /update/);
$ENV{MR_REPO}=$dir;
+ $ENV{MR_ACTION}=$action;
foreach my $testname ("skip", "deleted") {
my $testcommand=findcommand($testname, $dir, $topdir, $subdir, $is_checkout);
foreach my $testname ("skip", "deleted") {
my $testcommand=findcommand($testname, $dir, $topdir, $subdir, $is_checkout);
print STDERR "mr $hook: received signal ".($? & 127)."\n";
return ABORT;
}
print STDERR "mr $hook: received signal ".($? & 127)."\n";
return ABORT;
}
+ else {
+ return FAILED;
+ }
$knownactions{$parameter}=1;
}
if ($parameter eq 'chain' &&
$knownactions{$parameter}=1;
}
if ($parameter eq 'chain' &&
- length $dir && $section ne "DEFAULT" &&
- -e $dir.$section."/.mrconfig") {
- my $ret=system($value);
- if ($ret != 0) {
- if (($? & 127) == 2) {
- print STDERR "mr: chain test interrupted\n";
- exit 2;
+ length $dir && $section ne "DEFAULT") {
+ my $chaindir="$section";
+ if ($chaindir !~ m!/!) {
+ $chaindir=$dir.$chaindir;
+ }
+ if (-e "$chaindir/.mrconfig") {
+ my $ret=system($value);
+ if ($ret != 0) {
+ if (($? & 127) == 2) {
+ print STDERR "mr: chain test interrupted\n";
+ exit 2;
+ }
+ elsif ($? & 127) {
+ print STDERR "mr: chain test received signal ".($? & 127)."\n";
+ }
- elsif ($? & 127) {
- print STDERR "mr: chain test received signal ".($? & 127)."\n" ;
+ else {
+ push @toload, ["$chaindir/.mrconfig", $chaindir] ;
- else {
- push @toload, $dir.$section."/.mrconfig";
- }
- foreach (@toload) {
- loadconfig($_ );
+ foreach my $c (@toload) {
+ loadconfig(@$c );
is_bzr_checkout() {
LANG=C bzr info | egrep -q '^Checkout'
}
is_bzr_checkout() {
LANG=C bzr info | egrep -q '^Checkout'
}
+ lazy() {
+ if [ "$MR_ACTION" = checkout ] || [ -d "$MR_REPO" ]; then
+ return 1
+ else
+ return 0
+ fi
+ }
svn_test = test -d "$MR_REPO"/.svn
git_test = test -d "$MR_REPO"/.git
svn_test = test -d "$MR_REPO"/.svn
git_test = test -d "$MR_REPO"/.git