<?php
define("WORK_PATH", "E:\\");
define("USERNAME", "svn user name");
define("PASSWORD", "svn user password");
define("SVN_PATH", '"C:\Program Files\CollabNet\Subversion Client\svn.exe"');
define("ZIP_PATH", '"C:\Program Files\7-Zip\7z.exe"');
define('LUAJIT_BIN', '"C:\work\quick-cocos2d-x-2.2.1-rc\bin\win32\luajit.exe"');
define('SVN_CHECKOUT_PATH', 'http://127.0.0.1/myproject');
class patch
{
public function __construct(&$connect=NULL,&$IndexPDOConnect=NULL,&$share=NULL)
{
}
public function __destruct()
{
}
//釋出主版本
public function releaseVersion()
{
$this->makeDir("release");
$this->makeDir("release\\scripts");
$this->makeDir("release\\res");
$command=sprintf('xcopy %s %s /s/y',WORK_PATH."\\scripts","release\\scripts");
exec($command,$res,$r);
echo $command."result:".$r;
echo "</br>";
$command=sprintf('xcopy %s %s /s/y',WORK_PATH."\\res","release\\res");
exec($command,$res,$r);
echo $command."result:".$r;
$command=sprintf('dir %s /s/b',WORK_PATH."\\scripts");
exec($command,$res);
foreach($res as $key => $v)
{
$subName=$this->getSubName($v);
$_path=str_replace(WORK_PATH."\\", "", $v);
$_path="release\\".$_path;
if($subName=="lua")
{
$pathArr=explode("\\", $v);
$name=$pathArr[count($pathArr)-1];
if($name!="main.lua")
{
$command = sprintf('%s -b -s %s %s', LUAJIT_BIN, $_path,$_path);
echo "encrypt ".$_path;
exec($command,$res,$r);
if($r==1)
echo ">>>fail</br>";
else
echo ">>>success</br>";
}
}
}
}
//釋出子版本
public function releaseSubVersion()
{
$this->createPatchPath();
$res=$this->getSvnDiff();
foreach($res as $key => $v)
{
$arr=explode(" ", $v);
$act=$arr[0];
$path=$arr[1];
$_path=str_replace(WORK_PATH."\\", "", $path);
$_path=trim($_path);
$pathArr=explode("\\", $_path);
// print_r($pathArr);
if($act!="D")
$this->copyFile($path,$pathArr,$_path);
$this->encryptFile($path,$pathArr,$_path);
}
//zip files
$cmd=ZIP_PATH.' a -tzip '.$this->version.'.zip ./'.$this->version.'/*';
echo $cmd;
exec($cmd);
}
public function createPatchPath()
{
//$today = date("Ymdhis");
$this->makeDir(NOW_VERSION);
$this->version=NOW_VERSION;
}
public function getSvnDiff()
{
exec(SVN_PATH.' diff --summarize -r '.OLD_VERSION.':'.NOW_VERSION.' '.WORK_PATH.' --username '.USERNAME.' --password '.PASSWORD,$res);
return $res;
}
public function copyFile($sourcePath,$pathArr,$absPath)
{
$len=count($pathArr);
$path=$this->version;
for($i=0;$i<$len;$i++)
{
$str=$pathArr[$i];
if($this->checkIsFile($str))//is file
{
$checkoutPath=str_replace("\\", "/", $absPath);
$command = sprintf('%s export -r %s %s %s', SVN_PATH, NOW_VERSION, SVN_CHECKOUT_PATH.$checkoutPath,$path.'\\'.$str);
echo "export ".$str;
exec($command,$res,$r);
if($r==1)
echo ">>>fail</br>";
else
echo ">>>success</br>";
}
else//mk dir
{
$path.="\\".$str;
$this->makeDir($path);
}
}
}
public function encryptFile($sourcePath,$pathArr,$absPath)
{
$len=count($pathArr);
$path=$this->version;
for($i=0;$i<$len;$i++)
{
$str=$pathArr[$i];
if($this->checkIsFile($str))//is file
{
$subName=$this->getSubName($str);
//check is lua script
if($subName=="lua")
{
$command = sprintf('%s -b -s %s %s', LUAJIT_BIN, $path.'\\'.$str, $path.'\\'.$str);
echo "encrypt ".$str;
exec($command,$res,$r);
if($r==1)
echo ">>>fail</br>";
else
echo ">>>success</br>";
}
}
else
{
$path.="\\".$str;
}
}
}
public function checkIsFile($str)
{
return strrpos($str,'.');
}
public function getSubName($str)
{
$arr=explode(".", $str);
return $arr[1];
}
public function makeDir($path)
{
$b=file_exists($path);
if(!$b)
mkdir($path, 0777, true);
}
}
$patch=new patch();
if($_GET['old_ver']&&$_GET['now_ver'])
{
define("OLD_VERSION", $_GET['old_ver']);
define("NOW_VERSION", $_GET['now_ver']);//HEAD
$patch->releaseSubVersion();
}
else
{
$patch->releaseVersion();
}
?>
沒有留言:
張貼留言