gwynne                                   Sun, 26 Jul 2009 04:00:55 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=286349

Log:
minor whitespace quirk in debug output fixed. More importantly, the creation of 
tags/ directories is now allowed subject to location-in-repo restrictions

Changed paths:
    U   SVNROOT/hook-common.inc.php
    U   SVNROOT/pre-commit

Modified: SVNROOT/hook-common.inc.php
===================================================================
--- SVNROOT/hook-common.inc.php 2009-07-26 03:46:22 UTC (rev 286348)
+++ SVNROOT/hook-common.inc.php 2009-07-26 04:00:55 UTC (rev 286349)
@@ -75,7 +75,7 @@
         }
         $final_paths[$actual_path] = $path_actions;
     }
-    debug(print_r($final_paths, 1));
+    debug(trim(print_r($final_paths, 1)));
     return $final_paths;
 }


Modified: SVNROOT/pre-commit
===================================================================
--- SVNROOT/pre-commit  2009-07-26 03:46:22 UTC (rev 286348)
+++ SVNROOT/pre-commit  2009-07-26 04:00:55 UTC (rev 286349)
@@ -35,19 +35,39 @@
         fail("Commits to archived modules are not allowed.\n");
     }

-    //  path contains "/tags/" AND
-    //  path was not added OR
-    //  path was not copied OR
-    //  path is not a directory OR
-    //  path's immediate ancestor is not tags/
-    if (strpos($changed_path, '/tags/') !== FALSE &&
-        (!in_array('added', $path_actions) ||
-        !in_array('copied', $path_actions) ||
-        substr($changed_path, -1) !== '/' ||
-        substr(dirname($changed_path), -5) !== '/tags'))
-    {
-        fail("Committing to a tag is not allowed.\n");
+    //  path contains "/tags/"
+    if (($tags_loc = strpos($changed_path, '/tags/')) !== FALSE) {
+        $allowed_tag = FALSE;
+
+        // path was added AND
+        // path was copied AND
+        // path is a directory AND
+        // path's immediate ancestor is tags/
+        if (in_array('added', $path_actions) &&
+            in_array('copied', $path_actions) &&
+            substr($changed_path, -1) === '/' &&
+            substr(dirname($changed_path), -5) === '/tags')
+        {
+            debug("Tag {$changed_path} passes checks for tag creation.");
+            $allowed_tag = TRUE;
+        }
+        // path was added AND
+        // path does not contain any other structure directories AND
+        // the first occurrence of /tags/ in path is at the end
+        else if (in_array('added', $path_actions) &&
+                 strpos($changed_path, "/branches/") === FALSE &&
+                 strpos($changed_path, "/trunk/") === FALSE &&
+                 $tags_loc === strlen($changed_path) - 6)
+        {
+            debug("Path {$changed_path} passes checks for tags directory 
creation.");
+            $allowed_tag = TRUE;
+        }
+
+        if (!$allowed_tag) {
+            fail("Committing to a tag is not allowed.\n");
+        }
     }
+
 }

 // 
-----------------------------------------------------------------------------------------------------------------------------

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to