Arc land requires interactive confirmation

Reproduction Instructions
Complete steps which allow someone else who does not have access to your environment to reproduce the bug.

  1. Run arc land

I am now prompted “Land these changes?” and have to confirm before the changes will land. In older versions of arcanist, arc land would simply land the diff.

$ arc land (git log --format="%h" master.. | tail -1) && git fetch origin master:master && git rebase master
 STRATEGY  Merging with "squash" strategy, the default strategy.
 ONTO REMOTE  Landing onto remote "origin", the default remote under Git.
 ONTO TARGET  Landing onto target "master", the default target under Git.
 INTO REMOTE  Will merge into remote "origin" by default, because this is the remote the change is landing onto.
 INTO TARGET  Will merge into target "master" by default, because this is the "onto" target.
 FETCH  Fetching "master" from remote "origin"...

  $   git fetch --no-tags --quiet -- origin master


 INTO COMMIT  Preparing merge into "master" from remote "origin", at commit "bb2dfd7ef05a".
 LANDING  These changes will land:

  *   D7201 Move user profile from redux to react context
        c2b93b419917  Move user profile from redux to react context

 >>>  Land these changes? [y/N/?] y

Phabricator/Arcanist Version
Output from Config > Version Information or arc version.

$ arc version
arcanist 33dfa859d8e68a66559c15c78cea4da19204653b (12 Jun 2020)

Try typing “?” at the prompt (hinted by the ? in [y/N/?]), or arc help prompts.

Thanks. That’s… quirky. (I expected to find a command-line flag to bypass the interaction, I would never have thought to hit the ? there. In fact, I didn’t even notice it.)

I’m scared to use that option though; if I answer y* or y! to save my answer, will this mean I no longer get prompted by arc land if I attempt to land while the diff is unaccepted, or is still running builds?

I’d much rather arc land just didn’t prompt me to confirm I want to run the command I just typed, unless something is wrong. I’m not sure what the value is in this prompt.

Each prompt response may be saved individually. See arc prompts land, from arc help prompts:

You can bypass the specific warnings, confirmations, or guard rails that you don’t find valuable.

If you would prefer a command-line flag, a future change to arc is likely to allow you to provide --prompt-answer arc.land.confirm=y or similar, but many arc workflows have a large number of prompts so I expect this to be inconvenient for many users.

This change was partly driven by requests for new prompts, e.g. multiple reports of confusion over the “revision is not accepted” prompt when the revision is not accepted because it is “Published” or in “Changes Planned”. These are now separate prompts, but I think usability is hindered on the balance by adding --never-land-revisions-in-state-changes-planned, --always-land-revisions-in-state-changes-planned, --never-land-revisions-in-state-published, --always-land-revisions-in-state-published, and so on.

I’d much rather arc land just didn’t prompt me to confirm I want to run the command I just typed, unless something is wrong. I’m not sure what the value is in this prompt.

The mapping between arc land X and a list of revisions is not self-evident, especially for newer users, and the behavior of arc land X has changed recently (from “land the change in X” to “land all changes in ancestors of X”). This prompt confirms the mapping between X and the list of revisions arc has identified as ancestors, and allows users who are familiar with the old behavior to learn the new behavior.