From: Joey Hess Date: Thu, 3 Nov 2011 17:54:31 +0000 (-0400) Subject: Add support for skip = lazy, a mode where mr only operates on repositories that are... X-Git-Url: https://git.madduck.net/code/myrepos.git/commitdiff_plain/20f5a82ced16c52a87aa4df2edadf405b1ee0bb1 Add support for skip = lazy, a mode where mr only operates on repositories that are checked out. --- diff --git a/debian/changelog b/debian/changelog index 83f629f..d50d15e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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. + * Add support for skip = lazy, a mode where mr only operates on repositories + that are checked out. -- Joey Hess Thu, 27 Oct 2011 12:18:43 -0400 diff --git a/mr b/mr index 97720d4..d3f8efb 100755 --- 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. +The "MR_ACTION" environment variable is set to the command being run +(update, checkout, etc). + 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 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 -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 = lazy =item order @@ -579,6 +584,7 @@ sub action { 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); @@ -1703,6 +1709,13 @@ lib = 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