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

@@ -51,6 +51,9 @@ final class DiffusionCommitHookEngine extends Phobject {
case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN:
$err = $this->executeSubversionHook();
break;
case PhabricatorRepositoryType::REPOSITORY_TYPE_MERCURIAL:
$err = $this->executeMercurialHook();
break;
default:
throw new Exception(pht('Unsupported repository type "%s"!', $type));
}
@@ -73,6 +76,13 @@ final class DiffusionCommitHookEngine extends Phobject {
return 0;
}
private function executeMercurialHook() {
// TODO: Here, too, useful things should be done.
return 0;
}
private function parseGitUpdates($stdin) {
$updates = array();