class File
{
/**
- * Full path to the file
+ * Path to the file, relative to repository work directory
*
* @var string
*/
*/
public $repo;
+ /**
+ * Commit revision this file is at
+ */
+ public $hash;
+
public function __construct($path, Repository $repo = null)
{
$this->path = $path;
*/
public function getFilename()
{
- return basename($this->path);
+ return $this->path;
}
/**
*
* @return string
*/
- public function getPath()
+ public function getFullPath()
{
- return $this->path;
+ return $this->repo->workDir . '/' . $this->path;
}
/**
public function getContent()
{
- return file_get_contents($this->path);
+ if ($this->repo->hash) {
+ //quick hack until https://pear.php.net/bugs/bug.php?id=19385 is fixed
+ $cmd = new GitCommandBinary($this->repo->getVc());
+ $cmd->setSubCommand('show');
+ return //$this->repo->getVc()->getCommand('show')
+ $cmd
+ ->addArgument($this->repo->hash . ':' . $this->path)
+ ->execute();
+ }
+
+ return file_get_contents($this->getFullPath());
}
public function getRenderedContent(Tool_Result $res = null)
public function getLink($type, $option = null)
{
if ($type == 'raw') {
- return '/' . $this->repo->id . '/raw/' . $this->getFilename();
+ if ($this->repo->hash === null) {
+ return '/' . $this->repo->id . '/raw/' . $this->getFilename();
+ } else {
+ return '/' . $this->repo->id . '/rev-raw/' . $this->repo->hash
+ . '/' . $this->getFilename();
+ }
} else if ($type == 'tool') {
return '/' . $this->repo->id . '/tool/' . $option . '/' . $this->getFilename();
}
*/
public function getToolInfos()
{
+ if ($this->repo->hash !== null) {
+ return array();
+ }
+
$tm = new Tool_Manager();
return $tm->getSuitable($this);
}