gwynne          Fri, 17 Jul 2009 12:39:24 +0000

URL: http://svn.php.net/viewvc?view=revision&revision=284257

Changed paths:
        U   SVNROOT/commit-email.php

Log:
significantly improve email subject handling. I hope. Also make the message ID
more useful.

Modified: SVNROOT/commit-email.php
===================================================================
--- SVNROOT/commit-email.php    2009-07-17 12:31:58 UTC (rev 284256)
+++ SVNROOT/commit-email.php    2009-07-17 12:39:24 UTC (rev 284257)
@@ -103,6 +103,19 @@
 $always_addresses = array('gwy...@php.net');

 // 
-----------------------------------------------------------------------------------------------------------------------------
+function common_prefix($str1, $str2)
+{
+    $result = "";
+    $i = 0;
+    $max = min(strlen($str1), strlen($str2));
+    while ($i < $max && $str1[$i] === $str2[$i]) {
+        $result .= $str1[$i];
+        ++$i;
+    }
+    return $result;
+}
+
+// 
-----------------------------------------------------------------------------------------------------------------------------
 // Get info from commit
 $commit_info = run_svnlook('info');
 $commit_user = trim($commit_info[0]);
@@ -144,11 +157,13 @@
             break;
         }
     }
-    if (substr_count($changed_path, '/') < substr_count($parent_path, '/')) {
-        $parent_path = $changed_path;
+    if ($changed_path === '/') {
+        $parent_path = '';
+    } else {
+        $parent_path = common_prefix($parent_path, $changed_path);
     }
 }
-if (count($emails_to) == 0) {
+if (count($emails_to) === 0) {
     $emails_to = $fallback_addresses;
 }
 $emails_to = array_merge($emails_to, $always_addresses);
@@ -165,12 +180,12 @@
 // 
-----------------------------------------------------------------------------------------------------------------------------
 // Build e-mail
 $boundary = sha1("{$commit_user}{$commit_date}");
-$messageid = "{$boundary}" . mt_rand();
-$subject = "svn: {$parent_path}";
+$messageid = "{$commit_user}-{$commit_date}-{$REV}-" . mt_rand();
+$subject = "svn: " . ($parent_path === '' ? '/' : $parent_path);
 foreach ($changed_paths as $changed_path) {
     $changed_path = trim(strstr($changed_path, ' '));
     if (substr($changed_path, -1) !== '/') {
-        $subject .= ' ' . substr($changed_path, $parent_path === '/' ? 0 : 
strlen($parent_path));
+        $subject .= ' ' . substr($changed_path, strlen($parent_path));
     }
 }
 $subject = substr($subject, 0, 950); // Max SMTP line length = 998. Some slop 
in this value.

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

Reply via email to