aboutsummaryrefslogtreecommitdiff
path: root/src/phorkie/Repository.php
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2012-04-17 19:15:54 +0200
committerChristian Weiske <cweiske@cweiske.de>2012-04-17 19:15:54 +0200
commit39bd200baed00b5b63cc62ce947ef708710ac81c (patch)
tree7bd8ca92f8a76f944614cb83246de9efd8a1d2fd /src/phorkie/Repository.php
parentc5544ea6607e49bd5f3cceecd59903687e8b1654 (diff)
downloadphorkie-39bd200baed00b5b63cc62ce947ef708710ac81c.tar.gz
phorkie-39bd200baed00b5b63cc62ce947ef708710ac81c.zip
revision display support
Diffstat (limited to 'src/phorkie/Repository.php')
-rw-r--r--src/phorkie/Repository.php33
1 files changed, 24 insertions, 9 deletions
diff --git a/src/phorkie/Repository.php b/src/phorkie/Repository.php
index aa1ea4c..6c71b47 100644
--- a/src/phorkie/Repository.php
+++ b/src/phorkie/Repository.php
@@ -49,6 +49,10 @@ class Repository
if (!is_numeric($_GET['id'])) {
throw new Exception_Input('Paste ID not numeric');
}
+ if (isset($_GET['rev'])) {
+ $this->hash = $_GET['rev'];
+ }
+
$this->id = (int)$_GET['id'];
$this->loadDirs();
$this->loadHash();
@@ -75,6 +79,7 @@ class Repository
public function loadHash()
{
+ return;
if ($this->hash !== null) {
return;
}
@@ -114,10 +119,20 @@ class Repository
*/
public function getFiles()
{
- $files = glob($this->workDir . '/*');
+ if ($this->hash === null) {
+ $hash = 'HEAD';
+ } else {
+ $hash = $this->hash;
+ }
+ $output = $this->getVc()->getCommand('ls-tree')
+ ->setOption('r')
+ ->setOption('name-only')
+ ->addArgument($hash)
+ ->execute();
+ $files = explode("\n", trim($output));
$arFiles = array();
- foreach ($files as $path) {
- $arFiles[] = new File($path, $this);
+ foreach ($files as $name) {
+ $arFiles[] = new File($name, $this);
}
return $arFiles;
}
@@ -131,11 +146,11 @@ class Repository
if ($name == '') {
throw new Exception_Input('Empty file name given');
}
- $path = $this->workDir . '/' . $base;
- if ($bHasToExist && !is_readable($path)) {
+ $fullpath = $this->workDir . '/' . $base;
+ if ($bHasToExist && !is_readable($fullpath)) {
throw new Exception_Input('File does not exist');
}
- return new File($path, $this);
+ return new File($base, $this);
}
public function hasFile($name)
@@ -177,12 +192,12 @@ class Repository
* Get a link to the repository
*
* @param string $type Link type. Supported are:
- * - "commit"
* - "edit"
* - "delete"
* - "delete-confirm"
* - "display"
* - "fork"
+ * - "revision"
* @param string $option
*
* @return string
@@ -199,8 +214,8 @@ class Repository
return '/' . $this->id . '/delete';
} else if ($type == 'delete-confirm') {
return '/' . $this->id . '/delete/confirm';
- } else if ($type == 'commit') {
- return '/' . $this->id . '/' . $option;
+ } else if ($type == 'revision') {
+ return '/' . $this->id . '/rev/' . $option;
}
throw new Exception('Unknown link type');
}