public initLocalWorkspace ( |
||
$task | ||
return | boolean | integer |
public function initLocalWorkspace(TaskModel $task)
{
$version = $task->link_id;
$branch = $task->branch;
if ($this->config->repo_type == Project::REPO_SVN) {
// svn cp 过来指定分支的目录, 然后 svn up 到指定版本
$cmd[] = sprintf('cp -rf %s %s ', Project::getSvnDeployBranchFromDir($branch), Project::getDeployWorkspace($version));
} else {
// git cp 仓库, 然后 checkout 切换分支, up 到指定版本
$cmd[] = sprintf('cp -rf %s %s ', Project::getDeployFromDir(), Project::getDeployWorkspace($version));
}
$command = join(' && ', $cmd);
return $this->runLocalCommand($command);
}
/** * 检查目录和权限,工作空间的准备 * 每一个版本都单独开辟一个工作空间,防止代码污染 * * @return bool * @throws \Exception */ private function _initWorkspace() { $folder = new Folder(); $sTime = Command::getMs(); $folder->setConfig($this->conf); // 本地宿主机工作区初始化 $folder->initLocalWorkspace($this->task->link_id); // 本地宿主机代码仓库检查 // 远程目标目录检查,并且生成版本目录 $ret = $folder->initRemoteVersion($this->task->link_id); // 记录执行时间 $duration = Command::getMs() - $sTime; Record::saveRecord($folder, $this->task->id, Record::ACTION_PERMSSION, $duration); if (!$ret) { throw new \Exception('初始化部署隔离空间出错'); } return true; }