]>
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> [options] register [repository]
B<mr> [options] register [repository]
-B<mr> [options] config section [parameter=[value] ...]
+B<mr> [options] config section ["parameter=[value]" ...]
B<mr> [options] action [params ...]
B<mr> [options] action [params ...]
+To see the built-in library of shell functions contained in mr:
+
+ mr config DEFAULT lib
+
The ~/.mrconfig file is used by default. To use a different config file,
use the -c option.
The ~/.mrconfig file is used by default. To use a different config file,
use the -c option.
paths.
Within a section, each parameter defines a shell command to run to handle a
paths.
Within a section, each parameter defines a shell command to run to handle a
-given action. mr contains default handlers for the "update", "status", and
-"commit" actions, so normally you only need to specify what to do for
-"checkout".
+given action. mr contains default handlers for "update", "status",
+"commit", and other standard actions. Normally you only need to specify what
+to do for "checkout".
Note that these shell commands are run in a "set -e" shell
environment, where any additional parameters you pass are available in
Note that these shell commands are run in a "set -e" shell
environment, where any additional parameters you pass are available in
will try to load a .mrconfig file from the root of the repository. (You
should avoid chaining from repositories with untrusted committers.)
will try to load a .mrconfig file from the root of the repository. (You
should avoid chaining from repositories with untrusted committers.)
-=item deleted
-
-If the "deleted" parameter is set and its command returns true, then
-B<mr> will treat the repository as deleted. It won't ever actually delete
-the repository, but it will warn if it sees the repository's directory.
-This is useful when one mrconfig file is shared amoung multiple machines,
-to keep track of and remember to delete old repositories.
-
=item lib
The "lib" parameter can specify some shell code that will be run before each
=item lib
The "lib" parameter can specify some shell code that will be run before each
exists $config{$topdir}{$section}{$_}) {
print $config{$topdir}{$section}{$_}."\n";
$found=1;
exists $config{$topdir}{$section}{$_}) {
print $config{$topdir}{$section}{$_}."\n";
$found=1;
+ last if $section eq 'DEFAULT';
my $lib=exists $config{$topdir}{$subdir}{lib} ?
$config{$topdir}{$subdir}{lib}."\n" : "";
my $lib=exists $config{$topdir}{$subdir}{lib} ?
$config{$topdir}{$subdir}{lib}."\n" : "";
- if (exists $config{$topdir}{$subdir}{deleted}) {
- my $test="set -e;".$lib.$config{$topdir}{$subdir}{deleted};
- print "mr $action: running deleted test >>$test<<\n" if $verbose;
- my $ret=system($test);
- if ($ret != 0) {
- if (($? & 127) == 2) {
- print STDERR "mr $action: interrupted\n";
- exit 2;
- }
- elsif ($? & 127) {
- print STDERR "mr $action: deleted test received signal ".($? & 127)."\n";
- }
- }
- if ($ret >> 8 == 0) {
- if (-d $dir) {
- print STDERR "mr error: $dir should be deleted yet still exists\n\n";
- push @failed, $dir;
- return;
- }
- else {
- print "mr $action: $dir skipped (as deleted) per config file\n" if $verbose;
- push @skipped, $dir;
- return;
- }
- }
- }
-
if ($action eq 'checkout') {
if (-d $dir) {
print "mr $action: $dir already exists, skipping checkout\n" if $verbose;
if ($action eq 'checkout') {
if (-d $dir) {
print "mr $action: $dir already exists, skipping checkout\n" if $verbose;
if [ -d "$MR_REPO"/.svn ]; then
svn update "$@"
elif [ -d "$MR_REPO"/.git ]; then
if [ -d "$MR_REPO"/.svn ]; then
svn update "$@"
elif [ -d "$MR_REPO"/.git ]; then
- git pull origin master "$@"
+ if [ -z "$@" ]; then
+ git pull -t origin master
+ else
+ git pull "$@"
+ fi
elif [ -d "$MR_REPO"/.bzr ]; then
bzr merge "$@"
elif [ -d "$MR_REPO"/CVS ]; then
elif [ -d "$MR_REPO"/.bzr ]; then
bzr merge "$@"
elif [ -d "$MR_REPO"/CVS ]; then