]> 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:

Added support for arbitrary pre and post hooks for all defined mr commands. For examp...
authorJoey Hess <joey@kitenet.net>
Sun, 29 Aug 2010 18:53:57 +0000 (14:53 -0400)
committerJoey Hess <joey@kitenet.net>
Sun, 29 Aug 2010 18:53:57 +0000 (14:53 -0400)
debian/changelog
mr

index 52249eda00f5d1ad15be43511bf7fec8faea7433..d6dffc7ea76b652e63be7dcd1139cf7286cab716 100644 (file)
@@ -3,6 +3,9 @@ mr (0.50) UNRELEASED; urgency=low
   * Now supports the Fossil VCS. (Thanks, Jimmy Tang)
   * Added fixups hook, which can be used to run a command after
     a repository is checked out or updated. Closes: #590868
+  * Added support for arbitrary pre and post hooks for all defined mr
+    commands. For example, pre_commit is run before all commits; post_update
+    is run after all updates. Closes: #481341
 
  -- Joey Hess <joeyh@debian.org>  Sun, 15 Aug 2010 12:36:34 -0400
 
diff --git a/mr b/mr
index 03cfdf351755dbbc9125517827ad47f4b3742701..e73f3c841bed60b6af94eed6f642f4e67ee54a62 100755 (executable)
--- a/mr
+++ b/mr
@@ -377,6 +377,13 @@ is checked out, or updated. This provides an easy way to do things
 like permissions fixups, or other tweaks to the repository content,
 whenever the repository is changed.
 
+=item pre_ and post_
+
+If a "pre_action" parameter is set, its command is run before mr performs the
+specified action. Similarly, "post_action" parameters are run after mr
+successfully performs the specified action. For example, "pre_commit" is
+run before committing; "post_update" is run after updating.
+
 =back
 
 When looking for a command to run for a given action, mr first looks for
@@ -604,6 +611,10 @@ sub action {
                        $s=~s/^\Q$topdir$subdir\E\/?//;
                        print "mr $action: $topdir$subdir (in subdir $s)\n" unless $quiet;
                }
+
+               my $hookret=hook("pre_$action", $topdir, $subdir);
+               return $hookret if $hookret != OK;
+
                $command="set -e; ".$lib.
                        "my_action(){ $command\n }; my_action ".
                        join(" ", map { s/\//\/\//g; s/"/\"/g; '"'.$_.'"' } @ARGV);
@@ -641,11 +652,14 @@ sub action {
                                return FAILED;
                        }
 
+                       my $ret=hook("post_$action", $topdir, $subdir);
+                       return $ret if $ret != OK;
+                       
                        if (($is_checkout || $is_update)) {
                                my $ret=hook("fixups", $topdir, $subdir);
                                return $ret if $ret != OK;
                        }
-
+                       
                        return OK;
                }
        }