]>
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:
B<mr> is a Multiple Repository management tool. It can checkout, update, or
perform other actions on a set of repositories as if they were one combined
B<mr> is a Multiple Repository management tool. It can checkout, update, or
perform other actions on a set of repositories as if they were one combined
-respository. It supports any combination of subversion, git, cvs, mecurial and
-bzr repositories, and support for other revision control systems can easily be
-added.
+respository. It supports any combination of subversion, git, cvs, mecurial,
+bzr and darcs repositories, and support for other revision control systems can
+easily be added.
B<mr> cds into and operates on all registered repositories at or below your
working directory. Or, if you are in a subdirectory of a repository that
B<mr> cds into and operates on all registered repositories at or below your
working directory. Or, if you are in a subdirectory of a repository that
be processed later.
Note that if a repository is located in a subdirectory of another
be processed later.
Note that if a repository is located in a subdirectory of another
-repository, ordering it to be processed earlier is not recommended, as this
-can cause confusion during checkouts.
+repository, ordering it to be processed earlier is not recommended.
$ENV{MR_CONFIG}="$ENV{HOME}/.mrconfig";
my $config_overridden=0;
$ENV{MR_CONFIG}="$ENV{HOME}/.mrconfig";
my $config_overridden=0;
my $verbose=0;
my $stats=0;
my $no_recurse=0;
my $verbose=0;
my $stats=0;
my $no_recurse=0;
my %configfiles;
my %knownactions;
my %alias;
my %configfiles;
my %knownactions;
my %alias;
Getopt::Long::Configure("no_permute");
my $result=GetOptions(
Getopt::Long::Configure("no_permute");
my $result=GetOptions(
"(Use mr help for man page.)\n");
}
"(Use mr help for man page.)\n");
}
+if (! defined $directory) {
+ die("mr: failed to determine working directory\n");
+}
# Make sure MR_CONFIG is an absolute path, but don't use abs_path since
# the config file might be a symlink to elsewhere, and the directory it's
# Make sure MR_CONFIG is an absolute path, but don't use abs_path since
# the config file might be a symlink to elsewhere, and the directory it's
}
if (! @repos) {
# fallback to find a leaf repo
}
if (! @repos) {
# fallback to find a leaf repo
- foreach my $repo (@list) {
+ foreach my $repo (reverse @list) {
my $topdir=$repo->{topdir};
my $subdir=$repo->{subdir};
my $topdir=$repo->{topdir};
my $subdir=$repo->{subdir};
else {
foreach my $repo (@repos) {
record($repo, action($action, @$repo));
else {
foreach my $repo (@repos) {
record($repo, action($action, @$repo));
}
}
if (! @ok && ! @failed && ! @skipped) {
}
}
if (! @ok && ! @failed && ! @skipped) {
waitpid($active[$i][0], 0);
print STDOUT $out[$i][0];
print STDERR $out[$i][1];
waitpid($active[$i][0], 0);
print STDOUT $out[$i][0];
print STDERR $out[$i][1];
record($active[$i][1], $? >> 8);
splice(@fhs, $i, 1);
splice(@active, $i, 1);
record($active[$i][1], $? >> 8);
splice(@fhs, $i, 1);
splice(@active, $i, 1);
if ($ret == OK) {
push @ok, $dir;
if ($ret == OK) {
push @ok, $dir;
}
elsif ($ret == FAILED) {
push @failed, $dir;
}
elsif ($ret == FAILED) {
push @failed, $dir;
}
elsif ($ret == SKIPPED) {
push @skipped, $dir;
}
elsif ($ret == SKIPPED) {
push @skipped, $dir;
if [ -z "$1" ] || [ -z "$2" ]; then
error "mr: usage: hours_since action num"
fi
if [ -z "$1" ] || [ -z "$2" ]; then
error "mr: usage: hours_since action num"
fi
- for dir in .git .svn .bzr CVS .hg; do
+ for dir in .git .svn .bzr CVS .hg _darcs ; do
if [ -e "$MR_REPO/$dir" ]; then
flagfile="$MR_REPO/$dir/.mr_last$1"
break
if [ -e "$MR_REPO/$dir" ]; then
flagfile="$MR_REPO/$dir/.mr_last$1"
break
cvs update "$@"
elif [ -d "$MR_REPO"/.hg ]; then
hg pull "$@" && hg update "$@"
cvs update "$@"
elif [ -d "$MR_REPO"/.hg ]; then
hg pull "$@" && hg update "$@"
+ elif [ -d "$MR_REPO"/_darcs ]; then
+ darcs pull "$@"
else
error "unknown repo type"
fi
else
error "unknown repo type"
fi
cvs status "$@"
elif [ -d "$MR_REPO"/.hg ]; then
hg status "$@"
cvs status "$@"
elif [ -d "$MR_REPO"/.hg ]; then
hg status "$@"
+ elif [ -d "$MR_REPO"/_darcs ]; then
+ darcs whatsnew -ls "$@"
else
error "unknown repo type"
fi
else
error "unknown repo type"
fi
cvs commit "$@"
elif [ -d "$MR_REPO"/.hg ]; then
hg commit -m "$@" && hg push
cvs commit "$@"
elif [ -d "$MR_REPO"/.hg ]; then
hg commit -m "$@" && hg push
+ elif [ -d "$MR_REPO"/_darcs ]; then
+ darcs commit -m "$@" && darcs push
else
error "unknown repo type"
fi
else
error "unknown repo type"
fi
cvs diff "$@"
elif [ -d "$MR_REPO"/.hg ]; then
hg diff "$@"
cvs diff "$@"
elif [ -d "$MR_REPO"/.hg ]; then
hg diff "$@"
+ elif [ -d "$MR_REPO"/_darcs ]; then
+ darcs diff "$@"
else
error "unknown repo type"
fi
else
error "unknown repo type"
fi
cvs log "$@"
elif [ -d "$MR_REPO"/.hg ]; then
hg log "$@"
cvs log "$@"
elif [ -d "$MR_REPO"/.hg ]; then
hg log "$@"
+ elif [ -d "$MR_REPO"/_darcs ]; then
+ darcs changes "$@"
else
error "unknown repo type"
fi
else
error "unknown repo type"
fi
echo "Registering mercurial repo url: $url in $MR_CONFIG"
mr -c "$MR_CONFIG" config "$(pwd)" \
checkout="hg clone $url $basedir"
echo "Registering mercurial repo url: $url in $MR_CONFIG"
mr -c "$MR_CONFIG" config "$(pwd)" \
checkout="hg clone $url $basedir"
+ elif [ -d _darcs ]; then
+ url=$(cat _darcs/prefs/defaultrepo)
+ echo "Registering darcs repository $url in $MR_CONFIG"
+ mr -c "$MR_CONFIG" config "$(pwd)" \
+ checkout="darcs get $url $basedir"
else
error "unable to register this repo type"
fi
else
error "unable to register this repo type"
fi