The branch, PHP_POST_RECEIVE on karma.git has been updated
via b841aacab5e1e9af103b1d38e11822debda5ea22 (commit)
from 89a2d90e9e5d2e8a661b91c1fdb3f32cf2d90cdd (commit)
http://git.php.net/?p=karma.git;a=log;h=b841aacab5e1e9af103b1d38e11822debda5ea22;hp=89a2d90e9e5d2e8a661b91c1fdb3f32cf2d90cdd
Summary of changes:
lib/Git/PostReceiveHook.php | 52 ++++++++++++++++++++++++++++++++++++------
1 files changed, 44 insertions(+), 8 deletions(-)
-- Log ----------------------------------------
commit b841aacab5e1e9af103b1d38e11822debda5ea22
Author: Alexander Moskaliov <[email protected]>
Date: Tue Mar 6 12:16:03 2012 +0400
commit mail
diff --git a/lib/Git/PostReceiveHook.php b/lib/Git/PostReceiveHook.php
index 0530ac4..195c8c2 100644
--- a/lib/Git/PostReceiveHook.php
+++ b/lib/Git/PostReceiveHook.php
@@ -36,7 +36,8 @@ class PostReceiveHook extends ReceiveHook
{
$args = func_get_args();
array_shift($args);
- $output = shell_exec(vsprintf($cmd, $args));
+ $cmd = vsprintf($cmd, $args);
+ $output = shell_exec($cmd);
return $output;
}
@@ -53,13 +54,18 @@ class PostReceiveHook extends ReceiveHook
}
}
- // TODO: mail per commit
- // send mail only about new commits
- // But for new branches we must check if this branch was
+ // TODO: For new branches we must check if this branch was
// cloned from other branch in this push - it's especial case
// TODO: check old post-receive for other especial cases
- }
+ foreach ($this->revisions as $revision => $branches) {
+ // check if it commit was already in other branches
+ if (!$this->isRevExistsInBranches($revision,
array_diff($this->allBranches, $branches))) {
+ $this->sendCommitMail($revision);
+ }
+ }
+
+ }
/*
* Note:
@@ -122,6 +128,8 @@ class PostReceiveHook extends ReceiveHook
$revisions = $this->getRevisions($branch['new']. ' --not ' .
implode(' ', $this->allBranches));
}
+ $this->cacheRevisions($branch['refname'], $revisions);
+
$message .= "--------LOG--------\n";
foreach ($revisions as $revision) {
$diff = $this->execute(
@@ -136,6 +144,17 @@ class PostReceiveHook extends ReceiveHook
$this->mail($this->emailprefix . '[push] ' . $title , $message);
}
+
+ private function cacheRevisions($branchName, array $revisions)
+ {
+ //TODO: add mail order from older commit to newer
+ foreach ($revisions as $revision)
+ {
+ $this->revisions[$revision][] = $branchName;
+ }
+ }
+
+
private function sendTagMail(array $tag)
{
@@ -162,9 +181,6 @@ class PostReceiveHook extends ReceiveHook
$message .= "Old tag sha: \n" . $tag['old'];
}
-
- // TODO: write info about tag and target
-
$this->mail($this->emailprefix . '[push] ' . $title , $message);
}
@@ -205,6 +221,26 @@ class PostReceiveHook extends ReceiveHook
}
+ private function sendCommitMail($revision)
+ {
+ $title = "Commit " . $revision . " was added";
+ $message = $title . "\n\n";
+
+
+ $info = $this->execute('git diff-tree --stat --pretty=fuller -c %s',
$revision);
+
+ $message .= $info ."\n\n";
+
+ $message .= "--------DIFF--------\n";
+
+ $diff = $this->execute('git diff-tree -c -p %s', $revision);
+
+ $message .= $diff ."\n\n";
+
+ $this->mail($this->emailprefix . '[commit] ' . $title , $message);
+ }
+
+
private function mail($subject, $message) {
$headers = array(
'From: ' . $this->pushAuthor . '@php.net',
Thank you for your contribution.
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php