* more revision control systems
-* support for tracking repo renames
-
- It should be possible to tell mr that there used to be a repo at
- src/foo/bar, and it's been moved to src/bar. mr would then detect if the
- move needs to be done, and handle it. This is mostly useful when mrconfig
- files are shared accross several systems.
-
- [src/bar]
- renamedfrom = src/foo/bar
-
- (How to support multple renames of a single repo? List multiple
- renamedfrom dirs?)
-
* a way to detect repos in a tree that are not registered, and warn
about or even auto-register them. (svn externals make this quite
difficult!)
+mr (0.5) UNRELEASED; urgency=low
+
+ * Removed special case repository deletion handling code. The same
+ thing can be accomplished in a mrconfig by skipping a repo unless
+ it exists, and printing a reminder on update. See the mrconfig file
+ for an example.
+
+ -- Joey Hess <joeyh@debian.org> Fri, 19 Oct 2007 15:53:15 -0400
+
mr (0.4) unstable; urgency=low
* Fix mr register of a subdir to also work with -c.
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
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
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;
[mail]
checkout = git clone ssh://git.kitenet.net/srv/git/kitenet.net/joey/private/mail
skip = ! private
+
+# Example of how to remember to delete a repo, when one mrconfig file is
+# used on multiple systems. If you're feeling brave, use rm -rf $MR_REPO
+# instead. This approach can also be used for renames.
+[foo]
+update = error "$MR_REPO is no longer used and should be deleted"
+skip = ! test -d "$MR_REPO"