Arcanist flow for developers
Cloning the repository
The first time you get on a project, with an existing repository you have to clone it. All you have to do is git clone using the command provided in the repository page in Diffusion.
First time on a Phabricator
The first time you use Arcanist on a Phabricator server, you will be asked for a certificate installed with:
This command will ask you for your certificate and provide you will a link to get a new one, so don’t worry about that. The link will ask you to log-in if not already into Phabricator and will then display the certificate that you can copy/past.
You can now use Arcanist with this Phabricator server.
What do I have to do?
You can always go in Phabricator, in the Homepage, in the Maniphest application, or in a project board to see your assigned tasks.
Another more geeky alternative is:
This will list the tasks assigned to you in the current project (i.e. current git repository), it displays id, title, status, and priority: all you need to get started!
There are other options you can apply such as
--unassigned to see all unassigned tasks
--limit <max> to limit the number of tasks displayed.
Note that by default tasks are sorted by priority
You can open any Phabricator object (task, diff, file…) in your web browser if you have its id:
arc browse <object id>
I Got a task, now I want to start!
Setting the task in progress
First, you can tell other people you are working on the Task:
arc start <task id>
This also will help track your time spent on the it.
Tasks name start with a
T so it will be something like
arc start T20.
Note that the name is not case sensitive so
t20 will work too.
arc start with no arguments will list the tasks you have already started.
Creating the feature branch
To start a new branch, to work on your task:
# Let's be sure we are on the master branch arc feature master arc feature txx_do_something
This will create a branch called txx_do_something,
you can still use
git checkout master +
git checkout -b txx_do_something if you prefer, it’s the same.
arc feature has an alias called
arc branch. Same command!
How do I commit?
Chose what to commit
First you need to chose what you will commit:
git add ./path/to/file
If you have a lot of file you can use an interactive add:
git add -i
Note: If you want to add everything you may go to the next step directly.
Creating a diff
Once you selected what you wanted to commit, it’s time for some code-review using Diferential:
This will ask you if you want to commit (if you haven’t) then (if not provided) will ask you for some extra information
such as the reviewers (i.e who will review you code!).
If you wish to diff everything (add everything then diff) you can use
arc diff -a.
Important: When doing an
arc diff, it’s expected that everything will be added to a commit,
so be carefull with unstaged/untracked files, consider using
The main idea behind that is to be able to
arc land peacfully,
which will delete your current branch which is an issue if you have unstaged/untracked files.
Once this is done you will be given an URL for your diff where the code review will happen.
At this time you are no longer working on the task as you are waiting for the code review so:
arc stop Txx
You can also use
arc stop with no parameters to stop progress on all tasks.
Reviewer said my code is bad :(
To update your diff in order to fix the comments from the reviewer you can just do your modification and then use
arc diff again. This will automatically update your existing diff.
Don’t forget to
arc start Txx and
arc stop when you work on a task!
Going for another task
See what’s up
Arcanist provides a few commands to help you see what’s going on:
# Lists all your diff with their status (needs review, accepted...) arc list # List all your on-going feature (i.e branch) and their latest diff status arc feature
My diff is accepted!
Once your diff is accepted, you can land that feature into master:
## let's go on the right branch arc feature txx_do_something ## And merge/push arc land
This will merge the current branch on master, delete the feature branch and push master to the remote phabricator.
Closing your tasks
Once your feature is landed, you can close your task:
arc close txx
This will be done automatically if your commit message (during
arc diff) contains
Remember you can always do:
arc help arc <command> --help
To get plenty of information on what you can do!
blog comments powered by Disqus