
=head1 NAME


B<arc> - arcanist, a code review and revision management utility


=head1 SYNOPSIS


B<arc> I<command> [I<options>] [I<args>]
This help file provides a detailed command reference.


=head1 COMMAND REFERENCE



B<alias>

B<alias> I<command>

B<alias> I<command> I<target> -- [I<options>]

=over

Supports: cli
Create an alias from I<command> to I<target> (optionally, with
I<options>). For example:

  arc alias fpatch patch -- --force

...will create a new 'arc' command, 'arc fpatch', which invokes
'arc patch --force ...' when run. NOTE: use "--" before specifying
options!

If you start an alias with "!", the remainder of the alias will be
invoked as a shell command. For example, if you want to implement
'arc ls', you can do so like this:

  arc alias ls '!ls'

You can now run "arc ls" and it will behave like "ls". Of course, this
example is silly and would make your life worse.

You can not overwrite builtins, including 'alias' itself. The builtin
will always execute, even if it was added after your alias.

To remove an alias, run:

  arc alias fpatch

Without any arguments, 'arc alias' will list aliases.


=back

B<amend> [--revision I<revision_id>] [--show]

=over

Supports: git, hg
Amend the working copy, synchronizing the local commit message from
Differential.

Supported in Mercurial 2.2 and newer.


=over

=item I<--revision> I<revision_id>

=back


=over

Use the message from a specific revision. If you do not specify
a revision, arc will guess which revision is in the working
copy.

=back


=over

=item I<--show>

=back


=over

Show the amended commit message, without modifying the working
copy.

=back


=back

B<anoid>

=over

There's only one way to find out...


=back

B<backout>

=over

Reverts/backouts on a previous commit. Supports: git, hg

=over

Command is used like this: arc backout <commithash> | <diff revision>
Entering a differential revision will only work if there is only one commit
associated with the revision. This requires your working copy is up to date
and that the commit exists in the working copy.

=back


=back

B<bookmark> [I<options>]

B<bookmark> I<name> [I<start>]

=over

Supports: hg
Alias for arc feature.


=over

=item I<--by-status>

=back


=over

Sort branches by status instead of time.

=back


=over

=item I<--output> I<format>

=back


=over

With 'json', show features in machine-readable JSON format.

=back


=over

=item I<--view-all>

=back


=over

Include closed and abandoned revisions.

=back


=back

B<branch> [I<options>]

B<branch> I<name> [I<start>]

=over

Supports: git
Alias for arc feature.


=over

=item I<--by-status>

=back


=over

Sort branches by status instead of time.

=back


=over

=item I<--output> I<format>

=back


=over

With 'json', show features in machine-readable JSON format.

=back


=over

=item I<--view-all>

=back


=over

Include closed and abandoned revisions.

=back


=back

B<browse> [I<options>] I<path> ...

B<browse> [I<options>] I<object> ...

=over

Supports: git, hg, svn
Open a file or object (like a task or revision) in your web browser.

  $ arc browse README   # Open a file in Diffusion.
  $ arc browse T123     # View a task.
  $ arc browse HEAD     # View a symbolic commit.

Set the 'browser' value using 'arc set-config' to select a browser. If
no browser is set, the command will try to guess which browser to use.


=over

=item I<--branch> I<branch_name>

=back


=over

Default branch name to view on server. Defaults to "master".

=back


=over

=item I<--force>

=back


=over

Open arguments as paths, even if they do not exist in the
working copy.

=back


=back

B<call-conduit> I<method>

=over

Supports: http, https
Allows you to make a raw Conduit method call:

  - Run this command from a working directory.
  - Call parameters are REQUIRED and read as a JSON blob from stdin.
  - Results are written to stdout as a JSON blob.

This workflow is primarily useful for writing scripts which integrate
with Phabricator. Examples:

  $ echo '{}' | arc call-conduit conduit.ping
  $ echo '{"phid":"PHID-FILE-xxxx"}' | arc call-conduit file.download


=back

B<close> I<task_id> [I<options>]
  Close a task or otherwise update its status.


