Page MenuHomePhabricator

Set up arcyd to create differential revisions with `git push` (code review without arcanist)
Closed, DeclinedPublic


Arcyd will allow us to use Differential for code review without requiring the use of Arcanist to submit revisions.

Quoted from the docs at bloomberg/phabricator-tools: arcyd

Arcyd - daemon to watch git repos, create and land reviews automatically.

Intended to make it easy for large teams to start using Differential without
individual contributors needing to install and configure Arcanist.

Individual contributors are still free to use Arcanist if they wish, Arcyd
provides a zero-config layer over Git to get them started.

Arcyd does the following:

  • watches for specially named branches and automatically creates revisions
  • automatically updates revisions when the branch changes
  • automatically lands revisions when they are approved
usage: arcyd [-h]

minimal user workflow:

$ git checkout feature/mywork
~ commit some work on the branch ~
$ git push origin feature/mywork:arcyd-review/mywork/master
  • Arcyd see's the 'arcyd-review' branch and creates a review ..
  • Reviewer accepts the change ..
  • Arcyd squashes the 'arcyd-review' branch onto master and deletes it ..

Related Objects

View Standalone Graph
This task is connected to more than 200 other tasks. Only direct parents and subtasks are shown here. Use View Standalone Graph to show more of the graph.

Event Timeline

It says it automatically lands changes when they are approved meaning any one can approve it and it will merge.

@mmodell do you know when we can start using this please.

This would also allow us to land straight after approving maybe we want them to implant a button that only authorised people can press to merge.

@mmodell I tried to do this on an instance but this is really old and only supports the pre 2014 phabricator. conduit certificates were removed last year but it still expects it. It dosent use the new conduit tokens.


I'm the original author of Arcyd, I found my way here from this issue:

Would you like to continue the conversation here instead?

I think the lack of documentation may be getting in your way. Would it be useful to have a video call to see how I can help you to get started with evaluating?

@Paladox: Please do not add comments like T132863#2393472 that don't add anything to tasks and just create notifications for everybody. Thank you.

@aevri: Very kind of you to offer your assistance! I'd be glad to have a video call with you, though perhaps the best thing we could do is to collaborate on improving the documentation? :)

@mmodell Hehe sure thing, I'm not sure I'd want to depend on software that needed a conf call to get me started with either :)

I'm wondering what we should look at first, here's my view of what we have:

I can imagine these sorts of things would be helpful:

  • Workflow docs for users (e.g. create revision, land revision)
  • Workflow docs for admins (e.g. install, add repos, remove repos)
  • Design overview for devs
  • Troubleshooting guide (e.g. log files, arcyd fsck, common issues)

What sorts of things would you like us to start with?

How far along is the evaluation, have you got an instance of Arcyd running?

Let me know how I can help best :)

@aevri: we got an instance set up with arcyd installed but haven't gotten as far as getting it working yet. I'm not quite sure how all the pieces fit together.

Does arcyd need to be on a separate instance from phabricator? It seems that it maintains a clone of the repos and operates on it's own copy, and that each repo needs to be individually added in arcyd in addition to phabricator? Is that correct or am I confused?

@mmodell: aha ok cool

Yup that's right! It's meant to run independently from Phabricator and only have contact via the API.

For context, we run it in a configuration where it's hooked up to many Phabricator instances (aligned to teams / departments) and a couple of Git repository hosts. There are many repos we watch with Arcyd but not with Diffusion. That's why it was important for Arcyd to manage it's own repo list.

I've started a work-in-progress pull-request to get some overview documentation together here:

Comments welcome!

In retrospect, maybe it would have been more helpful if I wrote the 'Setup' section first but that's up next :)

@mmodell can we rise the priority of this task, since asking users to use arcanist will only make it difficulty in users contributing especially new ones since currently all you need is git to edit patches and upload but with phabricator you need php, arcanist, libphutil. Also arcanist is not very well supported on windows.

If this tool resolves are issues then we should try and test it?

Including updating it so it dosent require us to re install phabricator or anything and for it to support the latest phabricator update.


Upstream will be working on soon, making this task obsolete.