Page MenuHomePhabricator

Modernize the "arc diff" workflow
Open, NormalPublic

Description

See PHI1758. Currently, automatic detection of "Depends on" is short-circuited.

arc diff has a very large number of arguments, some of which I'd like to simplify or remove.

I think --raw and --raw-command can be simplified into --raw <path> which accepts -.

I'd like to remove lint/unit excuses.

These flags should become prompt configuration:

  • --allow-untracked
  • --uncommitted
  • --ignore-unsound-tests
  • --amend-autofixes
  • --amend-all
  • --apply-patches

These flags should be removed since I don't think they make sense in the context of arc diff:

  • --lintall
  • --advice
  • --only-new

These flags should be replaced with some kind of arc apply workflow:

  • --reviewers
  • --cc

I'm not sure --use-commit-message has any real use cases.

Perhaps --edit can be moved to some arc apply-esque arc edit, although I am currently not excited about writing a general-purpose CLI edit workflow for any object type (many complex controls seem very difficult to represent in text form).

Revisions and Commits

Needs Review
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision
Restricted Differential Revision

Event Timeline

epriestley triaged this task as Normal priority.May 30 2020, 9:26 PM
epriestley created this task.

I'm not sure --use-commit-message has any real use cases.

This was introduced a very long time ago in D1385 and appears to support a workflow which no longer exists, so I'm just going to remove it.

epriestley added a revision: Restricted Differential Revision.May 30 2020, 9:34 PM
epriestley added a revision: Restricted Differential Revision.May 30 2020, 9:47 PM
epriestley added a revision: Restricted Differential Revision.May 30 2020, 9:54 PM

arc diff has a lot of code to deal with handling untracked or uncommitted changes in the working copy. The major motivations for arc caring about this are:

  • we generally can not run unit tests unless we have a working copy; and
  • we often can not run lint on files which aren't present in the working copy; and
  • unit test results run in a working copy with a bunch of extra changes may not produce the right answer (for example: they may pass, when the change-as-landed fails, because you have uncommitted code which is required for them to pass); and
  • at a not-insignificant rate, users simply forget to add files. In ~2010, after I disabled this prompt because several engineers insisted that no one ever forgets to add files, a user forgot to add a file at Facebook and broke all ads for about a day, costing Facebook a trillion zillion dollars.

Generally, many users don't like the behavior of arc here, and would like to keep a big pile of uncommitted changes loose in their working copies at all times and believe this will never lead to errors. I believe they are, on average, wrong, but am also now more eager to give users enough rope to shoot themselves in the feet than I was in the past.

epriestley added a revision: Restricted Differential Revision.May 30 2020, 10:26 PM
epriestley added a revision: Restricted Differential Revision.May 30 2020, 10:30 PM
epriestley added a revision: Restricted Differential Revision.May 30 2020, 10:42 PM
epriestley added a revision: Restricted Differential Revision.May 30 2020, 10:47 PM
epriestley added a revision: Restricted Differential Revision.
epriestley added a revision: Restricted Differential Revision.May 30 2020, 10:55 PM
epriestley added a commit: Restricted Diffusion Commit.Jun 5 2020, 8:22 PM
epriestley added a commit: Restricted Diffusion Commit.
epriestley added a commit: Restricted Diffusion Commit.Jun 5 2020, 8:24 PM
epriestley added a commit: Restricted Diffusion Commit.
epriestley added a commit: Restricted Diffusion Commit.Jun 5 2020, 8:27 PM
epriestley added a commit: Restricted Diffusion Commit.Jun 5 2020, 8:32 PM
epriestley added a commit: Restricted Diffusion Commit.Jun 7 2020, 1:44 PM
epriestley added a commit: Restricted Diffusion Commit.Jun 8 2020, 10:58 PM