Added the support of the tags for Mercurial and Subversion.
This commit is contained in:
@@ -279,12 +279,42 @@ class IDF_Scm_Mercurial extends IDF_Scm
|
||||
return $res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the tags.
|
||||
*
|
||||
* @return array Tags.
|
||||
*/
|
||||
public function getTags()
|
||||
{
|
||||
if (isset($this->cache['tags'])) {
|
||||
return $this->cache['tags'];
|
||||
}
|
||||
$out = array();
|
||||
$cmd = sprintf(Pluf::f('hg_path', 'hg').' tags -R %s',
|
||||
escapeshellarg($this->repo));
|
||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||
exec($cmd, $out);
|
||||
$res = array();
|
||||
foreach ($out as $b) {
|
||||
preg_match('/(\S+).*\S+:(\S+)/', $b, $match);
|
||||
$res[$match[1]] = '';
|
||||
}
|
||||
$this->cache['tags'] = $res;
|
||||
return $res;
|
||||
}
|
||||
|
||||
public function inBranches($commit, $path)
|
||||
{
|
||||
return (in_array($commit, array_keys($this->getBranches())))
|
||||
? array($commit) : array();
|
||||
}
|
||||
|
||||
public function inTags($commit, $path)
|
||||
{
|
||||
return (in_array($commit, array_keys($this->getTags())))
|
||||
? array($commit) : array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get commit details.
|
||||
*
|
||||
|
@@ -287,7 +287,7 @@ class IDF_Scm_Svn extends IDF_Scm
|
||||
}
|
||||
|
||||
/**
|
||||
* Subversion branches are repository based.
|
||||
* Subversion branches are folder based.
|
||||
*
|
||||
* One need to list the folder to know them.
|
||||
*/
|
||||
@@ -325,6 +325,36 @@ class IDF_Scm_Svn extends IDF_Scm
|
||||
return $res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Subversion tags are folder based.
|
||||
*
|
||||
* One need to list the folder to know them.
|
||||
*/
|
||||
public function getTags()
|
||||
{
|
||||
if (isset($this->cache['tags'])) {
|
||||
return $this->cache['tags'];
|
||||
}
|
||||
$res = array();
|
||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' ls --username=%s --password=%s %s@HEAD',
|
||||
escapeshellarg($this->username),
|
||||
escapeshellarg($this->password),
|
||||
escapeshellarg($this->repo.'/tags'));
|
||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||
exec($cmd, $out, $ret);
|
||||
if ($ret == 0) {
|
||||
foreach ($out as $entry) {
|
||||
if (substr(trim($entry), -1) == '/') {
|
||||
$tag = substr(trim($entry), 0, -1);
|
||||
$res[$tag] = 'tags/'.$tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
ksort($res);
|
||||
$this->cache['tags'] = $res;
|
||||
return $res;
|
||||
}
|
||||
|
||||
public function getMainBranch()
|
||||
{
|
||||
return 'HEAD';
|
||||
@@ -340,6 +370,16 @@ class IDF_Scm_Svn extends IDF_Scm
|
||||
return array();
|
||||
}
|
||||
|
||||
public function inTags($commit, $path)
|
||||
{
|
||||
foreach ($this->getTags() as $tag => $tpath) {
|
||||
if ($tpath and 0 === strpos($path, $tpath)) {
|
||||
return array($tag);
|
||||
}
|
||||
}
|
||||
return array();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get commit details.
|
||||
|
Reference in New Issue
Block a user