#!/usr/bin/env php \n"; exit(1); } echo phutil_console_wrap( phutil_console_format( 'This script will test that you have configured valid credentials for '. 'access to a repository, so the Phabricator daemons can pull from it. '. 'You should run this as the **same user you will run the daemons as**, '. 'from the **same machine they will run from**. Doing this will help '. 'detect various problems with your configuration, such as SSH issues.')); list($whoami) = execx('whoami'); $whoami = trim($whoami); $ok = phutil_console_confirm("Do you want to continue as '{$whoami}'?"); if (!$ok) { die(1); } $callsign = $argv[1]; echo "Loading '{$callsign}' repository...\n"; $repository = id(new PhabricatorRepository())->loadOneWhere( 'callsign = %s', $argv[1]); if (!$repository) { throw new Exception("No such repository exists!"); } $vcs = $repository->getVersionControlSystem(); PhutilServiceProfiler::installEchoListener(); echo "Trying to connect to the remote...\n"; switch ($vcs) { case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN: $err = $repository->passthruRemoteCommand( '--limit 1 log %s', $repository->getRemoteURI()); break; case PhabricatorRepositoryType::REPOSITORY_TYPE_GIT: // Do an ls-remote on a nonexistent ref, which we expect to just return // nothing. $err = $repository->passthruRemoteCommand( 'ls-remote %s %s', $repository->getRemoteURI(), 'just-testing'); break; default: throw new Exception("Unsupported repository type."); } if ($err) { echo phutil_console_format( "** FAIL ** Connection failed. The credentials for this ". "repository appear to be incorrectly configured.\n"); exit(1); } else { echo phutil_console_format( "** OKAY ** Connection successful. The credentials for ". "this repository appear to be correctly configured.\n"); }