Changeset View
Changeset View
Standalone View
Standalone View
src/applications/diffusion/protocol/DiffusionGitCommandEngine.php
- This file was added.
| <?php | |||||
| final class DiffusionGitCommandEngine | |||||
| extends DiffusionCommandEngine { | |||||
| protected function canBuildForRepository( | |||||
| PhabricatorRepository $repository) { | |||||
| return $repository->isGit(); | |||||
| } | |||||
| protected function newFormattedCommand($pattern, array $argv) { | |||||
| $pattern = "git {$pattern}"; | |||||
| return array($pattern, $argv); | |||||
| } | |||||
| protected function newCustomEnvironment() { | |||||
| $env = array(); | |||||
| // NOTE: See T2965. Some time after Git 1.7.5.4, Git started fataling if | |||||
| // it can not read $HOME. For many users, $HOME points at /root (this | |||||
| // seems to be a default result of Apache setup). Instead, explicitly | |||||
| // point $HOME at a readable, empty directory so that Git looks for the | |||||
| // config file it's after, fails to locate it, and moves on. This is | |||||
| // really silly, but seems like the least damaging approach to | |||||
| // mitigating the issue. | |||||
| $root = dirname(phutil_get_library_root('phabricator')); | |||||
| $env['HOME'] = $root.'/support/empty/'; | |||||
| if ($this->isAnySSHProtocol()) { | |||||
| $env['GIT_SSH'] = $this->getSSHWrapper(); | |||||
| } | |||||
| return $env; | |||||
| } | |||||
| } | |||||