=over

=item I<--list-statuses>

=back


=over

Show available status options and exit.

=back


=over

=item I<--message> I<comment>, I<-m> I<comment>

=back


=over

Provide a comment with your status change.

=back


=over

=item I<--status> I<status>, I<-s> I<status>

=back


=over

Specify a new status. Valid status options can be seen with the
`list-statuses` argument.

=back



B<close-revision> [I<options>] I<revision>

=over

Supports: git, hg, svn
Close a revision which has been committed (svn) or pushed (git, hg).
You should not normally need to do this: arc commit (svn), arc amend
(git, hg), arc land (git, hg), or repository tracking on the master
remote repository should do it for you. However, if these mechanisms
have failed for some reason you can use this command to manually
change a revision status from "Accepted" to "Closed".


=over

=item I<--finalize>

=back


=over

Close only if the repository is untracked and the revision is
accepted. Continue even if the close can't happen. This is a
soft version of '' used by other workflows.

=back


=over

=item I<--quiet>

=back


=over

Do not print a success message.

=back


=back

B<commit> [--revision I<revision_id>] [--show]

=over

Supports: svn
Commit a revision which has been accepted by a reviewer.


=over

=item I<--revision> I<revision_id>

=back


=over

Commit a specific revision. If you do not specify a revision,
arc will look for committable revisions.

=back


=over

=item I<--show>

=back


=over

Show the command which would be issued, but do not actually
commit anything.

=back


=back

B<cover> [--rev I<revision>] [I<path> ...]

=over

Supports: svn, git, hg
Cover your... professional reputation. Show blame for the lines you
changed in your working copy (svn) or since some commit (hg, git).
This will take a minute because blame takes a minute, especially under
SVN.


=over

=item I<--rev> I<revision>

=back


=over

Supports: git, hg
Cover changes since a specific revision.

=back


=back

B<diff> [I<paths>] (svn)

B<diff> [I<commit>] (git, hg)

=over

Supports: git, svn, hg
Generate a Differential diff or revision from local changes.

Under git and mercurial, you can specify a commit (like I<HEAD^^^>
or I<master>) and Differential will generate a diff against the
merge base of that commit and your current working directory parent.

Under svn, you can choose to include only some of the modified files
in the working copy in the diff by specifying their paths. If you
omit paths, all changes are included in the diff.


=over

=item I<--add-all>, I<-a>

=back


=over

Automatically add all unstaged and uncommitted files to the
commit.

=back


=over

=item I<--advice>

=back


=over

Require excuse for lint advice in addition to lint warnings and
errors.

=back


=over

=item I<--allow-untracked>

=back


=over

Skip checks for untracked files in the working copy.

=back


=over

=item I<--amend-all>

=back


=over

When linting git repositories, amend HEAD with all patches
suggested by lint without prompting.

=back


=over

=item I<--amend-autofixes>

=back


=over

When linting git repositories, amend HEAD with autofix patches
suggested by lint without prompting.

=back


=over

=item I<--apply-patches>

=back


=over

Apply patches suggested by lint to the working copy without
prompting.

=back


=over

=item I<--base> I<rules>

=back


=over

Supports: git, hg
Additional rules for determining base revision.

=back


=over

=item I<--browse>

=back


=over

After creating a diff or revision, open it in a web browser.

=back


=over

=item I<--cache> I<bool>

=back

    0 to disable lint cache, 1 to enable (default).


=over

=item I<--cc> I<usernames>

=back


=over

When creating a revision, add CCs.

=back


=over

=item I<--coverage>

=back


=over

Always enable coverage information.

=back


=over

=item I<--create>

=back


=over

Always create a new revision.

=back


=over

=item I<--edit>

=back


=over

Supports: git, hg
When updating a revision under git, edit revision information
before updating.

=back


=over

=item I<--encoding> I<encoding>

=back


=over

Attempt to convert non UTF-8 hunks into specified encoding.

=back


=over

=item I<--excuse> I<excuse>

=back


=over

