The branch PHP_POST_RECEIVE on karma.git has been updated
       via  cffd3b39b05fae71090586fcc9f717f857c20ae0 (commit)
      from  99a863d4846676c53e15031cdc217c264aa082f8 (commit)

http://git.php.net/?p=karma.git;a=log;h=cffd3b39b05fae71090586fcc9f717f857c20ae0;hp=99a863d4846676c53e15031cdc217c264aa082f8

Summary of changes:
 README.POST_RECEIVE => README.POST_RECEIVE_MAIL |    0
 hooks/post-receive.mail                         |   20 ++++++---
 lib/Git.php                                     |    3 +-
 lib/Git/PostReceiveHook.php                     |   51 ++++++++++++-----------
 lib/Git/PreReceiveHook.php                      |    2 +-
 lib/Git/ReceiveHook.php                         |    2 +-
 6 files changed, 44 insertions(+), 34 deletions(-)
 rename README.POST_RECEIVE => README.POST_RECEIVE_MAIL (100%)

-- Log ----------------------------------------
commit cffd3b39b05fae71090586fcc9f717f857c20ae0
Author: Alexander Moskaliov <ir...@php.net>
Date:   Wed Mar 14 21:46:03 2012 +0400

    many bugfixes

diff --git a/README.POST_RECEIVE b/README.POST_RECEIVE_MAIL
similarity index 100%
rename from README.POST_RECEIVE
rename to README.POST_RECEIVE_MAIL
diff --git a/hooks/post-receive.mail b/hooks/post-receive.mail
index af9bcd5..aacadef 100755
--- a/hooks/post-receive.mail
+++ b/hooks/post-receive.mail
@@ -8,8 +8,6 @@ namespace Karma;
 // TODO: documentation
 
 
-// /git/users.db
-
 error_reporting(E_ALL | E_STRICT);
 date_default_timezone_set('UTC');
 putenv("PATH=/opt/bin:/usr/local/bin:/usr/bin:/bin");
@@ -17,10 +15,14 @@ putenv("LC_ALL=en_US.UTF-8");
 mb_internal_encoding("UTF-8");
 
 const REPOSITORY_PATH = '/git/repositories';
+const LIB_PATH = '/git/checkout/karma/lib';
+const USERS_DB_FILE = '/git/users.db';
+
+set_include_path(
+    getenv('KARMA_LIB_PATH') ?: LIB_PATH .
+        PATH_SEPARATOR .
+        get_include_path());
 
-set_include_path('/git/checkout/karma/lib' .
-    PATH_SEPARATOR .
-    get_include_path());
 
 include 'Mail.php';
 include 'Git.php';
@@ -39,5 +41,11 @@ if (getenv('REMOTE_USER')) {
     $user = getenv('GL_USER');
 }
 
-$hook = new \Git\PostReceiveHook(getenv('GL_REPO_BASE_ABS') ?: 
REPOSITORY_PATH, $user, $recipients, $emailPrefix);
+$hook = new \Git\PostReceiveHook(
+    getenv('GL_REPO_BASE_ABS') ?: REPOSITORY_PATH,
+    $user,
+    getenv('USERS_DB_FILE') ?: USERS_DB_FILE,
+    $recipients,
+    $emailPrefix
+);
 $hook->process();
\ No newline at end of file
diff --git a/lib/Git.php b/lib/Git.php
index 87e5fa9..fc0f0c9 100644
--- a/lib/Git.php
+++ b/lib/Git.php
@@ -40,7 +40,6 @@ class Git
         array_shift($args);
         $cmd = vsprintf($cmd, $args);
         $output = shell_exec($cmd);
-        if ($output === NULL) throw new \Exception('Failed to call git');
-        return $output;
+        return (string)$output;
     }
 }
