As far as I can see, it seems to me that every command issued by the ExecFuture system, does not have the $HOME environment variable.
Documentation:
https://we.phorge.it/book/arcanist/class/ExecFuture/
Among other things, this is a problem in the Config page (/config) since it issues git log but without an $HOME it cannot parse any .gitconfig and cannot read safe.directory and so it fails.
Questions:
- Is $HOME missing by design in ExecFuture? I think no.
- Should we enable $HOME as default? I think yes.
Tested with:
- It does NOT work with Apache mod_php PHP 7.4 variables_order = "GPCS" (default)
- It does NOT work with apache mod_php PHP 7.4 variables_order = "EGPCS"
- ...
Interestingly, the Config page start working with this patch I crafted, to manually create an HOME environment variable in this way:
$log_futures[$lib] = id(new ExecFuture('%C', $log_command))
+ ->setEnv(array('HOME' => posix_getpwuid(posix_getuid())['dir']))
->setCWD($root);
The above workaround was tested in Linux with mod_php and it's probably too much system-centric. This specific HOME-related sub-problem is probably better to be discussed here: