Update the "WorkingCopy" API and create a fallback "Filesystem" working copy
Summary:
Ref T11968.
- Allow "WorkingCopy" objects to maintain an API object and update callers ("get...()" instead of "new...()").
- Always generate a WorkingCopy object and a RepositoryAPI object.
Currently, code has to look like this:
$working_copy = ... if ($working_copy) { $repository_api = ... if ($repository_api [instanceof ... ]) {
This is clunky. There's also no reason some "arc" commands can't run outside a VCS working directory without special-casing how they interact with the filesystem.
Conceptually, model the filesystem as a trivial VCS (which stores exactly one commit, always amends onto it, and discards history). Provide a trivial WorkingCopy and API for it.
(This change isn't terribly interesting on its own, but chips away at landing the new Hardpoint infrastructure.)
Test Plan: Ran arc version, arc upgrade.
Maniphest Tasks: T11968
Differential Revision: https://secure.phabricator.com/D21070