Provide a prepared in advance excuse for any lints/tests shall
they fail.

=back


=over

=item I<--head> I<commit>

=back


=over

Supports: git
Specify the end of the commit range. This disables many
Arcanist/Phabricator features which depend on having access to
the working copy.

=back


=over

=item I<--ignore-unsound-tests>

=back


=over

Ignore unsound test failures without prompting.

=back


=over

=item I<--json>

=back


=over

Emit machine-readable JSON. EXPERIMENTAL! Probably does not
work!

=back


=over

=item I<--less-context>

=back


=over

Normally, files are diffed with full context: the entire file
is sent to Differential so reviewers can 'show more' and see
it. If you are making changes to very large files with tens of
thousands of lines, this may not work well. With this flag, a
diff will be created that has only a few lines of context.

=back


=over

=item I<--lintall>

=back


=over

Raise all lint warnings, not just those on lines you changed.

=back


=over

=item I<--message> I<message>, I<-m> I<message>

=back


=over

When updating a revision, use the specified message instead of
prompting.

=back


=over

=item I<--message-file> I<file>, I<-F> I<file>

=back


=over

When creating a revision, read revision information from this
file.

=back


=over

=item I<--never-apply-patches>

=back


=over

Never apply patches suggested by lint.

=back


=over

=item I<--no-amend>

=back


=over

Never amend commits in the working copy with lint patches.

=back


=over

=item I<--no-coverage>

=back


=over

Always disable coverage information.

=back


=over

=item I<--no-diff>

=back


=over

Only run lint and unit tests. Intended for internal use.

=back


=over

=item I<--nolint>

=back


=over

Do not run lint.

=back


=over

=item I<--nounit>

=back


=over

Do not run unit tests.

=back


=over

=item I<--only>

=back


=over

Only generate a diff, without running lint, unit tests, or
other auxiliary steps. See also --preview.

=back


=over

=item I<--only-new> I<bool>

=back


=over

Display only lint messages not present in the original code.

=back


=over

=item I<--plan-changes>

=back


=over

Create or update a revision without requesting a code review.

=back


=over

=item I<--preview>

=back


=over

Instead of creating or updating a revision, only create a diff,
which you may later attach to a revision. This still runs lint
unit tests. See also --only.

=back


=over

=item I<--raw>

=back


=over

Read diff from stdin, not from the working copy. This disables
many Arcanist/Phabricator features which depend on having
access to the working copy.

=back


=over

=item I<--raw-command> I<command>

=back


=over

Generate diff by executing a specified command, not from the
working copy. This disables many Arcanist/Phabricator features
which depend on having access to the working copy.

=back


=over

=item I<--reviewers> I<usernames>

=back


=over

When creating a revision, add reviewers.

=back


=over

=item I<--skip-binaries>

=back


=over

Do not upload binaries (like images).

=back


=over

=item I<--skip-staging>

=back


=over

Do not copy changes to the staging area.

=back


=over

=item I<--uncommitted>

=back


=over

Supports: hg
Suppress warning about uncommitted changes.

=back


=over

=item I<--update> I<revision_id>

=back


=over

Always update a specific revision.

=back


=over

=item I<--use-commit-message> I<commit>, I<-C> I<commit>

=back


=over

Supports: git
Read revision information from a specific commit.

=back


=over

=item I<--verbatim>

=back


=over

Supports: hg, git
When creating a revision, try to use the working copy commit
message verbatim, without prompting to edit it. When updating a
revision, update some fields from the local commit message.

=back


=back

B<download> I<file> [--as I<name>] [--show]

=over

Supports: filesystems
Download a file to local disk, e.g.:

  $ arc download F33              # Download file 'F33'


=over

=item I<--as> I<name>

=back


=over

Save the file with a specific name rather than the default.

=back


=over

=item I<--show>

=back


=over

Write file to stdout instead of to disk.

=back


=back

B<export> [I<paths>] I<format> (svn)

B<export> [I<commit_range>] I<format> (git, hg)

B<export> I<--revision> I<revision_id> I<format>

