Support Mercurial pretxnchangegroup hooks

Summary: Ref T4189. Fixes T2066. Mercurial has a //lot// of hooks so I'm not 100% sure this is all we need to install (we may need separate hooks for tags/bookmarks) but it should cover most of what we're after at least.

Test Plan:
  - `bin/repository pull`'d a Mercurial repo and got a hook install.
  - Pushed to a Mercurial repository over SSH and HTTP, with good/bad hooks. Saw hooks fire.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T2066, T4189

Differential Revision: https://secure.phabricator.com/D7685
This commit is contained in:
epriestley
2013-12-02 15:46:03 -08:00
parent 017d6ccd07
commit f93c6985ad
5 changed files with 65 additions and 9 deletions

View File

@@ -406,7 +406,9 @@ final class DiffusionServeController extends DiffusionController {
return $user;
}
private function serveMercurialRequest(PhabricatorRepository $repository) {
private function serveMercurialRequest(
PhabricatorRepository $repository,
PhabricatorUser $viewer) {
$request = $this->getRequest();
$bin = Filesystem::resolveBinary('hg');
@@ -414,7 +416,9 @@ final class DiffusionServeController extends DiffusionController {
throw new Exception("Unable to find `hg` in PATH!");
}
$env = array();
$env = array(
'PHABRICATOR_USER' => $viewer->getUsername(),
);
$input = PhabricatorStartup::getRawInput();
$cmd = $request->getStr('cmd');