1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-29 18:22:41 +01:00

Use passthru to run git fetch in arc land so password prompts work

Summary:
Fixes T10314. In `arc land`, we currently run `git fetch` as a subprocess.

However, this can prevent password prompts (when fetching over HTTP with basic authentication) from working properly.

Instead, use passthru to redirect stdin/stdout to the subprocess so the user can type their password.

This adds a little extra clutter to the `arc land` output but I think that's OK.

Test Plan: See T10314, @maxie confirmed this fixes the issue.

Reviewers: chad

Reviewed By: chad

Subscribers: maxie

Maniphest Tasks: T10314

Differential Revision: https://secure.phabricator.com/D15233
This commit is contained in:
epriestley 2016-02-10 06:23:01 -08:00
parent 57f6fb59d7
commit d6b1531b94

View file

@ -128,10 +128,22 @@ final class ArcanistGitLandEngine
pht('FETCH'), pht('FETCH'),
pht('Fetching %s...', $ref)); pht('Fetching %s...', $ref));
$api->execxLocal( // NOTE: Although this output isn't hugely useful, we need to passthru
// instead of using a subprocess here because `git fetch` may prompt the
// user to enter a password if they're fetching over HTTP with basic
// authentication. See T10314.
$err = $api->execPassthru(
'fetch -- %s %s', 'fetch -- %s %s',
$this->getTargetRemote(), $this->getTargetRemote(),
$this->getTargetOnto()); $this->getTargetOnto());
if ($err) {
throw new ArcanistUsageException(
pht(
'Fetch failed! Fix the error and run "%s" again.',
'arc land'));
}
} }
private function updateWorkingCopy() { private function updateWorkingCopy() {