You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

73 lines
1.7 KiB

<?php
/**
* autodoc
*
* Permet l'extraction des informations SVN d'un répertoire
*/
namespace autodoc\Plugin\Core\Compiler\Pass\VcsInformations;
/**
* Extraction d'informations d'un dossier utilisant un Vcs
**/
class Svn extends VcsInformationsAbstract
{
/**
* Données XML de l'extraction
* @var SimpleXMLElement|null
**/
private $xml;
/**
* {@inheritDoc}
**/
public function extractWithDirectory($dir) {
$this->clear();
// obtenir les infos SVN
exec("cd $dir ; svn info --xml 2> /dev/null", $output);
// la sortie doit avoir plus de 3 lignes, sinon c'est une erreur !
if ($output and count($output) > 3) {
$svninfo = simplexml_load_string(implode("\n", $output));
$path = $svninfo->entry['path'];
$path = ($path == '.') ? '' : $path;
# svn://trac.rezo.net/spip/spip/
$this->setUrlPath( $svninfo->entry->url . '/' . $path );
# svn://trac.rezo.net/spip
$this->setUrlRoot( $svninfo->entry->repository->root );
# spip/
$this->setProjectPath( substr($this->getUrlPath(), strlen($this->getUrlRoot()) + 1) );
$this->setXML = $svninfo;
}
}
/**
* {@inheritDoc}
**/
public function clear() {
parent::clear();
$this->xml = null;
}
/**
* Retourne les informations XML spécifiques à SVN
*
* @return SimpleXMLElement
**/
public function getXml() {
return $this->xml;
}
/**
* Définit les informations XML spécifiques à SVN
*
* @param SimpleXMLElement $xml
**/
public function setXml(SimpleXMLElement $xml) {
$this->xml = $xml;
}
}