X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/d752aeb38d80a8342ba88c5fe5483be61b987182..cdb465e61f783be39b53f818636e907a47585096:/mr diff --git a/mr b/mr index 59d6a69..3dbd7e9 100755 --- a/mr +++ b/mr @@ -30,9 +30,9 @@ B [options] action [params ...] B 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 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 @@ -475,7 +475,6 @@ if ($jobs > 1) { else { foreach my $repo (@repos) { record($repo, action($action, @$repo)); - print "\n"; } } if (! @ok && ! @failed && ! @skipped) { @@ -564,7 +563,9 @@ sub action { #{{{ print "mr $action: $topdir$subdir\n"; } else { - print "mr $action: $topdir$subdir (in subdir $directory)\n"; + my $s=$directory; + $s=~s/^\Q$topdir$subdir\E\/?//; + print "mr $action: $topdir$subdir (in subdir $s)\n"; } my $command="set -e; ".$lib. "my_action(){ $config{$topdir}{$subdir}{$action}\n }; my_action ". @@ -653,7 +654,6 @@ sub mrs { #{{{ waitpid($active[$i][0], 0); print STDOUT $out[$i][0]; print STDERR $out[$i][1]; - print "\n"; record($active[$i][1], $? >> 8); splice(@fhs, $i, 1); splice(@active, $i, 1); @@ -674,9 +674,11 @@ sub record { #{{{ if ($ret == OK) { push @ok, $dir; + print "\n"; } elsif ($ret == FAILED) { push @failed, $dir; + print "\n"; } elsif ($ret == SKIPPED) { push @skipped, $dir; @@ -937,7 +939,7 @@ lib = 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 @@ -970,6 +972,8 @@ 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 @@ -984,6 +988,8 @@ 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 @@ -998,6 +1004,8 @@ commit = 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 @@ -1012,6 +1020,8 @@ 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 @@ -1026,6 +1036,8 @@ 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 @@ -1069,6 +1081,11 @@ register = 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