<?php
require_once("phing/Task.php");
class RevisionTask extends Task
{
private $hgpath = null;
private $workingcopy = null;
private $propertyname = null;
public function init()
{
}
public function setHgPath($str)
{
$this->hgpath = $str;
}
public function setWorkingCopy($str)
{
$this->workingcopy = $str;
}
public function setPropertyName($value)
{
$this->propertyname = $value;
}
public function main()
{
if ($this->getProject()->getUserProperty($this->propertyname))
return;
$rev = '???';
try
{
$output = array();
$this->workingcopy = str_replace(" ", "\ ", $this->workingcopy);
$this->workingcopy = realpath($this->workingcopy);
exec("\"$this->hgpath\" tip", $output);
foreach ($output as $index => $line)
if (preg_match("/^changeset:\s*(\\d+):/", $line, &$matches))
{
$rev = $matches[1];
break;
}
}
catch (Exception $e)
{
}
$this->getProject()->setUserProperty($this->propertyname, $rev);
}
}