X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/2467756e9e048a4579ee65c9980672316e12ee24..9af068ed8ce256319036f510dfe4616fc5dab749:/mr?ds=sidebyside diff --git a/mr b/mr index 97720d4..4253be2 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 @@ -354,8 +357,21 @@ 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. + [mystuff] + checkout = ... skip = test `whoami` != joey + + [linux] + checkout = ... skip = [ "$1" = update ] && ! hours_since "$1" 12 + +Another way to use skip is for a lazy checkout. This makes mr skip +operating on a repo unless it already exists. To enable the +repo, you have to explicitly check it out (using "mr -d foo checkout"). + + [foo] + checkout = ... + skip = lazy =item order @@ -381,6 +397,14 @@ part of the including file. Unlike all other parameters, this parameter does not need to be placed within a section. +B ships several libraries that can be included to add support for +additional version control type things (unison, git-svn, vcsh, git-fake-bare, +git-subtree). To include them all, you could use: + + include = cat /usr/share/mr/* + +See the individual files for details. + =item deleted If the "deleted" parameter is set and its command returns true, then @@ -579,6 +603,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 +1728,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