Apply (and adapt) the patch from issue 364, which should fix the issue.
This commit is contained in:
parent
5bbff9f5a6
commit
2aab4eea3b
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
## Bugfixes
|
## Bugfixes
|
||||||
|
|
||||||
|
- The SVN interface acts more robust if an underlying repository has been restructured (issue 364)
|
||||||
- monotone zip archive entries now all carry the revision date as mtime (issue 645)
|
- monotone zip archive entries now all carry the revision date as mtime (issue 645)
|
||||||
- Timeline only displays filter options for items a user has actually access to (issue 655)
|
- Timeline only displays filter options for items a user has actually access to (issue 655)
|
||||||
- The log, tags and branches parsers for Mercurial are more robust now (issue 663)
|
- The log, tags and branches parsers for Mercurial are more robust now (issue 663)
|
||||||
|
@ -163,11 +163,11 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
return IDF_Scm::REVISION_VALID;
|
return IDF_Scm::REVISION_VALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --no-auth-cache --username=%s --password=%s %s@%s',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --no-auth-cache --username=%s --password=%s --revision=%s %s',
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo),
|
escapeshellarg($rev),
|
||||||
escapeshellarg($rev));
|
escapeshellarg($this->repo));
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
self::exec('IDF_Scm_Svn::validateRevision', $cmd, $out, $ret);
|
self::exec('IDF_Scm_Svn::validateRevision', $cmd, $out, $ret);
|
||||||
|
|
||||||
@ -176,7 +176,6 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
return IDF_Scm::REVISION_INVALID;
|
return IDF_Scm::REVISION_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test a given object hash.
|
* Test a given object hash.
|
||||||
*
|
*
|
||||||
@ -191,11 +190,11 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Else, test the path on revision
|
// Else, test the path on revision
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --no-auth-cache --xml --username=%s --password=%s %s@%s',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --no-auth-cache --xml --username=%s --password=%s --revision=%s %s',
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo.'/'.self::smartEncode($path)),
|
escapeshellarg($rev),
|
||||||
escapeshellarg($rev));
|
escapeshellarg($this->repo.'/'.self::smartEncode($path)));
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
$xmlInfo = self::shell_exec('IDF_Scm_Svn::testHash', $cmd);
|
$xmlInfo = self::shell_exec('IDF_Scm_Svn::testHash', $cmd);
|
||||||
|
|
||||||
@ -218,11 +217,11 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
|
|
||||||
public function getTree($commit, $folder='/', $branch=null)
|
public function getTree($commit, $folder='/', $branch=null)
|
||||||
{
|
{
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' ls --no-auth-cache --xml --username=%s --password=%s %s@%s',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' ls --no-auth-cache --xml --username=%s --password=%s --revision=%s %s',
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo.'/'.self::smartEncode($folder)),
|
escapeshellarg($commit),
|
||||||
escapeshellarg($commit));
|
escapeshellarg($this->repo.'/'.self::smartEncode($folder)));
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
$xml = simplexml_load_string(self::shell_exec('IDF_Scm_Svn::getTree', $cmd));
|
$xml = simplexml_load_string(self::shell_exec('IDF_Scm_Svn::getTree', $cmd));
|
||||||
$res = array();
|
$res = array();
|
||||||
@ -248,7 +247,6 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the commit message of a revision revision.
|
* Get the commit message of a revision revision.
|
||||||
*
|
*
|
||||||
@ -260,11 +258,11 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
if (isset($this->cache['commitmess'][$rev])) {
|
if (isset($this->cache['commitmess'][$rev])) {
|
||||||
return $this->cache['commitmess'][$rev];
|
return $this->cache['commitmess'][$rev];
|
||||||
}
|
}
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' log --no-auth-cache --xml --limit 1 --username=%s --password=%s %s@%s',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' log --no-auth-cache --xml --limit 1 --username=%s --password=%s --revision=%s %s',
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo),
|
escapeshellarg($rev),
|
||||||
escapeshellarg($rev));
|
escapeshellarg($this->repo));
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
try {
|
try {
|
||||||
$xml = simplexml_load_string(self::shell_exec('IDF_Scm_Svn::getCommitMessage', $cmd));
|
$xml = simplexml_load_string(self::shell_exec('IDF_Scm_Svn::getCommitMessage', $cmd));
|
||||||
@ -281,11 +279,11 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
if ($rev == null) {
|
if ($rev == null) {
|
||||||
$rev = 'HEAD';
|
$rev = 'HEAD';
|
||||||
}
|
}
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --no-auth-cache --xml --username=%s --password=%s %s@%s',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --no-auth-cache --xml --username=%s --password=%s --revision=%s %s',
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo.'/'.self::smartEncode($filename)),
|
escapeshellarg($rev),
|
||||||
escapeshellarg($rev));
|
escapeshellarg($this->repo.'/'.self::smartEncode($filename)));
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
$xml = simplexml_load_string(self::shell_exec('IDF_Scm_Svn::getPathInfo', $cmd));
|
$xml = simplexml_load_string(self::shell_exec('IDF_Scm_Svn::getPathInfo', $cmd));
|
||||||
if (!isset($xml->entry)) {
|
if (!isset($xml->entry)) {
|
||||||
@ -308,11 +306,11 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
|
|
||||||
public function getFile($def, $cmd_only=false)
|
public function getFile($def, $cmd_only=false)
|
||||||
{
|
{
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' cat --no-auth-cache --username=%s --password=%s %s@%s',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' cat --no-auth-cache --username=%s --password=%s --revision=%s %s',
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo.'/'.self::smartEncode($def->fullpath)),
|
escapeshellarg($def->rev),
|
||||||
escapeshellarg($def->rev));
|
escapeshellarg($this->repo.'/'.self::smartEncode($def->fullpath)));
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
return ($cmd_only) ?
|
return ($cmd_only) ?
|
||||||
$cmd : self::shell_exec('IDF_Scm_Svn::getFile', $cmd);
|
$cmd : self::shell_exec('IDF_Scm_Svn::getFile', $cmd);
|
||||||
@ -329,7 +327,7 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
return $this->cache['branches'];
|
return $this->cache['branches'];
|
||||||
}
|
}
|
||||||
$res = array();
|
$res = array();
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' ls --no-auth-cache --username=%s --password=%s %s@HEAD',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' ls --no-auth-cache --username=%s --password=%s --revision=HEAD %s',
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo.'/branches'));
|
escapeshellarg($this->repo.'/branches'));
|
||||||
@ -344,7 +342,7 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ksort($res);
|
ksort($res);
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --no-auth-cache --username=%s --password=%s %s@HEAD',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --no-auth-cache --username=%s --password=%s --revision=HEAD %s',
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo.'/trunk'));
|
escapeshellarg($this->repo.'/trunk'));
|
||||||
@ -368,7 +366,7 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
return $this->cache['tags'];
|
return $this->cache['tags'];
|
||||||
}
|
}
|
||||||
$res = array();
|
$res = array();
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' ls --no-auth-cache --username=%s --password=%s %s@HEAD',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' ls --no-auth-cache --username=%s --password=%s --revision=HEAD %s',
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo.'/tags'));
|
escapeshellarg($this->repo.'/tags'));
|
||||||
@ -412,7 +410,6 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get commit details.
|
* Get commit details.
|
||||||
*
|
*
|
||||||
@ -426,11 +423,11 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$res = array();
|
$res = array();
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' log --no-auth-cache --xml --limit 1 -v --username=%s --password=%s %s@%s',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' log --no-auth-cache --xml --limit 1 -v --username=%s --password=%s --revision=%s %s',
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo),
|
escapeshellarg($commit),
|
||||||
escapeshellarg($commit));
|
escapeshellarg($this->repo));
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
$xmlRes = self::shell_exec('IDF_Scm_Svn::getCommit', $cmd);
|
$xmlRes = self::shell_exec('IDF_Scm_Svn::getCommit', $cmd);
|
||||||
$xml = simplexml_load_string($xmlRes);
|
$xml = simplexml_load_string($xmlRes);
|
||||||
@ -498,12 +495,12 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
$branch = 'HEAD';
|
$branch = 'HEAD';
|
||||||
}
|
}
|
||||||
$res = array();
|
$res = array();
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' log --no-auth-cache --xml -v --limit %s --username=%s --password=%s %s@%s',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' log --no-auth-cache --xml -v --limit %s --username=%s --password=%s --revision=%s %s',
|
||||||
escapeshellarg($n),
|
escapeshellarg($n),
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo),
|
escapeshellarg($branch),
|
||||||
escapeshellarg($branch));
|
escapeshellarg($this->repo));
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
$xmlRes = self::shell_exec('IDF_Scm_Svn::getChangeLog', $cmd);
|
$xmlRes = self::shell_exec('IDF_Scm_Svn::getChangeLog', $cmd);
|
||||||
$xml = simplexml_load_string($xmlRes);
|
$xml = simplexml_load_string($xmlRes);
|
||||||
@ -520,7 +517,6 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get additionnals properties on path and revision
|
* Get additionnals properties on path and revision
|
||||||
*
|
*
|
||||||
@ -531,11 +527,11 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
public function getProperties($rev, $path='')
|
public function getProperties($rev, $path='')
|
||||||
{
|
{
|
||||||
$res = array();
|
$res = array();
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' proplist --no-auth-cache --xml --username=%s --password=%s %s@%s',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' proplist --no-auth-cache --xml --username=%s --password=%s --revision=%s %s',
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo.'/'.self::smartEncode($path)),
|
escapeshellarg($rev),
|
||||||
escapeshellarg($rev));
|
escapeshellarg($this->repo.'/'.self::smartEncode($path)));
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
$xmlProps = self::shell_exec('IDF_Scm_Svn::getProperties', $cmd);
|
$xmlProps = self::shell_exec('IDF_Scm_Svn::getProperties', $cmd);
|
||||||
$props = simplexml_load_string($xmlProps);
|
$props = simplexml_load_string($xmlProps);
|
||||||
@ -554,7 +550,6 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a specific additionnal property on path and revision
|
* Get a specific additionnal property on path and revision
|
||||||
*
|
*
|
||||||
@ -566,12 +561,12 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
private function getProperty($property, $rev, $path='')
|
private function getProperty($property, $rev, $path='')
|
||||||
{
|
{
|
||||||
$res = array();
|
$res = array();
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' propget --no-auth-cache --xml %s --username=%s --password=%s %s@%s',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' propget --no-auth-cache --xml %s --username=%s --password=%s --revision=%s %s',
|
||||||
escapeshellarg($property),
|
escapeshellarg($property),
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo.'/'.self::smartEncode($path)),
|
escapeshellarg($rev),
|
||||||
escapeshellarg($rev));
|
escapeshellarg($this->repo.'/'.self::smartEncode($path)));
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
$xmlProp = self::shell_exec('IDF_Scm_Svn::getProperty', $cmd);
|
$xmlProp = self::shell_exec('IDF_Scm_Svn::getProperty', $cmd);
|
||||||
$prop = simplexml_load_string($xmlProp);
|
$prop = simplexml_load_string($xmlProp);
|
||||||
@ -579,7 +574,6 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
return (string) $prop->target->property;
|
return (string) $prop->target->property;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the number of the last commit in the repository.
|
* Get the number of the last commit in the repository.
|
||||||
*
|
*
|
||||||
@ -590,11 +584,11 @@ class IDF_Scm_Svn extends IDF_Scm
|
|||||||
public function getLastCommit($rev='HEAD')
|
public function getLastCommit($rev='HEAD')
|
||||||
{
|
{
|
||||||
$xmlInfo = '';
|
$xmlInfo = '';
|
||||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --no-auth-cache --xml --username=%s --password=%s %s@%s',
|
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --no-auth-cache --xml --username=%s --password=%s --revision=%s %s',
|
||||||
escapeshellarg($this->username),
|
escapeshellarg($this->username),
|
||||||
escapeshellarg($this->password),
|
escapeshellarg($this->password),
|
||||||
escapeshellarg($this->repo),
|
escapeshellarg($rev),
|
||||||
escapeshellarg($rev));
|
escapeshellarg($this->repo));
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||||
$xmlInfo = self::shell_exec('IDF_Scm_Svn::getLastCommit', $cmd);
|
$xmlInfo = self::shell_exec('IDF_Scm_Svn::getLastCommit', $cmd);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user