diff --git a/lib/Git/PostReceiveHook.php b/lib/Git/PostReceiveHook.php
index a9b0180..589e96a 100644
--- a/lib/Git/PostReceiveHook.php
+++ b/lib/Git/PostReceiveHook.php
@@ -3,12 +3,12 @@ namespace Git;
 
 class PostReceiveHook extends ReceiveHook
 {
-    const USERS_DB_FILE = '/git/users.db';
 
     private $pushAuthor = '';
     private $pushAuthorName = '';
     private $mailingList = '';
     private $emailPrefix = '';
+    private $usersFile = '';
 
     private $alreadyExistsBranches = [];
     private $updatedBranches = [];
@@ -20,13 +20,15 @@ class PostReceiveHook extends ReceiveHook
     /**
      * @param $basePath string
      * @param $pushAuthor string
+     * @param $usersFile string
      * @param $mailingList string
      * @param $emailPrefix string
      */
-    public function __construct($basePath, $pushAuthor, $mailingList, 
$emailPrefix)
+    public function __construct($basePath, $pushAuthor, $usersFile, 
$mailingList, $emailPrefix)
     {
         parent::__construct($basePath);
 
+        $this->usersFile = $usersFile;
         $this->pushAuthor = $pushAuthor;
         $this->pushAuthorName = $this->getUserName($pushAuthor);
         $this->mailingList = $mailingList;
@@ -37,7 +39,7 @@ class PostReceiveHook extends ReceiveHook
 
     public function getUserName($user)
     {
-        $usersDB = file(__DIR__ . '/users.db');
+        $usersDB = file($this->usersFile);
         foreach ($usersDB as $userline) {
             list ($username, $fullname, $email) = explode(":", 
trim($userline));
             if ($username === $user) {
@@ -79,7 +81,7 @@ class PostReceiveHook extends ReceiveHook
         }
 
         // sort revisions by commit time
-        usort($this->revisions, function($a, $b){
+        uksort($this->revisions, function($a, $b){
             if ($a['time'] == $b['time']) {
                 return 0;
             }
@@ -126,7 +128,7 @@ class PostReceiveHook extends ReceiveHook
     private function sendBranchMail($name, $changeType, $oldrev, $newrev)
     {
 
-        $status = [self::TYPE_UPDATED => 'Update', self::TYPE_CREATED => 
'Create', => self::TYPE_DELETED => 'Delete'];
+        $status = [self::TYPE_UPDATED => 'update', self::TYPE_CREATED => 
'create', self::TYPE_DELETED => 'delete'];
         $shortname = str_replace('refs/heads/', '', $name);
 
         // forced push
@@ -149,8 +151,8 @@ class PostReceiveHook extends ReceiveHook
                     $logString .= 'Commit: ' . $revision . "\n";
                     $logString .= 'Author: ' . $commitInfo['author'] . '(' . 
$commitInfo['author_email'] . ')         ' . $commitInfo['author_date'] . "\n";
                     $logString .= 'Committer: ' . $commitInfo['committer'] . 
'(' . $commitInfo['committer_email'] . ')      ' . 
$commitInfo['committer_date'] . "\n";
-                    $logString .= "Link: http://git.php.net/?p="; . 
$this->getRepositoryName() . ".git;a=commitdiff;h=" . $revision . "\n";
-                    $logString .= "Shortlog:\n" . $commitInfo['subject'] . 
"\n";
+                    $logString .= "Link: http://git.php.net/?p="; . 
$this->getRepositoryName() . ";a=commitdiff;h=" . $revision . "\n";
+                    $logString .= "Shortlog: " . $commitInfo['subject'] . "\n";
 
                 }
             }
@@ -166,7 +168,7 @@ class PostReceiveHook extends ReceiveHook
         $message .= 'Date: ' . date('r') . "\n";
 
         $message .= "\n";
-        $message .= "Link: http://git.php.net/?p="; . 
$this->getRepositoryName() . ".git;a=log;h=" . $newrev . ";hp=" . $oldrev . 
"\n";
+        $message .= "Link: http://git.php.net/?p="; . 
$this->getRepositoryName() . ";a=log;h=" . $newrev . ";hp=" . $oldrev . "\n";
         $message .= "\n";
 
         // forced push
@@ -178,7 +180,7 @@ class PostReceiveHook extends ReceiveHook
 
             if (strlen($logString) < 8192) {
                 // inline log
-                $message .= "Log:\n" . $logString . "\n";
+                $message .= "\nLog:\n" . $logString . "\n";
             } else {
                 // log attach
                 $logFile = 'log_' . $oldrev . '_' . $newrev . '.txt';
@@ -186,7 +188,7 @@ class PostReceiveHook extends ReceiveHook
                 if ((strlen($message) + $mail->getFileLength($logFile)) > 
262144) {
                     // changed paths attach exceeded max size
                     $mail->dropFile($logFile);
-                    $message .= 'Log: <changed paths exceeded maximum size>';
+                    $message .= "\nLog: <changed paths exceeded maximum size>";
                 }
             }
         }
@@ -248,10 +250,10 @@ class PostReceiveHook extends ReceiveHook
     private function sendTagMail($name, $changeType, $oldrev, $newrev)
     {
 
-        $status = [self::TYPE_UPDATED => 'Update', self::TYPE_CREATED => 
'Create', => self::TYPE_DELETED => 'Delete'];
+        $status = [self::TYPE_UPDATED => 'update', self::TYPE_CREATED => 
'create', self::TYPE_DELETED => 'delete'];
         $shortname = str_replace('refs/tags/', '', $name);
         $mail = new \Mail();
-        $mail->setSubject($this->emailPrefix . '[tag] ' . 
$this->getRepositoryName() . ': ' . $status[$changeType] . ' tag ' . $shortname;
+        $mail->setSubject($this->emailPrefix . '[tag] ' . 
$this->getRepositoryName() . ': ' . $status[$changeType] . ' tag ' . 
$shortname);
 
         $message = 'Tag ' . $shortname . ' in ' . $this->getRepositoryName() . 
' was ' . $status[$changeType] . 'd' .
             (($changeType != self::TYPE_CREATED) ? ' from ' . $oldrev : '' ) . 
"\n";
@@ -269,23 +271,24 @@ class PostReceiveHook extends ReceiveHook
             if ($info['annotated']) {
                 $message .= 'Tag: ' . $info['revision'] . "\n";
                 $message .= 'Tagger: ' . $info['tagger'] . '(' . 
$info['tagger_email'] . ')         ' . $info['tagger_date'] . "\n";
+                $message .= "Log:\n" . $info['log'] . "\n";
             }
 
             $message .= "\n";
-            $message .= "Link: http://git.php.net/?p="; . 
$this->getRepositoryName() . ".git;a=tag;h=" . $info['revision'] . "\n";
+            $message .= "Link: http://git.php.net/?p="; . 
$this->getRepositoryName() . ";a=tag;h=" . $info['revision'] . "\n";
             $message .= "\n";
 
             $message .= 'Target: ' . $info['target'] . "\n";
             $message .= 'Author: ' . $targetInfo['author'] . '(' . 
$targetInfo['author_email'] . ')         ' . $targetInfo['author_date'] . "\n";
             $message .= 'Committer: ' . $targetInfo['committer'] . '(' . 
$targetInfo['committer_email'] . ')      ' . $targetInfo['committer_date'] . 
"\n";
             if ($targetInfo['parents']) $message .= 'Parents: ' . 
$targetInfo['parents'] . "\n";
-            $message .= "Target link: http://git.php.net/?p="; . 
$this->getRepositoryName() . ".git;a=commitdiff;h=" . $info['target'] . "\n";
+            $message .= "Target link: http://git.php.net/?p="; . 
$this->getRepositoryName() . ";a=commitdiff;h=" . $info['target'] . "\n";
             $message .= "Target log:\n" . $targetInfo['log'] . "\n";
 
 
             if (strlen($pathsString) < 8192) {
                 // inline changed paths
-                $message .= "Changed paths:\n" . $pathsString . "\n";
+                $message .= "\nChanged paths:\n" . $pathsString . "\n";
             } else {
                 // changed paths attach
                 $pathsFile = 'paths_' . $info['target'] . '.txt';
@@ -293,7 +296,7 @@ class PostReceiveHook extends ReceiveHook
                 if ((strlen($message) + $mail->getFileLength($pathsFile)) > 
262144) {
                     // changed paths attach exceeded max size
                     $mail->dropFile($pathsFile);
-                    $message .= 'Changed paths: <changed paths exceeded 
maximum size>';
+                    $message .= "\nChanged paths: <changed paths exceeded 
maximum size>";
                 }
             }
         }
@@ -312,8 +315,8 @@ class PostReceiveHook extends ReceiveHook
      */
     private function getTagInfo($tag)
     {
-        $temp = \Git::gitExec("for-each-ref 
--format=\"%%(objecttype)\n%%(*objectname)\n%%(taggername)\n%%(taggeremail)\n%%(taggerdate)\n%%(*objectname)\n%%(contents)\"
 %s", escapeshellarg($tag));
-        $temp = explode("\n", $temp, 6); //6 elements separated by \n, last 
element - log message
+        $temp = \Git::gitExec("for-each-ref 
--format=\"%%(objecttype)\n%%(objectname)\n%%(taggername)\n%%(taggeremail)\n%%(taggerdate)\n%%(*objectname)\n%%(contents)\"
 %s", escapeshellarg($tag));
+        $temp = explode("\n", trim($temp), 7); //6 elements separated by \n, 
last element - log message
         if ($temp[0] == 'tag') {
             $info = [
                 'annotated'     => true,
@@ -384,7 +387,7 @@ class PostReceiveHook extends ReceiveHook
     {
         if (!isset($this->commitsData[$revision])) {
             $raw = \Git::gitExec('rev-list -n 1 
--format="%%P%%n%%an%%n%%ae%%n%%aD%%n%%cn%%n%%ce%%n%%cD%%n%%s%%n%%B" %s', 
escapeshellarg($revision));
-            $raw = explode("\n", $raw, 9); //9 elements separated by \n, last 
element - log message, first(skipped) element - "commit sha"
+            $raw = explode("\n", trim($raw), 10); //10 elements separated by 
\n, last element - log message, first(skipped) element - "commit sha"
             $this->commitsData[$revision] = [
                 'parents'           => $raw[1],  // %P
                 'author'            => $raw[2],  // %an
@@ -468,7 +471,7 @@ class PostReceiveHook extends ReceiveHook
         $message .= 'Committer: ' . $info['committer'] . '(' . 
$info['committer_email'] . ')      ' . $info['committer_date'] . "\n";
         if ($info['parents']) $message .= 'Parents: ' . $info['parents'] . 
"\n";
 
-        $message .= "\n" . "Link: http://git.php.net/?p="; . 
$this->getRepositoryName() . ".git;a=commitdiff;h=" . $revision . "\n";
+        $message .= "\n" . "Link: http://git.php.net/?p="; . 
$this->getRepositoryName() . ";a=commitdiff;h=" . $revision . "\n";
 
         $message .= "\nLog:\n" . $info['log'] . "\n";
 
@@ -479,10 +482,10 @@ class PostReceiveHook extends ReceiveHook
 
         if (strlen($pathsString) < 8192) {
             // inline changed paths
-            $message .= "Changed paths:\n" . $pathsString . "\n";
+            $message .= "\nChanged paths:\n" . $pathsString . "\n";
             if ((strlen($pathsString) + strlen($diff)) < 8192) {
                 // inline diff
-                $message .= "Diff:\n" . $diff . "\n";
+                $message .= "\nDiff:\n" . $diff . "\n";
             } else {
                 // diff attach
                 $diffFile = 'diff_' . $revision . '.txt';
@@ -490,7 +493,7 @@ class PostReceiveHook extends ReceiveHook
                 if ((strlen($message) + $mail->getFileLength($diffFile)) > 
262144) {
                     // diff attach exceeded max size
                     $mail->dropFile($diffFile);
-                    $message .= 'Diff: <Diff exceeded maximum size>';
+                    $message .= "\nDiff: <Diff exceeded maximum size>";
                 }
             }
         } else {
@@ -500,7 +503,7 @@ class PostReceiveHook extends ReceiveHook
             if ((strlen($message) + $mail->getFileLength($pathsFile)) > 
262144) {
                 // changed paths attach exceeded max size
                 $mail->dropFile($pathsFile);
-                $message .= 'Changed paths: <changed paths exceeded maximum 
size>';
+                $message .= "\nChanged paths: <changed paths exceeded maximum 
size>";
             } else {
                 // diff attach
                 $diffFile = 'diff_' . $revision . '.txt';
diff --git a/lib/Git/PreReceiveHook.php b/lib/Git/PreReceiveHook.php
index 1318890..eb0c609 100644
--- a/lib/Git/PreReceiveHook.php
+++ b/lib/Git/PreReceiveHook.php
@@ -19,7 +19,7 @@ class PreReceiveHook extends ReceiveHook
     */
     public function isKarmaIgnored()
     {
-        return 'true' === \Git::gitExec('%s config karma.ignored');
+        return 'true' === \Git::gitExec('config karma.ignored');
     }
 
     public function mapInput(callable $fn) {
diff --git a/lib/Git/ReceiveHook.php b/lib/Git/ReceiveHook.php
index ea4d6bd..7860043 100644
--- a/lib/Git/ReceiveHook.php
+++ b/lib/Git/ReceiveHook.php
@@ -77,7 +77,7 @@ abstract class ReceiveHook
      */
     protected function getAllBranches()
     {
-        $branches = explode("\n", \Git::gitExec('for-each-ref 
--format="%%(refname)" "refs/heads/*"'));
+        $branches = explode("\n", trim(\Git::gitExec('for-each-ref 
--format="%%(refname)" "refs/heads/*"')));
         if ($branches[0] == '') $branches = [];
         return $branches;
     }

Thank you for your contribution.

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

Reply via email to