PHP封装的svn类使用内置svn函数实现根据svn版本号
网络编程 2021-07-05 08:24www.168986.cn编程入门
这篇文章主要介绍了PHP封装的svn类使用内置svn函数实现根据svn版本号导出相关文件,结合实例形式分析了php封装的svn操作类与根据版本导出相关版本文件操作技巧,需要的朋友可以参考下
本文实例讲述了PHP封装的svn类使用内置svn函数实现根据svn版本号导出相关文件。分享给大家供大家参考,具体如下
<?php $revision_array = array(3099, 3339, 2573,3351); / svn的版本号 / $svnPeer = new svnPeer(); $filelist = $svnPeer->_get_file_list($revision_array); if (!empty($filelist)) { $lbv_export = $svnPeer->_svn_export_list($filelist, 'trunk889'); if (true === $lbv_export) { echo '导出成功'; } else { echo '导出失败'; } } else { echo '获取文件列表失败'; } / php操作svn类,全部利用php内置的svn函数 @author wengxianhu @date 2013-08-05 / class svnPeer { / svn用户名 / public $svn_user = 'wengxianhu'; / svn密码 / public $svn_password = 'wxh025'; / 来源路径 / public $source_path = '/var//trunk/'; / 目标路径 / public $dest_path = '/var//'; / 构造函数 @author wengxianhu @date 2013-08-05 @return void / public function __construct () { $this->_svn_connect(); } / 配置SVN使用默认的用户名和密码 @author wengxianhu @date 2013-08-05 @return void / public function _svn_connect () { svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_USERNAME, $this->svn_user); svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_PASSWORD, $this->svn_password); } / 根据svn版本号获取所有的文件路径 @author wengxianhu @date 2013-08-05 @param array $revision_array 版本号列表 @return array / public function _get_file_list ($revision_array = array()) { if (!empty($revision_array)) { $filelist = array(); $log_list = array(); rsort($revision_array, SORT_NUMERIC); foreach ($revision_array as $_k=>$_v) { $log_list = @svn_log($this->source_path, $_v, $_v); if (false === $log_list) { return false; } else { $log_list = current($log_list); foreach ($log_list['paths'] as $s_k=>$s_v) { $s_v['path'] = preg_replace('/^\/[^\/]+\/(.)$/i', '$1', $s_v['path']); $filetmp = $s_v['path']; if (is_file($this->source_path . $s_v['path'])) { if (false === $this->multidimensional_search($filelist, array('filepath'=>$s_v['path']))) { $filelist[] = array( 'revision_no' => $log_list['rev'], 'filepath' => $s_v['path'] ); } } } } } return $filelist; } } / 对多维数组进行搜索 @author wengxianhu @date 2013-08-05 @param array $parents 被搜索数组 @param array $searched 搜索数组 @return boolean / public function multidimensional_search ($parents = array(), $searched = array()) { if (empty($searched) || empty($parents)) { return false; } foreach ($parents as $key => $value) { $exists = true; foreach ($searched as $skey => $svalue) { $exists = ($exists && IsSet($parents[$key][$skey]) && $parents[$key][$skey] == $svalue); } if ($exists) { return $key; } } return false; } / 根据svn版本号导出相应的文件 @author wengxianhu @date 2013-08-05 @param array $file_array 文件路径名 @param string $package_name 包名 @return boolean 成功为true,失败为false / public function _svn_export_list ($file_array = array(), $package_name = '') { $info = true; $this->dest_path = $this->dest_path . $package_name; if (file_exists($this->dest_path)) { $this->delDirAndFile($this->dest_path); } foreach ($file_array as $_k=>$_v) { $source_files = $this->source_path . $_v['filepath']; $dest_files = $this->dest_path . '/' . $_v['filepath']; $revision_no = (int)$_v['revision_no']; $this->_mkdirm(dirname($dest_files)); $lbv_export = @svn_export($source_files, $dest_files, false, $revision_no); if (false === $lbv_export) { $info = false; break; } } return $info; } / 创建文件夹 @author wengxianhu @date 2013-08-05 string $path 文件路径(不包括文件名) return void / public function _mkdirm ($path) { if (!file_exists($path)) { $this->_mkdirm(dirname($path)); mkdir($path, 0755); } } / 循环删除目录和文件函数 @author wengxianhu @date 2013-08-15 @param string $dirName 目录路径 return array / public function delDirAndFile($dirName) { if ( $handle = opendir( "$dirName" ) ) { while ( false !== ( $item = readdir( $handle ) ) ) { if ( $item != "." && $item != ".." ) { if ( is_dir( "$dirName/$item" ) ) { $this->delDirAndFile( "$dirName/$item" ); } else { unlink( "$dirName/$item" ); } } } closedir( $handle ); rmdir( $dirName ); } } }
更多关于PHP相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程