NAME
- arc - arcanist, a code review and revision management utility
SYNOPSIS
- arc command [options] [args] This help file provides a detailed command
reference.
COMMAND REFERENCE
- alias alias command alias command target -- [options]
- Supports: cli Create an alias from command to target (optionally, with
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.
- amend [--revision revision_id] [--show]
- Supports: git, hg Amend the working copy, synchronizing the local commit
message from Differential.
- Supported in Mercurial 2.2 and newer.
--revision revision_id
- Use the message from a specific revision. If you do not specify a
revision, arc will guess which revision is in the working copy.
--show
- Show the amended commit message, without modifying the working copy.
- anoid
- There's only one way to find out...
- backout
- Reverts/backouts on a previous commit. Supports: git, hg
- 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.
- bookmark [options] bookmark name [start]
- Supports: hg Alias for arc feature.
--by-status
- Sort branches by status instead of time.
--output format
- With 'json', show features in machine-readable JSON format.
--view-all
- Include closed and abandoned revisions.
- branch [options] branch name [start]
- Supports: git Alias for arc feature.
--by-status
- Sort branches by status instead of time.
--output format
- With 'json', show features in machine-readable JSON format.
--view-all
- Include closed and abandoned revisions.
- browse [options] path ... browse [options] object ...
- 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.
--branch branch_name
- Default branch name to view on server. Defaults to
"master".
--force
- Open arguments as paths, even if they do not exist in the working
copy.
- call-conduit method
- 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
- close task_id [options]
- Close a task or otherwise update its status.
--list-statuses
- Show available status options and exit.
--message comment, -m comment
- Provide a comment with your status change.
--status status, -s status
- Specify a new status. Valid status options can be seen with the
`list-statuses` argument.
- close-revision [options] revision
- 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".
--finalize
- 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.
--quiet
- Do not print a success message.
- commit [--revision revision_id] [--show]
- Supports: svn Commit a revision which has been accepted by a
reviewer.
--revision revision_id
- Commit a specific revision. If you do not specify a revision, arc will
look for committable revisions.
--show
- Show the command which would be issued, but do not actually commit
anything.
- cover [--rev revision] [path ...]
- 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.
--rev revision
- Supports: git, hg Cover changes since a specific revision.
- diff [paths] (svn) diff [commit] (git, hg)
- Supports: git, svn, hg Generate a Differential diff or revision from local
changes.
- Under git and mercurial, you can specify a commit (like HEAD^^^ or 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.
--add-all, -a
- Automatically add all unstaged and uncommitted files to the commit.
--advice
- Require excuse for lint advice in addition to lint warnings and
errors.
--allow-untracked
- Skip checks for untracked files in the working copy.
--amend-all
- When linting git repositories, amend HEAD with all patches suggested by
lint without prompting.
--amend-autofixes
- When linting git repositories, amend HEAD with autofix patches suggested
by lint without prompting.
--apply-patches
- Apply patches suggested by lint to the working copy without
prompting.
--base rules
- Supports: git, hg Additional rules for determining base revision.
--browse
- After creating a diff or revision, open it in a web browser.
--cache bool
- 0 to disable lint cache, 1 to enable (default).
--cc usernames
- When creating a revision, add CCs.
--coverage
- Always enable coverage information.
--create
- Always create a new revision.
--edit
- Supports: git, hg When updating a revision under git, edit revision
information before updating.
--encoding encoding
- Attempt to convert non UTF-8 hunks into specified encoding.
--excuse excuse
- Provide a prepared in advance excuse for any lints/tests shall they
fail.
--head commit
- Supports: git Specify the end of the commit range. This disables many
Arcanist/Phabricator features which depend on having access to the working
copy.
--ignore-unsound-tests
- Ignore unsound test failures without prompting.
--json
- Emit machine-readable JSON. EXPERIMENTAL! Probably does not work!
--less-context
- 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.
--lintall
- Raise all lint warnings, not just those on lines you changed.
--message message, -m message
- When updating a revision, use the specified message instead of
prompting.
--message-file file, -F file
- When creating a revision, read revision information from this file.
--never-apply-patches
- Never apply patches suggested by lint.
--no-amend
- Never amend commits in the working copy with lint patches.
--no-coverage
- Always disable coverage information.
--no-diff
- Only run lint and unit tests. Intended for internal use.
--nolint
- Do not run lint.
--nounit
- Do not run unit tests.
--only
- Only generate a diff, without running lint, unit tests, or other auxiliary
steps. See also --preview.
--only-new bool
- Display only lint messages not present in the original code.
--plan-changes
- Create or update a revision without requesting a code review.
--preview
- 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.
--raw
- Read diff from stdin, not from the working copy. This disables many
Arcanist/Phabricator features which depend on having access to the working
copy.
--raw-command command
- 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.
--reviewers usernames
- When creating a revision, add reviewers.
--skip-binaries
- Do not upload binaries (like images).
--skip-staging
- Do not copy changes to the staging area.
--uncommitted
- Supports: hg Suppress warning about uncommitted changes.
--update revision_id
- Always update a specific revision.
--use-commit-message commit, -C commit
- Supports: git Read revision information from a specific commit.
--verbatim
- 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.
- download file [--as name] [--show]
- Supports: filesystems Download a file to local disk, e.g.:
- $ arc download F33 # Download file 'F33'
--as name
- Save the file with a specific name rather than the default.
--show
- Write file to stdout instead of to disk.
- export [paths] format (svn) export [commit_range] format (git, hg) export
--revision revision_id format export --diff diff_id
format
- Supports: svn, git, hg Export the local changeset (or a Differential
changeset) to a file, in some format: git diff (--git), unified
diff (--unified), or arc bundle (--arcbundle path)
format.
--arcbundle file
- Export change as an arc bundle. This format can represent all changes.
These bundles can be applied with 'arc patch'.
--diff diff_id
- Instead of exporting changes from the working copy, export them from a
Differential diff.
--encoding encoding
- Attempt to convert non UTF-8 patch into specified encoding.
--git
- 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'.
--revision revision_id
- Instead of exporting changes from the working copy, export them from a
Differential revision.
--unified
- 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'.
- feature [options] feature name [start]
- Supports: git, hg A wrapper on 'git branch' or 'hg bookmark'.
- Without name, it lists the available branches and their revision
status.
- With name, it creates or checks out a branch. If the branch name doesn't
exist and is in format D123 then the branch of revision D123 is checked
out. Use start to specify where the new branch will start. Use
'arc.feature.start.default' to set the default feature start
location.
--by-status
- Sort branches by status instead of time.
--output format
- With 'json', show features in machine-readable JSON format.
--view-all
- Include closed and abandoned revisions.
- flag [object ...] flag object --clear flag object [--edit] [--color
color] [--note note]
- In the first form, list objects you've flagged. You can provide the names
of one or more objects (Maniphest tasks T#, Differential revisions D#,
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.
--clear
- Delete the flag on an object.
--color color
- Set the color of a flag.
--edit
- Edit the flag on an object.
--note note
- Set the note on a flag.
- get-config [options] -- [name ...]
- Supports: cli Reads an arc configuration option. With no argument, reads
all options.
- With --verbose, shows detailed information about one or more
options.
--verbose
- Show detailed information about options.
- help [command] help --full
- Supports: english Shows this help. With command, shows help about a
specific command.
--full
- Print detailed information about each command.
- install-certificate [uri]
- 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/").
- land [options] [ref]
- 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 ref, which is usually the name of a
local branch. Without 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 --onto flag; - the upstream of the current branch,
recursively (Git only); - the 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 --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 --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 --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 --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 --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 --keep-branch
flag was passed or the landing branch is the same as the target
branch.
--delete-remote
- Delete the feature branch in the remote after landing it.
--hold
- Prepare the change to be pushed, but do not actually push it.
--keep-branch
- Keep the feature branch after pushing changes to the remote (by default,
it is deleted).
--merge
- 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.
--onto master
- 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.
--preview
- Prints the commits that would be landed. Does not actually modify or land
the commits.
--remote origin
- Push to a remote other than the default ('origin' in git).
--revision id
- Use the message from a specific revision, rather than inferring the
revision based on branch content.
--squash
- Perform a --squash merge, not a --no-ff merge. If the
project is marked as having a mutable history, this is the default
behavior.
--update-with-merge
- 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.
--update-with-rebase
- 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.
- liberate [path]
- Supports: libphutil Create or update a libphutil library, generating
required metadata files like init.php.
--all
- Drop the module cache before liberating. This will completely reanalyze
the entire library. Thorough, but slow!
--force-update
- Force the library map to be updated, even in the presence of lint
errors.
--library-name name
- Use a flag for library name rather than awaiting user input.
- lint [options] [paths] lint [options] --rev [rev]
- 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.
--amend-all
- When linting git repositories, amend HEAD with all patches suggested by
lint without prompting.
--amend-autofixes
- When linting git repositories, amend HEAD with autofix patches suggested
by lint without prompting.
--apply-patches
- Apply patches suggested by lint to the working copy without
prompting.
--cache bool
- 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'.
--engine classname
- Override configured lint engine for this project.
--everything
- Lint all files in the project.
--lintall
- Show all lint warnings, not just those on changed lines. When paths are
specified, this is the default behavior.
--never-apply-patches
- Never apply patches suggested by lint.
--only-changed
- 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.
--only-new bool
- Supports: git, hg Display only messages not present in the original
code.
--outfile path
- Output the linter results to a file. Defaults to stdout.
--output format
- 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.
--rev revision
- Supports: git, hg Lint changes since a specific revision.
--severity string
- Set minimum message severity. One of: 'advice', 'autofix', 'warning',
'error', 'disabled'. Defaults to 'advice'.
- linters [options] [name]
- Supports: cli List the available and configured linters, with information
about what they do and which versions are installed.
- if name is provided, the linter with that name will be displayed.
--search search
- Search for linters. Search is case-insensitive, and is performedagainst
name and description of each linter.
--verbose
- Show detailed information, including options.
- list
- Supports: git, svn, hg List your open Differential revisions.
- paste [--title title] [--lang language] [--json] paste id [--json]
- 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
--json
- Output in JSON format.
--lang language
- Language for syntax highlighting.
--title title
- Title for the paste.
- patch D12345 patch --revision revision_id patch --diff
diff_id patch --patch file patch --arcbundle bundlefile
- Supports: git, svn, hg Apply the changes in a Differential revision,
patchfile, or arc bundle to the working copy.
--arcbundle bundlefile
- Apply changes from an arc bundle generated with 'arc export'.
--diff diff_id
- 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.
--encoding encoding
- Attempt to convert non UTF-8 patch into specified encoding.
--force
- Do not run any sanity checks.
--nobranch
- 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.
--nocommit
- 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.
--patch patchfile
- Apply changes from a git patchfile or unified patchfile.
--revision revision_id
- 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.
--skip-dependencies
- 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.
--update
- Supports: git, svn, hg Update the local working copy before applying the
patch.
- revert
- Please use arc backout instead
- set-config [options] -- name value
- 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 --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.
--local
- Set a local config value instead of a user one.
- shell-complete --current N -- [argv]
- Supports: bash, etc. Implements shell completion. To use shell completion,
source the appropriate script from 'resources/shell/' in your
.shellrc.
--current cursor_position
- Current term in the argument list being completed.
- start object
- Start tracking work in Phrequent.
- stop [--note note] [objects]
- Start tracking work in Phrequent.
--note note
- A note to attach to the tracked time.
- tasks [options]
- View all assigned tasks.
--limit n
- Limit the amount of tasks outputted, default is all.
--order task_order
- Arrange tasks based on priority, created, or modified, default is
priority.
--owner username
- Only show tasks assigned to the given username, also accepts @all to show
all, default is you.
--status task_status
- Show tasks that are open or closed, default is open.
--unassigned
- Only show tasks that are not assigned (upforgrabs).
- time
- Show what you're currently tracking in Phrequent.
- todo summary [options]
- Quickly create a task for yourself.
--browse
- After creating the task, open it in a web browser.
--cc cc, -C cc
- Other users to CC on the new task.
--project project
- Projects to assign to the task.
- unit [options] [paths] unit [options] --rev [rev]
- 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.
--coverage
- Always enable coverage information.
--detailed-coverage
- Show a detailed coverage report on the CLI. Implies
--coverage.
--engine classname
- Override configured unit engine for this project.
--everything
- Run every test.
--json
- Report results in JSON format.
--no-coverage
- Always disable coverage information.
--output format
- 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.
--rev revision
- Supports: git, hg Run unit tests covering changes since a specific
revision.
--target phid
- (PROTOTYPE) Record a copy of the test results on the specified
Harbormaster build target.
--ugly
- With --json, use uglier (but more efficient) formatting.
- upgrade
- Supports: cli Upgrade arcanist and libphutil to the latest versions.
- upload file [file ...] [--json]
- Supports: filesystems Upload a file from local disk.
--json
- Output upload information in JSON format.
--temporary
- Mark the file as temporary. Temporary files will be deleted automatically
after 24 hours.
- version [options]
- Supports: cli Shows the current version of arcanist.
- which [options] (svn) which [options] [commit] (hg, git)
- 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).
--any-status
- Show committed and abandoned revisions.
--base rules
- Supports: git, hg Additional rules for determining base revision.
--head commit
- Supports: git Specify the end of the commit range to select.
--show-base
- Supports: git, hg Print base commit only and exit.
OPTION REFERENCE
--trace
- Debugging command. Shows underlying commands as they are executed, and
full stack traces when exceptions are thrown.
--no-ansi
- Output in plain ASCII text only, without color or style.
--ansi
- Use formatting even in environments which probably don't support it.
Example: arc --ansi unit | less -r
--load-phutil-library=/path/to/library
- Ignore libraries listed in .arcconfig and explicitly load specified
libraries instead. Mostly useful for Arcanist development.
--conduit-uri uri
- Ignore configured Conduit URI and use an explicit one instead. Mostly
useful for Arcanist development.
--conduit-token token
- Ignore configured credentials and use an explicit API token instead.
--conduit-version version
- Ignore software version and claim to be running some other version
instead. Mostly useful for Arcanist development. May cause bad things to
happen.
--conduit-timeout timeout
- Override the default Conduit timeout. Specified in seconds.
--config key=value
- Specify a runtime configuration value. This will take precedence over
static values, and only affect the current arcanist invocation.
--skip-arcconfig
- Skip the working copy configuration file
--arcrc-file filename
- Use provided file instead of ~/.arcrc.
libphutil 398e6a2d2de620e023e789675d1c94a3df00cd32 (6 Sep
2015)