Hacker News new | past | comments | ask | show | jobs | submit login

I've been using the code review portions recently. The pre-commit workflow doesn't work too well with git, since the review happens before you upload the code. So everyone needs a local php program to both upload code diffs, and download the code diffs (to support multiple VCS systems). And once it's approved, you need to merge and push it locally (there is a command in the program to do this in one step).

Writing unit tests also requires making (a small) php program to call out to them. And from what I've seen, it only supports them locally, and not through another system. There is a post-commit review system, but it has less features, and is based only on commits.

But after looking around, there really wasn't much else that fulfilled the project-management aspects as well as code-review.




I've been using Phabricator for almost a year now in our company. At first, I also had my questions about the workflow with arcanist (the local PHP cli software to interact with Phabricator). However, right now I really love it and miss it on every repository which works without Phabricator. Commands like 'arc feature', 'arc tasks' and 'arc inlines' provide a solid abstraction over the repository to bring the workflow to the cli.

About the unit tests: indeed, out-of-the-box Phabricator only supports running them locally (you can configure the unit engine to run every time a piece of code is been send into review). Luckily, it's not that hard to hook into the event engine (https://secure.phabricator.com/book/phabricator/article/even...) to, for example, trigger your CI-server to run the test suite for a specific revision. Also, Phabricator is still being developed actively. There are a bunch of alpha and beta applications which will only make it more powerful (for example: DryDock and Harbormaster, which will ease the work for automatic builds: http://www.guywarner.com/2014/05/integrating-jenkins-and-pha...)

In my opinion, Phabricator is one of the most powerful tools around for doing code reviews and effective collaboration management. Even with the large amount of beta applications (which are promising in many cases) the decision for us was easy to make.


does arc inlines work for you?


Since it has been broken some time ago: no. But when it was still working: yes, I found it rather useful. Especially with very small commits/bugfixes and such. I hope they'll fix it soon


Yes, the pre-commit workflow is also why I won't use it. I want to review branches, not patches. With branches though, there's another problem which AFAIK no code review tool can manage, with the sole exception of Gerrit: force pushes. While you might recoil, I think force pushes are often an entirely reasonable thing to do on a feature branch which is not yet merged into mainline, especially when cosmetic stuff gets fixed, like trailing whitespace, hanging braces or whatever the reviewer did not like. You really don't need that kind of history in mainline. See also this comment w.r.t. to GitHub's inability to deal with force pushes, to which I entirely agree:

https://julien.danjou.info/blog/2013/rant-about-github-pull-...


Why do you want to review branches? Doesn't that encourage longer divergence, therefore decreasing the percentage of atomic commits and increasing the risk of every merge?


The issues you name are certainly valid, and I would only recommend this with a VCS that offers a wide range of possibilities for rewriting history. In the ideal case, a feature branch is a unit which implements a feature, fixes a bug, etc., and is usually comprised of several commits to achieve that. The advantage is that you clearly see the steps needed for achieving the desired result, each with its own commit log, and arranged in a logical order. Of course, you can do this with a set of patches as well, but then you need tooling separate from your VCS to manage that. Git has excellent support for re-arranging your commits, splitting/combining them, rebasing them onto current HEAD or onto some version branch.


Shopping around for these kinds of tools recently. Phabricator looks great, but the point you mentioned is a show stopper for me. I would love to see Phabricator have GH-style code review, even if it meant dropping support for non-DVCS. Arcanist is neat but I don't want to learn a proprietary CLI tool just to do code review.

Atlassian is expensive and only supports GIT, but the UI for VCS is way better (as is the Jenkins integration).


See https://secure.phabricator.com/T5000 for the upstream thoughts on using Phabricator without arc.


It isn't proprietary, it is open source php. Not wonderful, but the cli works well and hits all of the phabricator bits you need. I've been using it for ~6 months and like it quite a bit.


Maybe proprietary isn't the right word. I don't like that the only way to do pre-commit code review is using a CLI tool that only works with Phabricator. Contrast this with the GH-style system where you use a standard Git client and a web app. The GH-style system is just much more accessible.


While GitHub isn't that great, it's sufficiently popular that there's a bunch of tools built on top of its API that supplement its failings. For example, for code reviews you can hook up https://reviewable.io (disclosure: my project), which automatically inserts links to itself into PR descriptions and doesn't require using any new CLI tools.


If you want a nice interface, you should take a look at GitLab. It only supports Git, but it is free software and its user interface is the only one that, in my opinion, can compete with GitHub’s (it is more or less a free software clone of it).


I agree with that, GitLab realy looks nicer.


I'm a little confused by what you mean by "the review happens before you upload the code"? Can you explain what you thought should happen vs. what does happen?

Thanks!


i guess he want something that compares remote forks a la github, instead of a patch uploader that is agnostic to where you store your repos




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: