From 042c71119f9a63b74cacc217923fc6e23be31063 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 19 Oct 2007 16:01:11 -0400 Subject: [PATCH] * 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. --- TODO | 13 ------------- debian/changelog | 9 +++++++++ mr | 41 +++-------------------------------------- mrconfig | 7 +++++++ 4 files changed, 19 insertions(+), 51 deletions(-) diff --git a/TODO b/TODO index 401f9bf..9eb4e90 100644 --- a/TODO +++ b/TODO @@ -1,18 +1,5 @@ * 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!) diff --git a/debian/changelog b/debian/changelog index 5abb0f7..b4ebe50 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +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 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. diff --git a/mr b/mr index 80ccc78..a5a9131 100755 --- a/mr +++ b/mr @@ -188,9 +188,9 @@ that contains the mrconfig file, but you can also choose to use absolute 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 @@ -227,14 +227,6 @@ If the "chain" parameter is set and its command returns true, then B 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 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 @@ -433,33 +425,6 @@ sub action { #{{{ 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; diff --git a/mrconfig b/mrconfig index 59ab018..ca34568 100644 --- a/mrconfig +++ b/mrconfig @@ -86,3 +86,10 @@ update = svn update && svnfix [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" -- 2.39.5