Promote instance identity to the upstream and pass it to commit hooks
Summary: Fixes T7019. In a cluster environment, pushes currently fail because the commit hook can't identify the instance. For web processes, the hostname identifies the instance -- but we don't have a hostname in the hook. For CLI processes, the environment identifies the instance -- but we don't have an environment in the hook under SVN. Promote the instance identifier into the upstream and pack/unpack it explicitly for hooks. This is probably not useful for anyone but us, but the amount of special-purpose code we're introducing is very small. I poked at trying to do this in a more general way, but: - We MUST know this BEFORE we run code, so the normal subclassing stuff is useless. - I couldn't come up with any other parameter which might ever be useful to pass in. Test Plan: Used `git push` to push code through proxied HTTP, got a clean push. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T7019 Differential Revision: https://secure.phabricator.com/D11495
This commit is contained in:
@@ -1,6 +1,25 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
// Commit hooks execute in an unusual context where the environment may be
|
||||
// unavailable, particularly in SVN. The first parameter to this script is
|
||||
// either a bare repository identifier ("X"), or a repository identifier
|
||||
// followed by an instance identifier ("X:instance"). If we have an instance
|
||||
// identifier, unpack it into the environment before we start up. This allows
|
||||
// subclasses of PhabricatorConfigSiteSource to read it and build an instance
|
||||
// environment.
|
||||
|
||||
if ($argc > 1) {
|
||||
$context = $argv[1];
|
||||
$context = explode(':', $context, 2);
|
||||
$argv[1] = $context[0];
|
||||
|
||||
if (count($context) > 1) {
|
||||
$_ENV['PHABRICATOR_INSTANCE'] = $context[1];
|
||||
putenv('PHABRICATOR_INSTANCE='.$context[1]);
|
||||
}
|
||||
}
|
||||
|
||||
$root = dirname(dirname(dirname(__FILE__)));
|
||||
require_once $root.'/scripts/__init_script__.php';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user