<div dir="ltr">Hi Dan, thanks for the feedback.<div><br></div><div class="gmail_quote"><div dir="ltr">On Mon, Dec 28, 2015 at 6:24 AM Dan Liew <<a href="mailto:dan@su-root.co.uk">dan@su-root.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I recently tried reviewing/committing some of my code on<br>
Phabricator/Arcanist for the first time and I noticed that the docs<br>
[1] ask for feedback, so here it is!<br>
<br>
Phabricator functions reasonably well and it is a lot easier to write<br>
comments and respond to comments on particular parts of code as<br>
opposed to the old way of copy and pasting patches into e-mails sent<br>
to llvm-commits. Two minors annoyances:<br>
<br>
* IIRC you have to scroll to the bottom of the page and click a submit<br>
button to have comments that have just been written accepted. This is<br>
really annoying and unintuitive, especially if the patch is large<br>
which means lots and lots and lots of scrolling.<br>
<br>
* I also have a personal preference for writing review comments in<br>
markdown. Phabricator seems to use some other syntax [3] which is not<br>
compatible. I'm very used to writing reviews on GitHub which uses<br>
GitHub flavoured markdown so I kept accidentaly typing that into the<br>
comment boxes.<br>
<br>
I came up against a number of issues when it came to actually<br>
committing code once it had been reviewed.<br>
<br>
# TL;DR<br>
<br>
I don't like the arcanist tool at all and we should have a documented<br>
manual way of committing code reviewed on Phabricator.<br>
<br>
# Long version<br>
<br>
The docs [2] to seem to suggest the **only correct way** (i.e.<br>
properly closes the phabriacator review) is to commit your change is<br>
via the arcanist command line tool.<br></blockquote><div><br></div><div>Interesting, I don't read it that way :) I personally don't use arc to commit.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I had/have several problems with the arcanist tool.<br>
<br>
* It is written in PHP  (provokes a knee-jerk "kill it with fire"<br>
reaction in me and likely others). IMHO not the most suitable language<br>
for writing a command line tool. As the rest of the points below<br>
demonstrate<br>
<br>
* I suspect that most people don't have (and don't want to have) the<br>
PHP runtime installed just to run a command line tool.<br>
<br>
* The tool does not work out of box due PHP's default configuration<br>
(5.6.16 on Arch Linux). I see warnings like this.<br>
<br>
```<br>
PHP Warning:  ini_set(): open_basedir restriction in effect. File() is<br>
not within the allowed path(s):<br>
(/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/) in<br>
/home/dan/dev/libphutil/scripts/__init_scr<br>
ipt__.php on line 52<br>
```<br>
<br>
See the attached ``arc.txt`` for the full output.<br>
<br>
I had to remove the ``open_basedir`` setting (making my PHP install<br>
less secure) in ``php.ini`` to get the tool to work.<br>
<br>
IMHO we should have other documented method(s) of committing the code<br>
(that still correctly closes the review in phabricator) without using<br>
the arcanist tool. Perhaps the Phabricator web interface should have<br>
an option to generate the correctly formatted commit message text<br>
which can then be used when committed manually?<br></blockquote><div><br></div><div>You can just write the commit message the way you would write it if you didn't use phab. There really is no need for arc if you don't like it (I personally use it for everything but the commit).</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'm aware phabricator is an external project so we are at the mercy of<br>
the Phabricator devs but it seems reasonable to me request a command<br>
line tool not written in PHP, e.g. written in something more sensible<br>
for a lightweight client to a server application (e.g. Python, Perl,<br>
Go, ...).</blockquote><div><br></div><div>I personally don't think that would be helpful; it would have much of the same problems, and would introduce a bunch of its own, as it couldn't easily reuse the phabricator code that already exists. </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I also have issue with the commands shown in the docs for committing<br>
the code, i.e.<br>
<br>
```<br>
arc patch D<Revision><br>
arc commit --revision D<Revision><br>
```<br>
<br>
This has some implicit assumptions that aren't mentioned.<br>
<br>
* ``arc commit`` only works if you're using svn. If you're working<br>
with LLVM via "git svn" it doesn't work. You can to commit the usual<br>
way (i.e. ``git svn dcommit``)<br></blockquote><div><br></div><div>I heard of people who have made this work with git svn. </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
* Running the ``arc patch`` command assumes you are on a clean master<br>
branch and want to apply a patch uploaded Phabricator. This is<br>
pointless (and won't work) if you are already on a local branch that<br>
already has the commit you want to commit to trunk.<br>
<br>
I'm happy to write patches to improve the documentation here but I<br>
would like some guidance on what the correct method of committing<br>
without arcanist is.<br></blockquote><div><br></div><div>Again, there is no one correct way. You can use arc, you can just manually put together your commit message. If your commit messages are bad, somebody will eventually start complaining post-commit ;)</div><div><br></div><div>Feel free to send a patch to make it explicit that using arc is completely optional. We mainly put it there because some people hand't heard of arc and were handling their patches manually and complaining about the web workflow.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
[1] <a href="http://llvm.org/docs/Phabricator.html#status" rel="noreferrer" target="_blank">http://llvm.org/docs/Phabricator.html#status</a><br>
[2] <a href="http://llvm.org/docs/Phabricator.html#committing-a-change" rel="noreferrer" target="_blank">http://llvm.org/docs/Phabricator.html#committing-a-change</a><br>
[3] <a href="https://secure.phabricator.com/book/phabricator/article/remarkup/" rel="noreferrer" target="_blank">https://secure.phabricator.com/book/phabricator/article/remarkup/</a><br>
<br>
HTH,<br>
Dan<br>
</blockquote></div></div>