Allow arc to identify repositories without "project_id"
Summary:
Ref T4343. Continues the process of reducing the prominence of Arcanist Projects. Primarily:
- Query Phabricator to identify the working copy based on explicit configuration, or guess based on heuristics.
- Enhance arc which to explain the process to the user.
- The project_id key is no longer required in .arcconfig.
Minor/cleanup changes:
- Rename project_id to project.name (consistency, clarity).
- Rename conduit_uri to phabricator.uri (consistency, clairty).
- These both need documentation updates.
- Add repository.callsign to explicitly bind to a repository.
- Updated .arcconfig for the new values.
- Fix a unit test which broke a while ago when we fixed a rare definition of "unstaged".
- Make getRepositoryUUID() generic so we can get rid of one instanceof.
Test Plan:
- Ran arc which.
- Ran arc diff.
- This doesn't really change anything, so the only real risk is version compatibility breaks. This does introduce such a break, but the window is very narrow: if you upgrade arc after this commit, and try to diff against a Phabricator which was updated after yesterday (D8068) but before D8072 lands, the lookup will work so we'll add repositoryPHID to the differential.creatediff call, but it won't exist in Phabricator yet. This window is so narrow that I'm not going to try to fix it, as I'd guess there is a significant chance that no users will be affected. I don't see a clever way to fix it that doesn't involve a lot of work, either.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T4343
Differential Revision: https://secure.phabricator.com/D8073