首页 php教程 php手册 php svn操作类

php svn操作类

May 25, 2016 pm 04:56 PM
preg_match

以前我们开发大型项目时都会用到svn来同步,因为开发产品的人过多,所以我们会利用软件来管理,今天发有一居然可以利用php来管理svn哦,好了看看吧。
 代码如下 复制代码

/**
*
* 该类用于执行svn的外部程序
*
* @auth七阳 http://www.phprm.com
*
*/
class SvnPeer
{
/**
* 列出存储库中的目录条目
*
* @param string 特定项目存储库路径
* @return bool true,如果验证成功,否则为 false
*/
静态公共函数 ls($存储库)
{
$command = "svn ls " . $repository;
$output = SvnPeer::runCmd($command);
$output = implode("
", $output);
if (strpos($output, 'non-存在于该修订版中')) {
返回 false;
}
返回 "
" 。 $命令。 “
” 。 $output;
}
/**
* 在工作副本或存储库中复制某些内容,记住历史
*
* @param $src
* @param $dst
* @param $comment 字符串指定日志消息
* @return bool true, 如果复制成功,否则返回错误信息
*
* @todo comment needaddslashes for svn commit
*/
静态公共函数复制($src, $dst, $comment)
{
$command = "svn cp $src $dst -m '$comment'";
$output = SvnPeer::runCmd($command);
$output = implode("
", $output);
if (strpos ($output, '提交修订')) {
返回 true;
}
返回 "
" 。 $命令。 “
” 。 $output;
}
/**
* 从版本控制中删除文件和目录
*
* @param $url
* @return bool true,如果删除成功,否则返回错误信息
*
* @ todo 注释需要为 svn commit 添加斜杠
*/
静态公共函数delete($url, $comment)
{
$command = "svn del $url -m ' $comment'";
$output = SvnPeer::runCmd($command);
$output = implode('
', $output);
if (strpos($output, '已提交修订')) {
返回 true;
}
返回“
” 。 $命令。 “
” 。 $output;
}
/**
* 移动和/或重命名工作副本或存储库中的内容
*
* @param $src 字符串主干路径
* @param $dst 字符串新分支路径
* @param $comment string 指定日志消息
* @return bool true,如果移动成功,否则返回错误消息
*
* @todo comment needaddslashes for svn commit
*/
静态公共函数 move($src, $dst, $comment)
{
$command = "svn mv $src $dst -m '$comment'";
$output = SvnPeer::runCmd($command);
$output = implode('
', $output);
if (strpos ($output, '提交修订')) {
返回 true;
}
返回 "
" 。 $命令。 “
” 。 $output;
}
/**
* 在版本控制下创建一个新目录
*
* @param $url string
* @param $comment string svn 消息
* @return bool true,如果创建成功,否则返回错误消息
*
* @todo 注释需要为 svn commit 添加斜杠
*/
静态公共函数 mkdir($url, $comment)
{
$command = "svn mkdir $url -m ' $comment'";
$output = SvnPeer::runCmd($command);
$output = implode('
', $output);
if (strpos($output, '已提交修订')) {
返回 true;
}
返回 "
" 。 $命令。 “
” 。 $output;
}
静态公共函数 diff($pathA, $pathB)
{
$output = SvnPeer::runCmd("svn diff $pathA $pathB");
return implode('
', $output);
}
静态公共函数 checkout($url, $dir)
{
$command = "cd $dir && svn co $url ";
$output = SvnPeer::runCmd($command);
$output = implode('
', $output);
if (strstr($output, '签出修订版本')) {
返回 true;
}
返回 "
" 。 $命令。 “
” 。 $output;
}
静态公共函数更新($path)
{
$command = "cd $path && svn up";
$output = SvnPeer::runCmd($command );
$output = implode('
', $output);
preg_match_all("/[0-9] /", $output, $ret);
if (!$ ret[0][0]){
返回“
” 。 $命令。 “
” 。 $输出;
}
return $ret[0][0];
}
静态公共函数 merge($revision, $url, $dir)
{
$command = "cd $dir && svn merge -r1:$revision $url";
$output = implode('
', SvnPeer::runCmd($command));
if (strstr($output, '文本冲突' )) {
返回 '命令:' . $命令.'
'。 $output;
}
return true;
}
静态公共函数 commit($dir, $comment)
{
$command = "cd $dir && svn commit -m '$comment'";
$output = implode('
', SvnPeer::runCmd($command));
if (strpos($output, '提交的修订版') || empty( $output)) {
return true;
}
return $output;
}
静态公共函数 getStatus($dir)
{
$command = "cd $ dir && svn st";
return SvnPeer::runCmd($command);
}
静态公共函数 hasConflict($dir)
{
$output = SvnPeer::getStatus($ dir);
foreach ($output as $line){
if ('C' == substr(trim($line), 0, 1) || ('!' == substr(trim($ line), 0, 1))){
返回 true;
}
}
返回 false;
}
/**
* 使用 XML 显示一组路径的日志消息
*
* @param 路径字符串
* @return 日志消息字符串
*/
static public function getLog($path)
{
$command = "svn log $path --xml";
$output = SvnPeer::runCmd($command);
return implode('', $output);
}
静态公共函数 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]){
返回“
” 。 $命令。 “
” 。 $output;
}
返回 $ret[0][0];
}
/**
* 运行 cmd 并返回结果
*
* @param string 命令行
* @param boolen true 需要添加 svn 身份验证
* @return array svn 输出的内容执行
*/
静态受保护函数 runCmd($command)
{
$authCommand = '--用户名' 。 SVN_用户名。 ' - 密码 ' 。 SVN_密码。 ' --no-auth-cache --non-interactive --config-dir '.SVN_CONFIG_DIR.'.subversion';
exec($command . $authCommand . " 2>&1", $output);
返回$输出;
}
}



文章地址:

转载手工^^请带上论文地址!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)