本文整理汇总了PHP中Git::checkout方法的典型用法代码示例。如果您正苦于以下问题:PHP Git::checkout方法的具体用法?PHP Git::checkout怎么用?PHP Git::checkout使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Git
的用法示例。
在下文中一共展示了Git::checkout方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testCommitIntoBranch
function testCommitIntoBranch()
{
$Git = new Git($this->__repos[1]);
$this->assertTrue($Git->create());
$this->assertTrue(file_exists(TMP . 'tests/git/repo/test.git'));
$this->assertTrue(file_exists(TMP . 'tests/git/working/test/master/.git'));
$Git->cd();
$Git->checkout(array('-b', 'new'));
$Git->push('origin', 'new');
$Git->branch('new', true);
$this->assertTrue(file_exists(TMP . 'tests/git/working/test/new/.git'));
$Git->cd();
$Git->checkout(array('-b', 'new', 'origin/new'));
$Git->cd();
$Git->run('pull');
$File = new File(TMP . 'tests/git/working/test/new/a.txt');
$this->assertTrue($File->write('this is something new'));
$Git->commit(array("-m", "'Adding a.txt'"));
$Git->push('origin', 'new');
$Git->cd();
$result = $Git->read();
$this->assertEqual($result['message'], "Adding a.txt");
// pr($Git->debug);
// pr($Git->response);
// die();
}
示例2: compare
/**
* Compare revisions and returns array of files to upload:.
*
* [
* 'upload' => $filesToUpload,
* 'delete' => $filesToDelete
* ];
*
* @param string $localRevision
*
* @throws \Exception if unknown git diff status
*
* @return array
*/
public function compare($localRevision)
{
$remoteRevision = null;
$filesToUpload = [];
$filesToDelete = [];
if ($this->currentSubmoduleName) {
$this->dotRevision = $this->currentSubmoduleName . '/' . $this->dotRevisionFilename;
} else {
$this->dotRevision = $this->dotRevisionFilename;
}
// Fetch the .revision file from the server and write it to $tmpFile
$this->debug("Fetching {$this->dotRevision} file");
if ($this->connection->has($this->dotRevision)) {
$remoteRevision = $this->connection->read($this->dotRevision);
$this->debug('Remote revision: <bold>' . $remoteRevision);
} else {
$this->cli->comment('No revision found - uploading everything...');
}
// Checkout the specified Git branch
if (!empty($this->servers[$this->currentlyDeploying]['branch'])) {
$output = $this->git->checkout($this->servers[$this->currentlyDeploying]['branch'], $this->repo);
if (isset($output[0])) {
if (strpos($output[0], 'error') === 0) {
throw new \Exception('Stash your modifications before deploying.');
}
}
if (isset($output[1])) {
if ($output[1][0] === 'M') {
throw new \Exception('Stash your modifications before deploying.');
}
}
if (isset($output[0])) {
$this->cli->out($output[0]);
}
}
$output = $this->git->diff($remoteRevision, $localRevision, $this->repo);
$this->debug(implode("\r\n", $output));
/*
* Git Status Codes
*
* A: addition of a file
* C: copy of a file into a new one
* D: deletion of a file
* M: modification of the contents or mode of a file
* R: renaming of a file
* T: change in the type of the file
* U: file is unmerged (you must complete the merge before it can be committed)
* X: "unknown" change type (most probably a bug, please report it)
*/
if (!empty($remoteRevision)) {
foreach ($output as $line) {
$status = $line[0];
if (strpos($line, 'warning: CRLF will be replaced by LF in') !== false) {
continue;
} elseif (strpos($line, 'The file will have its original line endings in your working directory.') !== false) {
continue;
} elseif ($status === 'A' or $status === 'C' or $status === 'M' or $status === 'T') {
$filesToUpload[] = trim(substr($line, 1));
} elseif ($status == 'D') {
$filesToDelete[] = trim(substr($line, 1));
} elseif ($status === 'R') {
list(, $oldFile, $newFile) = preg_split('/\\s+/', $line);
$filesToDelete[] = trim($oldFile);
$filesToUpload[] = trim($newFile);
} else {
throw new \Exception("Unknown git-diff status. Use '--sync' to update remote revision or use '--debug' to see what's wrong.");
}
}
} else {
$filesToUpload = $output;
}
$filteredFilesToUpload = $this->filterIgnoredFiles($filesToUpload);
$filteredFilesToDelete = $this->filterIgnoredFiles($filesToDelete);
$filteredFilesToInclude = isset($this->filesToInclude[$this->currentlyDeploying]) ? $this->filterIncludedFiles($this->filesToInclude[$this->currentlyDeploying]) : [];
$filesToUpload = array_merge($filteredFilesToUpload['files'], $filteredFilesToInclude);
$filesToDelete = $filteredFilesToDelete['files'];
$filesToSkip = array_merge($filteredFilesToUpload['filesToSkip'], $filteredFilesToDelete['filesToSkip']);
return [$this->currentlyDeploying => ['delete' => $filesToDelete, 'upload' => $filesToUpload, 'exclude' => $filesToSkip]];
}
示例3:
break;
case 'diff':
if (isset($_GET['repo']) && isset($_GET['path'])) {
$result = $git->diff(getWorkspacePath($_GET['repo']), $_GET['path']);
if ($result === false) {
echo '{"status":"error","message":"Failed to get diff!"}';
} else {
echo $result;
}
} else {
echo '{"status":"error","message":"Missing parameter!"}';
}
break;
case 'checkout':
if (isset($_GET['repo']) && isset($_GET['path'])) {
if ($git->checkout(getWorkspacePath($_GET['repo']), $_GET['path'])) {
echo '{"status":"success","message":"Changes reverted!"}';
} else {
echo '{"status":"error","message":"Failed to undo changes!"}';
}
} else {
echo '{"status":"error","message":"Missing parameter!"}';
}
break;
case 'getRemotes':
if (isset($_GET['path'])) {
$result = $git->getRemotes(getWorkspacePath($_GET['path']));
if ($result === false) {
echo '{"status":"error","message":"Failed to get remotes!"}';
} else {
echo '{"status":"success","data":' . json_encode($result) . '}';