X-Git-Url: https://git.cweiske.de/phorkie.git/blobdiff_plain/e5dd490175334f5a9a2dc93d8b500df480bb4f60..6bde4b82ec04ee5a1622220663bcacca2ec301d6:/src/phorkie/Repository.php diff --git a/src/phorkie/Repository.php b/src/phorkie/Repository.php index 448982b..0cc279b 100644 --- a/src/phorkie/Repository.php +++ b/src/phorkie/Repository.php @@ -32,6 +32,12 @@ class Repository */ public $hash; + /** + * Commit message of the last (or current) revision + * + * @var string + */ + public $message; /** @@ -56,6 +62,7 @@ class Repository $this->id = (int)$_GET['id']; $this->loadDirs(); $this->loadHash(); + $this->loadMessage(); } protected function loadDirs() @@ -97,6 +104,28 @@ class Repository $this->hash = $output; } + /** + * Populates $this->message + * + * @return void + */ + public function loadMessage() + { + $rev = (isset($this->hash)) ? $this->hash : 'HEAD'; + $output = $this->getVc()->getCommand('log') + ->setOption('oneline') + ->addArgument('-1') + ->addArgument($rev) + ->execute(); + $output = trim($output); + if (strpos($output, ' ') > 0) { + $output = substr($output, strpos($output, ' '), strlen($output)); + $this->message = trim($output); + } else { + $this->message = "This commit message intentionally left blank."; + } + } + public function loadById($id) { if (!is_numeric($id)) { @@ -209,14 +238,14 @@ class Repository /** * Get a link to the repository * - * @param string $type Link type. Supported are: - * - "edit" - * - "delete" - * - "delete-confirm" - * - "display" - * - "fork" - * - "revision" - * @param string $option + * @param string $type Link type. Supported are: + * - "edit" + * - "delete" + * - "delete-confirm" + * - "display" + * - "fork" + * - "revision" + * @param string $option Additional link option, e.g. revision number * * @return string */ @@ -228,6 +257,8 @@ class Repository return '/' . $this->id; } else if ($type == 'fork') { return '/' . $this->id . '/fork'; + } else if ($type == 'doap') { + return '/' . $this->id . '/doap'; } else if ($type == 'delete') { return '/' . $this->id . '/delete'; } else if ($type == 'delete-confirm') { @@ -279,6 +310,13 @@ class Repository $commit->committerName = $arOutput[$current + 2]; $commit->committerEmail = $arOutput[$current + 3]; + if (substr($arOutput[$current + 4], 0, 1) != ' ') { + //commit without changed lines + $arCommits[] = $commit; + $current += 4; + continue; + } + $arLineParts = explode(' ', trim($arOutput[$current + 4])); $commit->filesChanged = $arLineParts[0]; $commit->linesAdded = $arLineParts[3];