General
- libphutil/ has been removed. It is now part of Arcanist. Code which included libphutil should include arcanist instead. The libphutil/ directory can be removed.
- arc no longer exits with error code 77 to indicate invalid flags (this was arbitrary). See "Command Line Exit Codes".
Credentials and Global Flags
- Certificates (an old credential mechanism) are no longer supported. If you have a certificate, arc will behave like you do not have any credentials. Follow the login prompts to convert your certificate into a token and things will work correctly again.
- Removed arcanist_configuration configuration setting. This is a legacy/FB-only option which doesn't fit into the roadmap.
- Removed --conduit-version. We do capability testing, now.
- Removed --conduit-timeout. Not clear this ever really had any callers.
- Changing config at runtime:
- Removed --skip-arcconfig. Unclear what this was for. FB only option because someone created an invalid file at /home/.arcconfig?
- Removed --arcrc-file. Unclear that this had any real uses. Potentially open to restoring this or similar if there's an automation/bot use for it.
- Added --config-file. If this option is specified, the system and user configurations are skipped. This option may be specified more than once.
- --load-phutil-library has been renamed to --library.
- --config, --library, and --config-file must now appear before other workflow arguments. For example, arc --config x=y diff is valid, but arc diff --config x=y is not.
- Removed --conduit-uri. Instead, use --config phabricator.uri=....
- Removed --conduit-token. This might come back in some form (?), but you can use --config-file and point at a file with a "hosts" specification as a workaround. This may be broadly more convenient and easier to manage/deploy/version control.
Configuration
- The http.basicauth.user and http.basicauth.pass configuration options are no longer supported. These served a very niche use case. If you're a customer and need this, we can provide some similar capability via PhutilHTTPEngineExtension; file a support request.
- The https.blindly-trust-domains configuration option is no longer supported. It's 2018, legitimate SSL is completely free now, and you should configure it properly. If you "need" this, you can implement it via PhutilHTTPEngineExtension.
Workflow: Alias
- arc alias will no longer remove redundant flags. Previously, you could define arc draft -> arc diff --draft, then run arc draft --draft (which would naively resolve to arc diff --draft --draft) and have your duplicate flag cleaned up. This isn't safe in the general case and deviates from the explicit approach we generally prefer elsewhere. You can now define aliases that resolve to other aliases, creating alias chains.
Workflow: Diff
- arc diff --no-diff (an internal workflow) has been removed.
- arc diff --cache (which was a passthrough for arc lint --cache, which has also been removed, below) has been removed.
See T2543. The flags related to previewing a diff have changed:
Old Command | New Command |
---|---|
arc diff --only | arc diff --only --nolint --nounit |
arc diff --preview | arc diff --only |
arc diff --plan-changes | None |
None | arc diff --draft |
Previously, arc diff --preview and arc diff --only had similar behavior: they only created a diff (not a revision). --preview ran lint and unit tests, while --only did not. The new behavior is that --preview has been removed, and --only now runs lint and unit tests. You can recreate the old --only with arc alias, as --only --nounit --nolint or perhaps --only --nounit --nolint --browse. The old --preview is now --only. This rename is because the distinction between "draft" and "only" seems more clear than the distinction between "draft" and "preview".
- The --plan-changes flag has been removed. This is obsolete with drafts.
- The --draft flag has been added. This holds a revision in the new "Draft" state indefinitely, even after builds finish. Drafts are not automatically submitted to reviewers for review. The --draft flag serves as a sort of more powerful version of the --preview and --plan-changes flags.
Workflow: Lint
- arc.lint.engine has been removed. Configure linters with .arclint.
- The internal "async lint" flag has been removed. This was an ancient, Facebook-specific flag for extensions which is obsoleted by Harbormaster.
- arc lint --only-new has been removed. This relied on upstream lint support which was never fully developed.
- arc lint --cache has been removed.
- The arc.lint.cache config option has been removed.
- arc lint --only-changed has been removed. arc now detects whether you want warnings on all lines or only changed lines by examining the other arguments (paths, --everything, --lintall, and --rev).
Workflow: Unit
- arc.unit.engine has been removed. Configure unit tests with .arcunit.
Workflow: Help
- The arc help --full flag no longer exists. arc help is more verbose than it was before.
Workflow: Liberate
- arc liberate now liberates all libraries under the current working directory if given no arguments.
- The flags --library-name, --force-update, --remap, and --verify no longer exist.
- The flag --upgrade no longer exists. v1 libraries can no longer be upgraded to v2. If you have a library which is 5+ years old, remove all the __init__.php files and then just do a clean liberate on it, or give me a copy of the library and a bottle of scotch and I'll do it for you.
- The flag --all has been renamed to --clean (like make clean), for consistency with other commands and to disambiguate the new default behavior of rebuilding all libraries in subdirectories.
Workflow: Shell Complete
- arc shell-complete now installs itself.
- You should edit anywhere you stuck the old source path/to/arcanist/.../bash-completion.sh line (like ~/.profile) and remove it. Then, run arc shell-complete to install the updated hook.
- The behavior of completion has changed somewhat, but probably not in any meaningful ways.
- Support for ZSH has been removed. This was contributed and I wasn't able to figure out how to make it work on master, so I suspect it may never have worked for more than one person in 2012. I'm open to restoring support if you're a ZSH wizard and can convince me that your implementation is correct and supportable, and it works out of the box for me by magic. See https://github.com/phacility/arcanist/pull/11 for the heady days of an upstream with low contribution barriers.
Events / Extensions / Developer
- arc diff no longer dispatches ArcanistEventType::TYPE_REVISION_WILLCREATEREVISION if the server is sufficiently modern. (It no longer uses the datastructure this event received.)
- When any configuration source specifies an invalid library, we now prompt you to continue without it if stdin is a TTY. This allows you to fix config with arc set-config --local and similar. If stdin is not a TTY, we fatal. Previously, we would not prompt you to continue.
- ArcanistConfiguration no longer exists. Its hooks no longer exist, either:
- willRunWorkflow() no longer exists.
- didRunWorkflow() no longer exists.
- didAbortWorkflow() no longer exists.
- getCustomArgumentsForCommand() no longer exists.
- The Workflow->didParseArguments() callback no longer exists. Just do the parsing in executeWorkflow().
- ArcanistWorkflow->passedArguments no longer exists (no callers).
- ArcanistWorkflow->getPassedArguments() no longer exists (no callers).
- ArcanistWorkingCopyIdentity is now ArcanistWorkingCopy.
- The externals/includes/ directory is no longer supported.
- The events.listeners configuration option has been removed.