]>
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:
like permissions fixups, or other tweaks to the repository content,
whenever the repository is changed.
like permissions fixups, or other tweaks to the repository content,
whenever the repository is changed.
+=item pre_ and post_
+
+If a "pre_action" parameter is set, its command is run before mr performs the
+specified action. Similarly, "post_action" parameters are run after mr
+successfully performs the specified action. For example, "pre_commit" is
+run before committing; "post_update" is run after updating.
+
=back
When looking for a command to run for a given action, mr first looks for
=back
When looking for a command to run for a given action, mr first looks for
chomp $rcs;
if ($rcs=~/\n/s) {
$rcs=~s/\n/, /g;
chomp $rcs;
if ($rcs=~/\n/s) {
$rcs=~s/\n/, /g;
- print STDERR "mr $action: found multiple possible repository types ($rcs) for $topdir$subdir \n";
+ print STDERR "mr $action: found multiple possible repository types ($rcs) for ".fulldir($topdir, $subdir)." \n";
return undef;
}
if (! length $rcs) {
return undef;
}
if (! length $rcs) {
+sub fulldir {
+ my ($topdir, $subdir) = @_;
+ return $subdir =~ /^\// ? $subdir : $topdir.$subdir;
+}
+
sub action {
my ($action, $dir, $topdir, $subdir, $force_checkout) = @_;
sub action {
my ($action, $dir, $topdir, $subdir, $force_checkout) = @_;
+ my $fulldir=fulldir($topdir, $subdir);
+
$ENV{MR_CONFIG}=$configfiles{$topdir};
my $lib=exists $config{$topdir}{$subdir}{lib} ?
$config{$topdir}{$subdir}{lib}."\n" : "";
$ENV{MR_CONFIG}=$configfiles{$topdir};
my $lib=exists $config{$topdir}{$subdir}{lib} ?
$config{$topdir}{$subdir}{lib}."\n" : "";
elsif (! defined $command) {
my $rcs=rcs_test(@_);
if (! defined $rcs) {
elsif (! defined $command) {
my $rcs=rcs_test(@_);
if (! defined $rcs) {
- print STDERR "mr $action: unknown repository type and no defined $action command for $topdir$sub dir\n";
+ print STDERR "mr $action: unknown repository type and no defined $action command for $full dir\n";
- print STDERR "mr $action: no defined action for $rcs repository $topdir$sub dir, skipping\n";
+ print STDERR "mr $action: no defined action for $rcs repository $full dir, skipping\n";
return SKIPPED;
}
}
else {
if (! $no_chdir) {
return SKIPPED;
}
}
else {
if (! $no_chdir) {
- print "mr $action: $topdir$sub dir\n" unless $quiet;
+ print "mr $action: $full dir\n" unless $quiet;
}
else {
my $s=$directory;
}
else {
my $s=$directory;
- $s=~s/^\Q$topdir$sub dir\E\/?//;
- print "mr $action: $topdir$sub dir (in subdir $s)\n" unless $quiet;
+ $s=~s/^\Q$full dir\E\/?//;
+ print "mr $action: $full dir (in subdir $s)\n" unless $quiet;
+
+ my $hookret=hook("pre_$action", $topdir, $subdir);
+ return $hookret if $hookret != OK;
+
$command="set -e; ".$lib.
"my_action(){ $command\n }; my_action ".
join(" ", map { s/\//\/\//g; s/"/\"/g; '"'.$_.'"' } @ARGV);
$command="set -e; ".$lib.
"my_action(){ $command\n }; my_action ".
join(" ", map { s/\//\/\//g; s/"/\"/g; '"'.$_.'"' } @ARGV);
+ my $ret=hook("post_$action", $topdir, $subdir);
+ return $ret if $ret != OK;
+
if (($is_checkout || $is_update)) {
my $ret=hook("fixups", $topdir, $subdir);
return $ret if $ret != OK;
}
if (($is_checkout || $is_update)) {
my $ret=hook("fixups", $topdir, $subdir);
return $ret if $ret != OK;
}