gpt4 book ai didi

php操作SVN版本服务器类代码

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章php操作SVN版本服务器类代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

SvnPeer.php  。

复制代码代码如下

<?php  /**  *  * This class for execute the external program of svn  *  * @auth Seven Yang <qineer@gmail.com>  *  */  class SvnPeer  {  /**  * List directory entries in the repository  *  * @param string a specific project repository path  * @return bool true, if validated successfully, otherwise false  */  static public function ls($repository)  {  $command = "svn ls " . $repository;  $output = SvnPeer::runCmd($command);  $output = implode("<br>", $output);  if (strpos($output, 'non-existent in that revision')) {  return false;  }  return "<br>" . $command . "<br>" . $output;  }  /**  * Duplicate something in working copy or repository, remembering history  *  * @param $src  * @param $dst  * @param $comment string specify log message  * @return bool true, if copy successfully, otherwise return the error message  *  * @todo comment need addslashes for svn commit  */  static public function copy($src, $dst, $comment)  {  $command = "svn cp $src $dst -m '$comment'";  $output = SvnPeer::runCmd($command);  $output = implode("<br>", $output);  if (strpos($output, 'Committed revision')) {  return true;  }  return "<br>" . $command . "<br>" . $output;  }  /**  * Remove files and directories from version control  *  * @param $url  * @return bool true, if delete successfully, otherwise return the error message  *  * @todo comment need addslashes for svn commit  */  static public function delete($url, $comment)  {  $command = "svn del $url -m '$comment'";  $output = SvnPeer::runCmd($command);  $output = implode('<br>', $output);  if (strpos($output, 'Committed revision')) {  return true;  }  return "<br>" . $command . "<br>" . $output;  }  /**  * Move and/or rename something in working copy or repository  *  * @param $src string trunk path  * @param $dst string new branch path  * @param $comment string specify log message  * @return bool true, if move successfully, otherwise return the error message  *  * @todo comment need addslashes for svn commit  */  static public function move($src, $dst, $comment)  {  $command = "svn mv $src $dst -m '$comment'";  $output = SvnPeer::runCmd($command);  $output = implode('<br>', $output);  if (strpos($output, 'Committed revision')) {  return true;  }  return "<br>" . $command . "<br>" . $output;  }  /**  * Create a new directory under version control  *  * @param $url string  * @param $comment string the svn message  * @return bool true, if create successfully, otherwise return the error message  *  * @todo comment need addslashes for svn commit  */  static public function mkdir($url, $comment)  {  $command = "svn mkdir $url -m '$comment'";  $output = SvnPeer::runCmd($command);  $output = implode('<br>', $output);  if (strpos($output, 'Committed revision')) {  return true;  }  return "<br>" . $command . "<br>" . $output;  }  static public function diff($pathA, $pathB)  {  $output = SvnPeer::runCmd("svn diff $pathA $pathB");  return implode('<br>', $output);  }  static public function checkout($url, $dir)  {  $command = "cd $dir && svn co $url";  $output = SvnPeer::runCmd($command);  $output = implode('<br>', $output);  if (strstr($output, 'Checked out revision')) {  return true;  }  return "<br>" . $command . "<br>" . $output;  }  static public function update($path)  {  $command = "cd $path && svn up";  $output = SvnPeer::runCmd($command);  $output = implode('<br>', $output);  preg_match_all("/[0-9]+/", $output, $ret);  if (!$ret[0][0]){  return "<br>" . $command . "<br>" . $output;  }  return $ret[0][0];  }  static public function merge($revision, $url, $dir)  {  $command = "cd $dir && svn merge -r1:$revision $url";  $output = implode('<br>', SvnPeer::runCmd($command));  if (strstr($output, 'Text conflicts')) {  return 'Command: ' . $command .'<br>'. $output;  }  return true;  }  static public function commit($dir, $comment)  {  $command = "cd $dir && svn commit -m'$comment'";  $output = implode('<br>', SvnPeer::runCmd($command));  if (strpos($output, 'Committed revision') || empty($output)) {  return true;  }  return $output;  }  static public function getStatus($dir)  {  $command = "cd $dir && svn st";  return SvnPeer::runCmd($command);  }  static public function hasConflict($dir)  {  $output = SvnPeer::getStatus($dir);  foreach ($output as $line){  if ('C' == substr(trim($line), 0, 1) || ('!' == substr(trim($line), 0, 1))){  return true;  }  }  return false;  }  /**  * Show the log messages for a set of path with XML  *  * @param path string  * @return log message string  */  static public function getLog($path)  {  $command = "svn log $path --xml";  $output = SvnPeer::runCmd($command);  return implode('', $output);  }  static public function getPathRevision($path)  {  $command = "svn info $path --xml";  $output = SvnPeer::runCmd($command);  $string = implode('', $output);  $xml = new SimpleXMLElement($string);  foreach ($xml->entry[0]->attributes() as $key=>$value){  if ('revision' == $key) {  return $value;  }  }  }  static public function getHeadRevision($path)  {  $command = "cd $path && svn up";  $output = SvnPeer::runCmd($command);  $output = implode('<br>', $output);  preg_match_all("/[0-9]+/", $output, $ret);  if (!$ret[0][0]){  return "<br>" . $command . "<br>" . $output;  }  return $ret[0][0];  }  /**  * Run a cmd and return result  *  * @param string command line  * @param boolen true need add the svn authentication  * @return array the contents of the output that svn execute  */  static protected function runCmd($command)  {  $authCommand = ' --username ' . SVN_USERNAME . ' --password ' . SVN_PASSWORD . ' --no-auth-cache --non-interactive --config-dir '.SVN_CONFIG_DIR.'.subversion';  exec($command . $authCommand . " 2>&1", $output);  return $output;  }  }  。

最后此篇关于php操作SVN版本服务器类代码的文章就讲到这里了,如果你想了解更多关于php操作SVN版本服务器类代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com