aboutsummaryrefslogtreecommitdiffstats
path: root/library/kzykhys/git/src/PHPGit/Command/ShortlogCommand.php
diff options
context:
space:
mode:
Diffstat (limited to 'library/kzykhys/git/src/PHPGit/Command/ShortlogCommand.php')
-rw-r--r--library/kzykhys/git/src/PHPGit/Command/ShortlogCommand.php134
1 files changed, 0 insertions, 134 deletions
diff --git a/library/kzykhys/git/src/PHPGit/Command/ShortlogCommand.php b/library/kzykhys/git/src/PHPGit/Command/ShortlogCommand.php
deleted file mode 100644
index 23c66e464..000000000
--- a/library/kzykhys/git/src/PHPGit/Command/ShortlogCommand.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-
-namespace PHPGit\Command;
-
-use PHPGit\Command;
-
-/**
- * Summarize 'git log' output - `git shortlog`
- *
- * @author Kazuyuki Hayashi <hayashi@valnur.net>
- */
-class ShortlogCommand extends Command
-{
-
- /**
- * Summarize 'git log' output
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $shortlog = $git->shortlog();
- * ```
- *
- * ##### Output Example
- *
- * ``` php
- * [
- * 'John Doe <john@example.com>' => [
- * 0 => ['commit' => '589de67', 'date' => new \DateTime('2014-02-10 12:56:15 +0300'), 'subject' => 'Update README'],
- * 1 => ['commit' => '589de67', 'date' => new \DateTime('2014-02-15 12:56:15 +0300'), 'subject' => 'Update README'],
- * ],
- * //...
- * ]
- * ```
- * @param string|array|\Traversable $commits [optional] Defaults to HEAD
- *
- * @return array
- */
- public function __invoke($commits = 'HEAD')
- {
- $builder = $this->git->getProcessBuilder()
- ->add('shortlog')
- ->add('--numbered')
- ->add('--format=')
- ->add('-w256,2,2')
- ->add('-e');
-
- if (!is_array($commits) && !($commits instanceof \Traversable)) {
- $commits = array($commits);
- }
-
- foreach ($commits as $commit) {
- $builder->add($commit);
- }
-
- $process = $builder->getProcess();
- $process->setCommandLine(str_replace('--format=', '--format=%h|%ci|%s', $process->getCommandLine()));
-
- $output = $this->git->run($process);
- $lines = $this->split($output);
- $result = array();
- $author = null;
-
- foreach ($lines as $line) {
- if (substr($line, 0, 1) != ' ') {
- if (preg_match('/([^<>]*? <[^<>]+>)/', $line, $matches)) {
- $author = $matches[1];
- $result[$author] = array();
- }
- continue;
- }
-
- list ($commit, $date, $subject) = explode('|', trim($line), 3);
- $result[$author][] = array(
- 'commit' => $commit,
- 'date' => new \DateTime($date),
- 'subject' => $subject
- );
- }
-
- return $result;
- }
-
- /**
- * Suppress commit description and provide a commit count summary only
- *
- * ``` php
- * $git = new PHPGit\Git();
- * $git->setRepository('/path/to/repo');
- * $shortlog = $git->shortlog->summary();
- * ```
- *
- * ##### Output Example
- *
- * ``` php
- * [
- * 'John Doe <john@example.com>' => 153,
- * //...
- * ]
- * ```
- *
- * @param string $commits [optional] Defaults to HEAD
- *
- * @return array
- */
- public function summary($commits = 'HEAD')
- {
- $builder = $this->git->getProcessBuilder()
- ->add('shortlog')
- ->add('--numbered')
- ->add('--summary')
- ->add('-e');
-
- if (!is_array($commits) && !($commits instanceof \Traversable)) {
- $commits = array($commits);
- }
-
- foreach ($commits as $commit) {
- $builder->add($commit);
- }
-
- $output = $this->git->run($builder->getProcess());
- $lines = $this->split($output);
- $result = array();
-
- foreach ($lines as $line) {
- list ($commits, $author) = explode("\t", trim($line), 2);
- $result[$author] = (int) $commits;
- }
-
- return $result;
- }
-
-} \ No newline at end of file