mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-26 00:32: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:
parent
57f6fb59d7
commit
d6b1531b94
1 changed files with 13 additions and 1 deletions
|
@ -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() {
|
||||||
|
|
Loading…
Reference in a new issue