B<export> I<--diff> I<diff_id> I<format>

=over

Supports: svn, git, hg
Export the local changeset (or a Differential changeset) to a file,
in some I<format>: git diff (I<--git>), unified diff
(I<--unified>), or arc bundle (I<--arcbundle> I<path>) format.


=over

=item I<--arcbundle> I<file>

=back


=over

Export change as an arc bundle. This format can represent all
changes. These bundles can be applied with 'arc patch'.

=back


=over

=item I<--diff> I<diff_id>

=back


=over

Instead of exporting changes from the working copy, export them
from a Differential diff.

=back


=over

=item I<--encoding> I<encoding>

=back


=over

Attempt to convert non UTF-8 patch into specified encoding.

=back


=over

=item I<--git>

=back


=over

Export change as a git patch. This format is more complete than
unified, but less complete than arc bundles. These patches can
be applied with 'git apply' or 'arc patch'.

=back


=over

=item I<--revision> I<revision_id>

=back


=over

Instead of exporting changes from the working copy, export them
from a Differential revision.

=back


=over

=item I<--unified>

=back


=over

Export change as a unified patch. This format is less complete
than git patches or arc bundles. These patches can be applied
with 'patch' or 'arc patch'.

=back


=back

B<feature> [I<options>]

B<feature> I<name> [I<start>]

=over

Supports: git, hg
A wrapper on 'git branch' or 'hg bookmark'.

Without I<name>, it lists the available branches and their revision
status.

With I<name>, it creates or checks out a branch. If the branch
I<name> doesn't exist and is in format D123 then the branch of
revision D123 is checked out. Use I<start> to specify where the new
branch will start. Use 'arc.feature.start.default' to set the default
feature start location.


=over

=item I<--by-status>

=back


=over

Sort branches by status instead of time.

=back


=over

=item I<--output> I<format>

=back


=over

With 'json', show features in machine-readable JSON format.

=back


=over

=item I<--view-all>

=back


=over

Include closed and abandoned revisions.

=back


=back

B<flag> [I<object> ...]

B<flag> I<object> --clear

B<flag> I<object> [--edit] [--color I<color>] [--note I<note>]

=over

