mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-01 11:12:42 +01:00
8798083ad9
Summary: Fixes T7034. Like HTTP, proxy requests to the correct host if a repository has an Almanac service host. Test Plan: Ran VCS requests through the proxy. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T7034 Differential Revision: https://secure.phabricator.com/D11543
41 lines
972 B
PHP
41 lines
972 B
PHP
<?php
|
|
|
|
final class DiffusionGitUploadPackSSHWorkflow extends DiffusionGitSSHWorkflow {
|
|
|
|
protected function didConstruct() {
|
|
$this->setName('git-upload-pack');
|
|
$this->setArguments(
|
|
array(
|
|
array(
|
|
'name' => 'dir',
|
|
'wildcard' => true,
|
|
),
|
|
));
|
|
}
|
|
|
|
protected function executeRepositoryOperations() {
|
|
$repository = $this->getRepository();
|
|
|
|
if ($this->shouldProxy()) {
|
|
$command = $this->getProxyCommand();
|
|
} else {
|
|
$command = csprintf('git-upload-pack -- %s', $repository->getLocalPath());
|
|
}
|
|
$command = PhabricatorDaemon::sudoCommandAsDaemonUser($command);
|
|
|
|
$future = id(new ExecFuture('%C', $command))
|
|
->setEnv($this->getEnvironment());
|
|
|
|
$err = $this->newPassthruCommand()
|
|
->setIOChannel($this->getIOChannel())
|
|
->setCommandChannelFromExecFuture($future)
|
|
->execute();
|
|
|
|
if (!$err) {
|
|
$this->waitForGitClient();
|
|
}
|
|
|
|
return $err;
|
|
}
|
|
|
|
}
|