svnpath = $viewsvn->shell->cmd($svnpath); $access = $viewsvn->shell->exec($this->svnpath . ' --version'); if (!$access) { $viewsvn->trigger->error('svn binary could not be found'); } if (!preg_match('#^svn, version (.*?)\)$#i', trim($access[0]))) { $viewsvn->trigger->error('svn binary does not pass test'); } } /** * Executes the SVN binary * * @access private * * @param string Command * * @return array Output */ function svn($command) { global $viewsvn; return $viewsvn->shell->exec($this->svnpath . ' ' . $command . ' 2>&1'); } /** * SVN Wrapper: standard command system * * @access private * * @param string SVN command * @param string Repository * @param string Path * @param integer Revision * * @return array Lines of output */ function std($command, $repos, $path, $revision) { global $viewsvn; $revision = $this->rev($revision); $repospath = $viewsvn->repos->fetch_path($repos); return $this->svn($command . ' -r' . $revision . ' ' . $repospath . $path); } /** * SVN Wrapper: blame * * @access protected * * @param string Repository * @param string Path * @param integer Revision * * @return array Lines of blame output */ function blame($repos, $path, $revision) { return $this->std('blame', $repos, $path, $revision); } /** * SVN Wrapper: cat * * @access protected * * @param string Repository * @param string Path * @param integer Revision * * @return array Lines of cat output */ function cat($repos, $path, $revision) { return $this->std('cat', $repos, $path, $revision); } /** * SVN Wrapper: ls (list) * * @access protected * * @param string Repository * @param string Path * @param integer Revision * * @return array Lines of list output */ function ls($repos, $path, $revision) { return $this->std('list', $repos, $path, $revision); } /** * Generates a clean revision number * * @access public * * @param integer Revision number * * @return mixed Cleaned revision or HEAD */ function rev($revision) { if (($revision = intval($revision)) < 1) { $revision = 'HEAD'; } return $revision; } } /*=====================================================================*\ || ################################################################### || # $HeadURL$ || # $Id$ || ################################################################### \*=====================================================================*/ ?>