Added the ability to configure the paths to the SCM executables.
This commit is contained in:
parent
64dc8ec3b8
commit
42c6f53fbc
@ -192,7 +192,7 @@ class IDF_Plugin_SyncGit_Serve
|
||||
{
|
||||
mkdir($fullpath, 0750, true);
|
||||
exec(sprintf(Pluf::f('idf_exec_cmd_prefix', '').
|
||||
'git --git-dir=%s init', escapeshellarg($fullpath)),
|
||||
Pluf::f('git_path', 'git').' --git-dir=%s init', escapeshellarg($fullpath)),
|
||||
$out, $res);
|
||||
if ($res != 0) {
|
||||
throw new Exception(sprintf('Init repository error, exit status %d.', $res));
|
||||
|
@ -77,7 +77,7 @@ class IDF_Plugin_SyncMercurial
|
||||
}
|
||||
$return = 0;
|
||||
$output = array();
|
||||
$cmd = sprintf('hg init %s',
|
||||
$cmd = sprintf(Pluf::f('hg_path', 'hg').' init %s',
|
||||
escapeshellarg($mercurial_path.'/'.$shortname));
|
||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||
$ll = exec($cmd, $output, $return);
|
||||
|
@ -77,7 +77,7 @@ class IDF_Plugin_SyncSvn
|
||||
}
|
||||
$return = 0;
|
||||
$output = array();
|
||||
$cmd = sprintf('svnadmin create %s',
|
||||
$cmd = sprintf(Pluf::f('svnadmin_path', 'svnadmin').' create %s',
|
||||
escapeshellarg($svn_path.'/'.$shortname));
|
||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '').$cmd;
|
||||
$ll = exec($cmd, $output, $return);
|
||||
|
@ -98,7 +98,7 @@ class IDF_Scm_Git
|
||||
*/
|
||||
public function testHash($hash, $dummy=null)
|
||||
{
|
||||
$cmd = sprintf('GIT_DIR=%s git cat-file -t %s',
|
||||
$cmd = sprintf('GIT_DIR=%s '.Pluf::f('git_path', 'git').' cat-file -t %s',
|
||||
escapeshellarg($this->repo),
|
||||
escapeshellarg($hash));
|
||||
$ret = 0; $out = array();
|
||||
@ -143,7 +143,7 @@ class IDF_Scm_Git
|
||||
// get the raw log corresponding to this commit to find the
|
||||
// origin of each file.
|
||||
$rawlog = array();
|
||||
$cmd = sprintf('GIT_DIR=%s git log --raw --abbrev=40 --pretty=oneline -5000 %s',
|
||||
$cmd = sprintf('GIT_DIR=%s '.Pluf::f('git_path', 'git').' log --raw --abbrev=40 --pretty=oneline -5000 %s',
|
||||
escapeshellarg($this->repo), escapeshellarg($commit));
|
||||
IDF_Scm::exec($cmd, $rawlog);
|
||||
// We reverse the log to be able to use a fixed efficient
|
||||
@ -182,7 +182,7 @@ class IDF_Scm_Git
|
||||
if ('tree' != $this->testHash($tree)) {
|
||||
throw new Exception(sprintf(__('Not a valid tree: %s.'), $tree));
|
||||
}
|
||||
$cmd_tmpl = 'GIT_DIR=%s git ls-tree%s -t -l %s %s';
|
||||
$cmd_tmpl = 'GIT_DIR=%s '.Pluf::f('git_path', 'git').' ls-tree%s -t -l %s %s';
|
||||
$cmd = sprintf($cmd_tmpl,
|
||||
escapeshellarg($this->repo),
|
||||
($recurse) ? ' -r' : '',
|
||||
@ -209,7 +209,7 @@ class IDF_Scm_Git
|
||||
*/
|
||||
public function getFileInfo($totest, $commit='HEAD')
|
||||
{
|
||||
$cmd_tmpl = 'GIT_DIR=%s git ls-tree -r -t -l %s';
|
||||
$cmd_tmpl = 'GIT_DIR=%s '.Pluf::f('git_path', 'git').' ls-tree -r -t -l %s';
|
||||
$cmd = sprintf($cmd_tmpl,
|
||||
escapeshellarg($this->repo),
|
||||
escapeshellarg($commit));
|
||||
@ -236,7 +236,7 @@ class IDF_Scm_Git
|
||||
public function getBlob($request_file_info, $dummy=null)
|
||||
{
|
||||
return shell_exec(sprintf(Pluf::f('idf_exec_cmd_prefix', '').
|
||||
'GIT_DIR=%s git cat-file blob %s',
|
||||
'GIT_DIR=%s '.Pluf::f('git_path', 'git').' cat-file blob %s',
|
||||
escapeshellarg($this->repo),
|
||||
escapeshellarg($request_file_info->hash)));
|
||||
}
|
||||
@ -249,7 +249,7 @@ class IDF_Scm_Git
|
||||
public function getBranches()
|
||||
{
|
||||
$out = array();
|
||||
IDF_Scm::exec(sprintf('GIT_DIR=%s git branch',
|
||||
IDF_Scm::exec(sprintf('GIT_DIR=%s '.Pluf::f('git_path', 'git').' branch',
|
||||
escapeshellarg($this->repo)), $out);
|
||||
$res = array();
|
||||
foreach ($out as $b) {
|
||||
@ -268,12 +268,12 @@ class IDF_Scm_Git
|
||||
public function getCommit($commit='HEAD', $getdiff=false)
|
||||
{
|
||||
if ($getdiff) {
|
||||
$cmd = sprintf('GIT_DIR=%s git show --date=iso --pretty=format:%s %s',
|
||||
$cmd = sprintf('GIT_DIR=%s '.Pluf::f('git_path', 'git').' show --date=iso --pretty=format:%s %s',
|
||||
escapeshellarg($this->repo),
|
||||
"'".$this->mediumtree_fmt."'",
|
||||
escapeshellarg($commit));
|
||||
} else {
|
||||
$cmd = sprintf('GIT_DIR=%s git log -1 --date=iso --pretty=format:%s %s',
|
||||
$cmd = sprintf('GIT_DIR=%s '.Pluf::f('git_path', 'git').' log -1 --date=iso --pretty=format:%s %s',
|
||||
escapeshellarg($this->repo),
|
||||
"'".$this->mediumtree_fmt."'",
|
||||
escapeshellarg($commit));
|
||||
@ -306,7 +306,7 @@ class IDF_Scm_Git
|
||||
*/
|
||||
public function isCommitLarge($commit='HEAD')
|
||||
{
|
||||
$cmd = sprintf('GIT_DIR=%s git log --numstat -1 --pretty=format:%s %s',
|
||||
$cmd = sprintf('GIT_DIR=%s '.Pluf::f('git_path', 'git').' log --numstat -1 --pretty=format:%s %s',
|
||||
escapeshellarg($this->repo),
|
||||
"'commit %H%n'",
|
||||
escapeshellarg($commit));
|
||||
@ -339,7 +339,7 @@ class IDF_Scm_Git
|
||||
{
|
||||
if ($n === null) $n = '';
|
||||
else $n = ' -'.$n;
|
||||
$cmd = sprintf('GIT_DIR=%s git log%s --date=iso --pretty=format:\'%s\' %s',
|
||||
$cmd = sprintf('GIT_DIR=%s '.Pluf::f('git_path', 'git').' log%s --date=iso --pretty=format:\'%s\' %s',
|
||||
escapeshellarg($this->repo), $n, $this->mediumtree_fmt,
|
||||
escapeshellarg($commit));
|
||||
$out = array();
|
||||
@ -412,7 +412,7 @@ class IDF_Scm_Git
|
||||
public function getArchiveCommand($commit, $prefix='git-repo-dump/')
|
||||
{
|
||||
return sprintf(Pluf::f('idf_exec_cmd_prefix', '').
|
||||
'GIT_DIR=%s git archive --format=zip --prefix=%s %s',
|
||||
'GIT_DIR=%s '.Pluf::f('git_path', 'git').' archive --format=zip --prefix=%s %s',
|
||||
escapeshellarg($this->repo),
|
||||
escapeshellarg($prefix),
|
||||
escapeshellarg($commit));
|
||||
|
@ -85,7 +85,7 @@ class IDF_Scm_Mercurial
|
||||
*/
|
||||
public function testHash($hash, $dummy=null)
|
||||
{
|
||||
$cmd = sprintf('hg log -R %s -r %s',
|
||||
$cmd = sprintf(Pluf::f('hg_path', 'hg').' log -R %s -r %s',
|
||||
escapeshellarg($this->repo),
|
||||
escapeshellarg($hash));
|
||||
$ret = 0;
|
||||
@ -139,7 +139,7 @@ class IDF_Scm_Mercurial
|
||||
if ('commit' != $this->testHash($tree)) {
|
||||
throw new Exception(sprintf(__('Not a valid tree: %s.'), $tree));
|
||||
}
|
||||
$cmd_tmpl = 'hg manifest -R %s --debug -r %s';
|
||||
$cmd_tmpl = Pluf::f('hg_path', 'hg').' manifest -R %s --debug -r %s';
|
||||
$cmd = sprintf($cmd_tmpl, escapeshellarg($this->repo), $tree, ($recurse) ? '' : '');
|
||||
$out = array();
|
||||
$res = array();
|
||||
@ -195,7 +195,7 @@ class IDF_Scm_Mercurial
|
||||
*/
|
||||
public function getFileInfo($totest, $commit='tip')
|
||||
{
|
||||
$cmd_tmpl = 'hg manifest -R %s --debug -r %s';
|
||||
$cmd_tmpl = Pluf::f('hg_path', 'hg').' manifest -R %s --debug -r %s';
|
||||
$cmd = sprintf($cmd_tmpl, escapeshellarg($this->repo), $commit);
|
||||
$out = array();
|
||||
$res = array();
|
||||
@ -248,7 +248,7 @@ class IDF_Scm_Mercurial
|
||||
*/
|
||||
public function getBlob($request_file_info, $dummy=null)
|
||||
{
|
||||
return IDF_Scm::shell_exec(sprintf('hg cat -R %s -r %s %s',
|
||||
return IDF_Scm::shell_exec(sprintf(Pluf::f('hg_path', 'hg').' cat -R %s -r %s %s',
|
||||
escapeshellarg($this->repo),
|
||||
$dummy,
|
||||
escapeshellarg($this->repo . '/' . $request_file_info->file)));
|
||||
@ -262,7 +262,7 @@ class IDF_Scm_Mercurial
|
||||
public function getBranches()
|
||||
{
|
||||
$out = array();
|
||||
IDF_Scm::exec(sprintf('hg branches -R %s',
|
||||
IDF_Scm::exec(sprintf(Pluf::f('hg_path', 'hg').' branches -R %s',
|
||||
escapeshellarg($this->repo)), $out);
|
||||
$res = array();
|
||||
foreach ($out as $b) {
|
||||
@ -282,7 +282,7 @@ class IDF_Scm_Mercurial
|
||||
public function getCommit($commit='tip', $getdiff=false)
|
||||
{
|
||||
$tmpl = ($getdiff) ?
|
||||
'hg log -p -r %s -R %s' : 'hg log -r %s -R %s';
|
||||
Pluf::f('hg_path', 'hg').' log -p -r %s -R %s' : Pluf::f('hg_path', 'hg').' log -r %s -R %s';
|
||||
$cmd = sprintf($tmpl,
|
||||
escapeshellarg($commit), escapeshellarg($this->repo));
|
||||
$out = array();
|
||||
@ -325,7 +325,7 @@ class IDF_Scm_Mercurial
|
||||
*/
|
||||
public function getChangeLog($commit='tip', $n=10)
|
||||
{
|
||||
$cmd = sprintf('hg log -R %s -l%s ', escapeshellarg($this->repo), $n, $commit);
|
||||
$cmd = sprintf(Pluf::f('hg_path', 'hg').' log -R %s -l%s ', escapeshellarg($this->repo), $n, $commit);
|
||||
$out = array();
|
||||
IDF_Scm::exec($cmd, $out);
|
||||
return self::parseLog($out, 6);
|
||||
@ -399,7 +399,7 @@ class IDF_Scm_Mercurial
|
||||
public function getArchiveCommand($commit, $prefix='')
|
||||
{
|
||||
return sprintf(Pluf::f('idf_exec_cmd_prefix', '').
|
||||
'hg archive --type=zip -R %s -r %s -',
|
||||
Pluf::f('hg_path', 'hg').' archive --type=zip -R %s -r %s -',
|
||||
escapeshellarg($this->repo),
|
||||
escapeshellarg($commit));
|
||||
}
|
||||
|
@ -108,7 +108,7 @@ class IDF_Scm_Svn
|
||||
}
|
||||
|
||||
// Else, test the path on revision
|
||||
$cmd = sprintf('svn info --xml --username=%s --password=%s %s@%s',
|
||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --xml --username=%s --password=%s %s@%s',
|
||||
escapeshellarg($this->username),
|
||||
escapeshellarg($this->password),
|
||||
escapeshellarg($this->repo.'/'.$path),
|
||||
@ -146,7 +146,7 @@ class IDF_Scm_Svn
|
||||
*/
|
||||
public function filesAtCommit($rev='HEAD', $folder='')
|
||||
{
|
||||
$cmd = sprintf('svn ls --xml --username=%s --password=%s %s@%s',
|
||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' ls --xml --username=%s --password=%s %s@%s',
|
||||
escapeshellarg($this->username),
|
||||
escapeshellarg($this->password),
|
||||
escapeshellarg($this->repo.'/'.$folder),
|
||||
@ -190,7 +190,7 @@ class IDF_Scm_Svn
|
||||
*/
|
||||
private function getCommitMessage($file, $rev='HEAD')
|
||||
{
|
||||
$cmd = sprintf('svn log --xml --limit 1 --username=%s --password=%s %s@%s',
|
||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' log --xml --limit 1 --username=%s --password=%s %s@%s',
|
||||
escapeshellarg($this->username),
|
||||
escapeshellarg($this->password),
|
||||
escapeshellarg($file),
|
||||
@ -210,7 +210,7 @@ class IDF_Scm_Svn
|
||||
*/
|
||||
public function getFileInfo($totest, $rev='HEAD')
|
||||
{
|
||||
$cmd = sprintf('svn info --xml --username=%s --password=%s %s@%s',
|
||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --xml --username=%s --password=%s %s@%s',
|
||||
escapeshellarg($this->username),
|
||||
escapeshellarg($this->password),
|
||||
escapeshellarg($this->repo.'/'.$totest),
|
||||
@ -242,7 +242,7 @@ class IDF_Scm_Svn
|
||||
*/
|
||||
public function getBlob($request_file_info, $rev)
|
||||
{
|
||||
$cmd = sprintf('svn cat --username=%s --password=%s %s@%s',
|
||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' cat --username=%s --password=%s %s@%s',
|
||||
escapeshellarg($this->username),
|
||||
escapeshellarg($this->password),
|
||||
escapeshellarg($this->repo.'/'.$request_file_info->fullpath),
|
||||
@ -273,7 +273,7 @@ class IDF_Scm_Svn
|
||||
public function getCommit($rev='HEAD', $getdiff=false)
|
||||
{
|
||||
$res = array();
|
||||
$cmd = sprintf('svn log --xml -v --username=%s --password=%s %s@%s',
|
||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' log --xml -v --username=%s --password=%s %s@%s',
|
||||
escapeshellarg($this->username),
|
||||
escapeshellarg($this->password),
|
||||
escapeshellarg($this->repo),
|
||||
@ -303,7 +303,7 @@ class IDF_Scm_Svn
|
||||
// We have a locally hosted repository, we can query it with
|
||||
// svnlook
|
||||
$repo = substr($this->repo, 7);
|
||||
$cmd = sprintf('svnlook changed -r %s %s',
|
||||
$cmd = sprintf(Pluf::f('svnlook_path', 'svnlook').' changed -r %s %s',
|
||||
escapeshellarg($commit),
|
||||
escapeshellarg($repo));
|
||||
$out = IDF_Scm::shell_exec($cmd);
|
||||
@ -314,7 +314,7 @@ class IDF_Scm_Svn
|
||||
private function getDiff($rev='HEAD')
|
||||
{
|
||||
$res = array();
|
||||
$cmd = sprintf('svn diff -c %s --username=%s --password=%s %s',
|
||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' diff -c %s --username=%s --password=%s %s',
|
||||
escapeshellarg($rev),
|
||||
escapeshellarg($this->username),
|
||||
escapeshellarg($this->password),
|
||||
@ -334,7 +334,7 @@ class IDF_Scm_Svn
|
||||
public function getChangeLog($rev='HEAD', $n=10)
|
||||
{
|
||||
$res = array();
|
||||
$cmd = sprintf('svn log --xml -v --limit %s --username=%s --password=%s %s@%s',
|
||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' log --xml -v --limit %s --username=%s --password=%s %s@%s',
|
||||
escapeshellarg($n),
|
||||
escapeshellarg($this->username),
|
||||
escapeshellarg($this->password),
|
||||
@ -383,7 +383,7 @@ class IDF_Scm_Svn
|
||||
public function getProperties($rev, $path='')
|
||||
{
|
||||
$res = array();
|
||||
$cmd = sprintf('svn proplist --xml --username=%s --password=%s %s@%s',
|
||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' proplist --xml --username=%s --password=%s %s@%s',
|
||||
escapeshellarg($this->username),
|
||||
escapeshellarg($this->password),
|
||||
escapeshellarg($this->repo.'/'.$path),
|
||||
@ -417,7 +417,7 @@ class IDF_Scm_Svn
|
||||
private function getProperty($property, $rev, $path='')
|
||||
{
|
||||
$res = array();
|
||||
$cmd = sprintf('svn propget --xml %s --username=%s --password=%s %s@%s',
|
||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' propget --xml %s --username=%s --password=%s %s@%s',
|
||||
escapeshellarg($property),
|
||||
escapeshellarg($this->username),
|
||||
escapeshellarg($this->password),
|
||||
@ -440,7 +440,7 @@ class IDF_Scm_Svn
|
||||
public function getLastCommit($rev='HEAD')
|
||||
{
|
||||
$xmlInfo = '';
|
||||
$cmd = sprintf('svn info --xml --username=%s --password=%s %s@%s',
|
||||
$cmd = sprintf(Pluf::f('svn_path', 'svn').' info --xml --username=%s --password=%s %s@%s',
|
||||
escapeshellarg($this->username),
|
||||
escapeshellarg($this->password),
|
||||
escapeshellarg($this->repo),
|
||||
|
@ -215,4 +215,16 @@ $cfg['allowed_scm'] = array('git' => 'IDF_Scm_Git',
|
||||
# variables not being set correctly. Note the trailing space.
|
||||
# $cfg['idf_exec_cmd_prefix'] = '/usr/bin/env -i ';
|
||||
|
||||
# Path to the SCM binaries. These binaries are not necessarily in
|
||||
# the path of your webserver or fastcgi process. In that case you
|
||||
# may need to set the path manually here. This is the case with OSX.
|
||||
# To know which path you need to provide, just run:
|
||||
# $ which git
|
||||
# from the command line. This will give you the path to git.
|
||||
# $cfg['svn_path'] = 'svn';
|
||||
# $cfg['svnlook_path'] = 'svnlook';
|
||||
# $cfg['svnadmin_path'] = 'svnadmin';
|
||||
# $cfg['hg_path'] = 'hg';
|
||||
# $cfg['git_path'] = 'git';
|
||||
|
||||
return $cfg;
|
||||
|
Loading…
Reference in New Issue
Block a user