]> git.madduck.net Git - code/myrepos.git/commitdiff

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:

Add support for skip = lazy, a mode where mr only operates on repositories that are...
authorJoey Hess <joey@kitenet.net>
Thu, 3 Nov 2011 17:54:31 +0000 (13:54 -0400)
committerJoey Hess <joey@kitenet.net>
Thu, 3 Nov 2011 17:54:31 +0000 (13:54 -0400)
debian/changelog
mr

index 83f629f3b97be4a3ac4a50f870b922630706d578..d50d15e52d71f3730de669a1230c309ed0e8ed09 100644 (file)
@@ -2,6 +2,8 @@ mr (1.06) UNRELEASED; urgency=low
 
   * Fix propigation of failure from pre and post hooks and from fixups.
   * Support chaining to absolute paths.
 
   * Fix propigation of failure from pre and post hooks and from fixups.
   * Support chaining to absolute paths.
+  * Add support for skip = lazy, a mode where mr only operates on repositories
+    that are checked out.
 
  -- Joey Hess <joeyh@debian.org>  Thu, 27 Oct 2011 12:18:43 -0400
 
 
  -- Joey Hess <joeyh@debian.org>  Thu, 27 Oct 2011 12:18:43 -0400
 
diff --git a/mr b/mr
index 97720d456feb136c2f6dc91eb4ef02a1a97d6775..d3f8efb0a750dba737ad9463fa9bf3d594309e72 100755 (executable)
--- a/mr
+++ b/mr
@@ -339,6 +339,9 @@ The "MR_CONFIG" environment variable is set to the .mrconfig file
 that defines the repo being acted on, or, if the repo is not yet in a config
 file, the .mrconfig file that should be modified to register the repo.
 
 that defines the repo being acted on, or, if the repo is not yet in a config
 file, the .mrconfig file that should be modified to register the repo.
 
+The "MR_ACTION" environment variable is set to the command being run
+(update, checkout, etc).
+
 A few parameters have special meanings:
 
 =over 4
 A few parameters have special meanings:
 
 =over 4
@@ -349,13 +352,15 @@ If the "skip" parameter is set and its command returns true, then B<mr>
 will skip acting on that repository. The command is passed the action
 name in $1.
 
 will skip acting on that repository. The command is passed the action
 name in $1.
 
-Here are two examples. The first skips the repo unless
+Here are three examples. The first skips the repo unless
 mr is run by joey. The second uses the hours_since function
 (included in mr's built-in library) to skip updating the repo unless it's
 mr is run by joey. The second uses the hours_since function
 (included in mr's built-in library) to skip updating the repo unless it's
-been at least 12 hours since the last update.
+been at least 12 hours since the last update. The third skips operating
+on the repo unless it already exists (use mr checkout to enable the repo).
 
   skip = test `whoami` != joey
   skip = [ "$1" = update ] && ! hours_since "$1" 12
 
   skip = test `whoami` != joey
   skip = [ "$1" = update ] && ! hours_since "$1" 12
+  skip = lazy
 
 =item order
 
 
 =item order
 
@@ -579,6 +584,7 @@ sub action {
        my $is_update=($action =~ /update/);
 
        $ENV{MR_REPO}=$dir;
        my $is_update=($action =~ /update/);
 
        $ENV{MR_REPO}=$dir;
+       $ENV{MR_ACTION}=$action;
        
        foreach my $testname ("skip", "deleted") {
                my $testcommand=findcommand($testname, $dir, $topdir, $subdir, $is_checkout);
        
        foreach my $testname ("skip", "deleted") {
                my $testcommand=findcommand($testname, $dir, $topdir, $subdir, $is_checkout);
@@ -1703,6 +1709,13 @@ lib =
        is_bzr_checkout() {
                LANG=C bzr info | egrep -q '^Checkout'
        }
        is_bzr_checkout() {
                LANG=C bzr info | egrep -q '^Checkout'
        }
+       lazy() {
+               if [ "$MR_ACTION" = checkout ] || [ -d "$MR_REPO" ]; then
+                       return 1
+               else
+                       return 0
+               fi
+       }
 
 svn_test = test -d "$MR_REPO"/.svn
 git_test = test -d "$MR_REPO"/.git
 
 svn_test = test -d "$MR_REPO"/.svn
 git_test = test -d "$MR_REPO"/.git