In the first form, list objects you've flagged. You can provide the
names of one or more objects (Maniphest tasks T[7m#, Differential
revisions D[m#, Diffusion references rXXX???, or PHIDs PHID-XXX-???)
to print only flags for those objects.

In the second form, clear an existing flag on one object.

In the third form, create or update a flag on one object. Color
defaults to blue and note to empty, but if you omit both you must
pass --edit.


=over

=item I<--clear>

=back


=over

Delete the flag on an object.

=back


=over

=item I<--color> I<color>

=back


=over

Set the color of a flag.

=back


=over

=item I<--edit>

=back


=over

Edit the flag on an object.

=back


=over

=item I<--note> I<note>

=back


=over

Set the note on a flag.

=back


=back

B<get-config> [I<options>] -- [I<name> ...]

=over

Supports: cli
Reads an arc configuration option. With no argument, reads all
options.

With I<--verbose>, shows detailed information about one or more
options.


=over

=item I<--verbose>

=back


=over

Show detailed information about options.

=back


=back

B<help> [I<command>]

B<help> --full

=over

Supports: english
Shows this help. With I<command>, shows help about a specific
command.


=over

=item I<--full>

=back


=over

Print detailed information about each command.

=back


=back

B<install-certificate> [uri]

=over

Supports: http, https
Installs Conduit credentials into your ~/.arcrc for the given install
of Phabricator. You need to do this before you can use 'arc', as it
enables 'arc' to link your command-line activity with your account on
the web. Run this command from within a project directory to install
that project's certificate, or specify an explicit URI (like
"https://phabricator.example.com/").


=back

B<land> [I<options>] [I<ref>]

=over

Supports: git, hg

Publish an accepted revision after review. This command is the last
step in the standard Differential pre-publish code review workflow.

This command merges and pushes changes associated with an accepted
revision that are currently sitting in I<ref>, which is usually the
name of a local branch. Without I<ref>, the current working copy
state will be used.

Under Git: branches, tags, and arbitrary commits (detached HEADs)
may be landed.

Under Mercurial: branches and bookmarks may be landed, but only
onto a target of the same type. See T3855.

The workflow selects a target branch to land onto and a remote where
the change will be pushed to.

A target branch is selected by examining these sources in order:

  - the B<--onto> flag;
  - the upstream of the current branch, recursively (Git only);
  - the I<arc.land.onto.default> configuration setting;
  - or by falling back to a standard default:
    - "master" in Git;
    - "default" in Mercurial.

A remote is selected by examining these sources in order:

  - the B<--remote> flag;
  - the upstream of the current branch, recursively (Git only);
  - or by falling back to a standard default:
    - "origin" in Git;
    - the default remote in Mercurial.

After selecting a target branch and a remote, the commits which will
be landed are printed.

With B<--preview>, execution stops here, before the change is
merged.

The change is merged with the changes in the target branch,
following these rules:

In repositories with mutable history or with B<--squash>, this will
perform a squash merge (the entire branch will be represented as one
commit after the merge).

In repositories with immutable history or with B<--merge>, this will
perform a strict merge (a merge commit will always be created, and
local commits will be preserved).

The resulting commit will be given an up-to-date commit message
describing the final state of the revision in Differential.

In Git, the merge occurs in a detached HEAD. The local branch
reference (if one exists) is not updated yet.

With B<--hold>, execution stops here, before the change is pushed.

The change is pushed into the remote.

Consulting mystical sources of power, the workflow makes a guess
about what state you wanted to end up in after the process finishes
and the working copy is put into that state.

The branch which was landed is deleted, unless the B<--keep-branch>
flag was passed or the landing branch is the same as the target
branch.



=over

=item I<--delete-remote>

=back


=over

Delete the feature branch in the remote after landing it.

=back


=over

=item I<--hold>

=back


=over

Prepare the change to be pushed, but do not actually push it.

=back


=over

=item I<--keep-branch>

=back


=over

Keep the feature branch after pushing changes to the remote (by
default, it is deleted).

=back


=over

=item I<--merge>

=back


=over

Supports: git
Perform a --no-ff merge, not a --squash merge. If the project
is marked as having an immutable history, this is the default
behavior.

=back


=over

=item I<--onto> I<master>

=back


=over

Land feature branch onto a branch other than the default
('master' in git, 'default' in hg). You can change the default
by setting 'arc.land.onto.default' with `arc set-config` or for
the entire project in .arcconfig.

=back


=over

=item I<--preview>

=back


=over

Prints the commits that would be landed. Does not actually
modify or land the commits.

=back


=over

=item I<--remote> I<origin>

=back


=over

Push to a remote other than the default ('origin' in git).

=back


=over

=item I<--revision> I<id>

=back


=over

Use the message from a specific revision, rather than inferring
the revision based on branch content.

=back


=over

=item I<--squash>

=back


=over

Perform a --squash merge, not a --no-ff merge. If the project
is marked as having a mutable history, this is the default
behavior.

=back


=over

=item I<--update-with-merge>

=back


=over

Supports: git
When updating the feature branch, use merge instead of rebase.
This is the default behavior. Setting arc.land.update.default
to 'merge' can also be used to make this the default.

=back


=over

=item I<--update-with-rebase>

=back


=over

Supports: git
When updating the feature branch, use rebase instead of merge.
This might make things work better in some cases. Set
arc.land.update.default to 'rebase' to make this the default.

=back


=back

B<liberate> [I<path>]

=over

Supports: libphutil
Create or update a libphutil library, generating required metadata
files like I<init>.php.


=over

=item I<--all>

=back


=over

Drop the module cache before liberating. This will completely
reanalyze the entire library. Thorough, but slow!

=back


=over

=item I<--force-update>

=back


=over

Force the library map to be updated, even in the presence of
lint errors.

=back


=over

=item I<--library-name> I<name>

=back


=over

Use a flag for library name rather than awaiting user input.

=back


=back

B<lint> [I<options>] [I<paths>]

B<lint> [I<options>] --rev [I<rev>]

=over

Supports: git, svn, hg
Run static analysis on changes to check for mistakes. If no files
are specified, lint will be run on all files which have been modified.


=over

=item I<--amend-all>

=back


=over

When linting git repositories, amend HEAD with all patches
suggested by lint without prompting.

=back


=over

=item I<--amend-autofixes>

=back


=over

When linting git repositories, amend HEAD with autofix patches
suggested by lint without prompting.

=back


=over

=item I<--apply-patches>

=back


=over

Apply patches suggested by lint to the working copy without
prompting.

=back


=over

=item I<--cache> I<bool>

=back

    0 to disable cache, 1 to enable. The default value is
    determined by 'arc.lint.cache' in configuration, which defaults
    to off. See notes in 'arc.lint.cache'.


=over

=item I<--engine> I<classname>

=back


=over

Override configured lint engine for this project.

=back


=over

=item I<--everything>

=back


=over

Lint all files in the project.

=back


=over

=item I<--lintall>

=back


=over

Show all lint warnings, not just those on changed lines. When
paths are specified, this is the default behavior.

=back


=over

=item I<--never-apply-patches>

=back


=over

Never apply patches suggested by lint.

=back


=over

=item I<--only-changed>

=back


=over

Show lint warnings just on changed lines. When no paths are
specified, this is the default. This differs from only-new in
cases where line modifications introduce lint on other
unmodified lines.

=back


=over

=item I<--only-new> I<bool>

=back


=over

Supports: git, hg
Display only messages not present in the original code.

=back


=over

=item I<--outfile> I<path>

=back


=over

Output the linter results to a file. Defaults to stdout.

=back


=over

=item I<--output> I<format>

=back


=over

With 'summary', show lint warnings in a more compact format.
With 'json', show lint warnings in machine-readable JSON
format. With 'none', show no lint warnings. With 'compiler',
show lint warnings in suitable for your editor. With 'xml',
show lint warnings in the Checkstyle XML format.

=back


=over

=item I<--rev> I<revision>

=back


=over

Supports: git, hg
Lint changes since a specific revision.

=back


=over

=item I<--severity> I<string>

=back


=over

Set minimum message severity. One of: 'advice', 'autofix',
'warning', 'error', 'disabled'. Defaults to 'advice'.

=back


=back

B<linters> [I<options>] [I<name>]

=over

Supports: cli
List the available and configured linters, with information about
what they do and which versions are installed.

if I<name> is provided, the linter with that name will be displayed.


=over

=item I<--search> I<search>

=back


=over

Search for linters. Search is case-insensitive, and is
performedagainst name and description of each linter.

=back


=over

=item I<--verbose>

=back


=over

Show detailed information, including options.

=back


=back

B<list>

=over

Supports: git, svn, hg
List your open Differential revisions.


=back

B<paste> [--title I<title>] [--lang I<language>] [--json]

B<paste> I<id> [--json]

=over

Supports: text
Share and grab text using the Paste application. To create a paste,
use stdin to provide the text:

  $ cat list_of_ducks.txt | arc paste

To retrieve a paste, specify the paste ID:

  $ arc paste P123


=over

=item I<--json>

=back


=over

Output in JSON format.

=back


=over

=item I<--lang> I<language>

=back


=over

Language for syntax highlighting.

=back


=over

=item I<--title> I<title>

=back


=over

Title for the paste.

=back


=back

B<patch> I<D12345>

B<patch> I<--revision> I<revision_id>

B<patch> I<--diff> I<diff_id>

B<patch> I<--patch> I<file>

B<patch> I<--arcbundle> I<bundlefile>

=over

Supports: git, svn, hg
Apply the changes in a Differential revision, patchfile, or arc
bundle to the working copy.


=over

=item I<--arcbundle> I<bundlefile>

=back


=over

Apply changes from an arc bundle generated with 'arc export'.

=back


=over

=item I<--diff> I<diff_id>

=back


=over

Apply changes from a Differential diff. Normally you want to
use --revision to get the most recent changes, but you can
specifically apply an out-of-date diff or a diff which was
never attached to a revision by using this flag.

=back


=over

=item I<--encoding> I<encoding>

=back


=over

Attempt to convert non UTF-8 patch into specified encoding.

=back


=over

=item I<--force>

=back


=over

Do not run any sanity checks.

=back


=over

=item I<--nobranch>

=back


=over

Supports: git, hg
Normally, a new branch (git) or bookmark (hg) is created and
then the patch is applied and committed in the new
branch/bookmark. This flag cherry-picks the resultant commit
onto the original branch and deletes the temporary branch.

=back


=over

=item I<--nocommit>

=back


=over

Supports: git, hg
Normally under git/hg, if the patch is successful, the changes
are committed to the working copy. This flag prevents the
commit.

=back


=over

=item I<--patch> I<patchfile>

=back


=over

Apply changes from a git patchfile or unified patchfile.

=back


=over

=item I<--revision> I<revision_id>

=back


=over

Apply changes from a Differential revision, using the most
recent diff that has been attached to it. You can run 'arc
patch D12345' as a shorthand.

=back


=over

=item I<--skip-dependencies>

=back


=over

Supports: git, hg
Normally, if a patch has dependencies that are not present in
the working copy, arc tries to apply them as well. This flag
prevents such work.

=back


=over

=item I<--update>

=back


=over

Supports: git, svn, hg
Update the local working copy before applying the patch.

=back


=back

B<revert>
Please use arc backout instead



B<set-config> [I<options>] -- I<name> I<value>

=over

Supports: cli
Sets an arc configuration option.

Options are either user (apply to all arc commands you invoke
from the current user) or local (apply only to the current working
copy). By default, user configuration is written. Use I<--local>
to write local configuration.

User values are written to '~/.arcrc' on Linux and Mac OS X, and an
undisclosed location on Windows. Local values are written to an arc
directory under either .git, .hg, or .svn as appropriate.


=over

=item I<--local>

=back


=over

Set a local config value instead of a user one.

=back


=back

B<shell-complete> I<--current> I<N> -- [I<argv>]

=over

Supports: bash, etc.
Implements shell completion. To use shell completion, source the
appropriate script from 'resources/shell/' in your .shellrc.


=over

=item I<--current> I<cursor_position>

=back


=over

Current term in the argument list being completed.

=back


=back

B<start> I<object>

=over

Start tracking work in Phrequent.


=back

B<stop> [--note I<note>] [I<objects>]

=over

Stop tracking work in Phrequent.


=over

=item I<--note> I<note>

=back


=over

A note to attach to the tracked time.

=back


=back

B<tasks> [I<options>]
  View all assigned tasks.


=over

=item I<--limit> I<n>

=back


=over

Limit the amount of tasks outputted, default is all.

=back


=over

=item I<--order> I<task_order>

=back


=over

Arrange tasks based on priority, created, or modified, default
is priority.

=back


=over

=item I<--owner> I<username>

=back


=over

Only show tasks assigned to the given username, also accepts
@all to show all, default is you.

=back


=over

=item I<--status> I<task_status>

=back


=over

Show tasks that are open or closed, default is open.

=back


=over

=item I<--unassigned>

=back


=over

Only show tasks that are not assigned (upforgrabs).

=back



B<time>

=over

Show what you're currently tracking in Phrequent.


=back

B<todo> I<summary> [I<options>]
  Quickly create a task for yourself.


=over

=item I<--browse>

=back


=over

After creating the task, open it in a web browser.

=back


=over

=item I<--cc> I<cc>, I<-C> I<cc>

=back


=over

Other users to CC on the new task.

=back


=over

=item I<--project> I<project>

=back


=over

Projects to assign to the task.

=back



B<unit> [I<options>] [I<paths>]

B<unit> [I<options>] --rev [I<rev>]

=over

Supports: git, svn, hg
Run unit tests that cover specified paths. If no paths are specified,
unit tests covering all modified files will be run.


=over

=item I<--coverage>

=back


=over

Always enable coverage information.

=back


=over

=item I<--detailed-coverage>

=back


=over

Show a detailed coverage report on the CLI. Implies --coverage.

=back


=over

=item I<--engine> I<classname>

=back


=over

Override configured unit engine for this project.

=back


=over

=item I<--everything>

=back


=over

Run every test.

=back


=over

=item I<--json>

=back


=over

Report results in JSON format.

=back


=over

=item I<--no-coverage>

=back


=over

Always disable coverage information.

=back


=over

=item I<--output> I<format>

=back


=over

With 'full', show full pretty report (Default). With 'json',
report results in JSON format. With 'ugly', use uglier (but
more efficient) JSON formatting. With 'none', don't print
results.

=back


=over

=item I<--rev> I<revision>

=back


=over

Supports: git, hg
Run unit tests covering changes since a specific revision.

=back


=over

=item I<--target> I<phid>

=back

    (PROTOTYPE) Record a copy of the test results on the specified

=over

Harbormaster build target.

=back


=over

=item I<--ugly>

=back


=over

With --json, use uglier (but more efficient) formatting.

=back


=back

B<upgrade>

=over

Supports: cli
Upgrade arcanist and libphutil to the latest versions.


=back

B<upload> I<file> [I<file> ...] [--json]

=over

Supports: filesystems
Upload a file from local disk.


=over

=item I<--json>

=back


=over

Output upload information in JSON format.

=back


=over

=item I<--temporary>

=back


=over

Mark the file as temporary. Temporary files will be deleted
automatically after 24 hours.

=back


=back

B<version> [I<options>]

=over

Supports: cli
Shows the current version of arcanist.


=back

B<which> [options] (svn)

B<which> [options] [I<commit>] (hg, git)

=over

Supports: svn, git, hg
Shows which repository the current working copy corresponds to,
which commits 'arc diff' will select, and which revision is in
the working copy (or which revisions, if more than one matches).


=over

=item I<--any-status>

=back


=over

Show committed and abandoned revisions.

=back


=over

=item I<--base> I<rules>

=back


=over

Supports: git, hg
Additional rules for determining base revision.

=back


=over

=item I<--head> I<commit>

=back


=over

Supports: git
Specify the end of the commit range to select.

=back


=over

=item I<--show-base>

=back


=over

Supports: git, hg
Print base commit only and exit.

=back


=back

=head1 OPTION REFERENCE



=over

=item I<--trace>

=back

Debugging command. Shows underlying commands as they are executed,
and full stack traces when exceptions are thrown.


=over

=item I<--no-ansi>

=back

Output in plain ASCII text only, without color or style.


=over

=item I<--ansi>

=back

Use formatting even in environments which probably don't support it.
Example: arc --ansi unit | less -r


=over

=item I<--load-phutil-library=/path/to/library>

=back

Ignore libraries listed in .arcconfig and explicitly load specified
libraries instead. Mostly useful for Arcanist development.


=over

=item I<--conduit-uri> I<uri>

=back

Ignore configured Conduit URI and use an explicit one instead. Mostly
useful for Arcanist development.


=over

=item I<--conduit-token> I<token>

=back

Ignore configured credentials and use an explicit API token instead.


=over

=item I<--conduit-version> I<version>

=back

Ignore software version and claim to be running some other version
instead. Mostly useful for Arcanist development. May cause bad things
to happen.


=over

=item I<--conduit-timeout> I<timeout>

=back

Override the default Conduit timeout. Specified in seconds.


=over

=item I<--config> I<key=value>

=back

Specify a runtime configuration value. This will take precedence
over static values, and only affect the current arcanist invocation.


=over

=item I<--skip-arcconfig>

=back

Skip the working copy configuration file


=over

=item I<--arcrc-file> I<filename>

=back

Use provided file instead of ~/.arcrc.
