public function updateRepo($branch = 'master', $gitDir = null)
{
$gitDir = $gitDir ?: Project::getDeployFromDir();
$dotGit = rtrim($gitDir, '/') . '/.git';
// 存在git目录,直接pull
if (file_exists($dotGit)) {
$cmd[] = sprintf('cd %s ', $gitDir);
$cmd[] = sprintf('/usr/bin/env git checkout -q %s', $branch);
$cmd[] = sprintf('/usr/bin/env git fetch -p -q --all');
$cmd[] = sprintf('/usr/bin/env git reset -q --hard origin/%s', $branch);
$command = join(' && ', $cmd);
return $this->runLocalCommand($command);
} else {
$cmd[] = sprintf('mkdir -p %s ', $gitDir);
$cmd[] = sprintf('cd %s ', $gitDir);
$cmd[] = sprintf('/usr/bin/env git clone -q %s .', $this->getConfig()->repo_url);
$cmd[] = sprintf('/usr/bin/env git checkout -q %s', $branch);
$command = join(' && ', $cmd);
return $this->runLocalCommand($command);
}
}