1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-18 19:40:55 +01:00
phorge-phorge/bin
epriestley ff8b48979e Simplify Repository remote and local command construction
Summary:
This cleans up some garbage:

  - We were specifying environmental variables with `X=y git ...`, but now have `setEnv()` on both `ExecFuture` and `PhutilExecPassthru`. Use `setEnv()`.
  - We were specifying the working directory with `(cd %s && git ...)`, but now have `setCWD()` on both `ExecFuture` and `PhutilExecPassthru`. Use `setCWD()`.
  - We were specifying the Git credentials with `ssh-agent -c (ssh-add ... && git ...)`. We can do this more cleanly with `GIT_SSH`. Use `GIT_SSH`.
  - Since we have to write a script for `GIT_SSH` anyway, use the same script for Subversion and Mercurial.

This fixes two specific issues:

  - Previously, we were not able to set `-o StrictHostKeyChecking=no` on Git commands, so the first time you cloned a git repo the daemons would generally prompt you to add `github.com` or whatever to `known_hosts`. Since this was non-interactive, things would mysteriously hang, in effect. With `GIT_SSH`, we can specify the flag, reducing the number of ways things can go wrong.
  - This adds `LANG=C`, which probably (?) forces the language to English for all commands. Apparently you need to install special language packs or something, so I don't know that this actually works, but at least two users with non-English languages have claimed it does (see <https://github.com/facebook/arcanist/pull/114> for a similar issue in Arcanist).

At some point in the future I might want to combine the Arcanist code for command execution with the Phabricator code for command execution (they share some stuff like LANG and HGPLAIN). However, credential management is kind of messy, so I'm adopting a "wait and see" approach for now. I expect to split this at least somewhat in the future, for Drydock/Automerge if nothing else.

Also I'm not sure if we use the passthru stuff at all anymore, I may just be able to delete that. I'll check in a future diff.

Test Plan: Browsed and pulled Git, Subversion and Mercurial repositories.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T2230

Differential Revision: https://secure.phabricator.com/D7600
2013-11-20 10:41:35 -08:00
..
accountadmin Improve CLI script for account creation and document account/reg setup process 2011-05-12 18:44:53 -07:00
aphlict Add a bin/aphlict wrapper to handle aphlict config / daemonization 2012-06-18 15:11:19 -07:00
audit Provide a more flexible script for administrative management of audits 2013-08-05 10:35:01 -07:00
auth Add very basic bin/auth tool 2013-06-17 10:55:05 -07:00
cache Provide 'bin/cache', for managing caches 2013-05-20 10:16:35 -07:00
config Add a local configuration source and a non-environmental ENV config source 2012-12-30 06:16:15 -08:00
diviner Port Diviner Core to Phabricator 2013-01-07 14:04:23 -08:00
drydock Modernize the drydock script 2012-11-01 15:30:14 -07:00
fact Add a basic "fact" application 2012-07-27 13:34:21 -07:00
feed Push feed publishing deeper into the task queue 2013-06-25 16:29:47 -07:00
files Add a script to migrate files between storage engines 2012-10-25 11:36:38 -07:00
lipsum First Diff of Test Data Generator 2013-04-12 14:07:16 -07:00
mail Introduce basic bin/mail with a resend workflow 2013-03-30 15:53:49 -07:00
phd Launch daemons with a full Phabricator environment in the overseers 2013-07-23 12:09:45 -07:00
policy Add a very simple bin/policy script for CLI policy administration 2013-09-29 09:06:41 -07:00
repository Introduce "bin/repository" for repository management 2012-06-25 12:35:37 -07:00
search Improve Search architecture 2012-12-21 14:21:31 -08:00
ssh-auth Implement SSHD glue and Conduit SSH endpoint 2012-12-19 11:08:07 -08:00
ssh-auth-key Prepare to route VCS connections through SSH 2013-10-29 15:32:40 -07:00
ssh-connect Simplify Repository remote and local command construction 2013-11-20 10:41:35 -08:00
ssh-exec Implement SSHD glue and Conduit SSH endpoint 2012-12-19 11:08:07 -08:00
storage Make SQL patch management DAG-based and provide namespace support 2012-04-30 07:54:00 -07:00