<div dir="ltr"><div><div><div>A nice trick for dealing with stacked diffs in Phabricator is to use "git rebase -i" to modify diffs in the middle of the stack. You can also insert "x arc diff" between lines to automatically update later diffs on Phabricator after a rebase lower down the stack.<br><br></div>You only need a single branch for the whole stack, and continually rebase it. I also push the whole branch to github to get Travis to build it, but that's optional.<br><br></div>Cheers<br></div>Simon<br><div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On 29 September 2016 at 03:27, Moritz Angermann <span dir="ltr"><<a href="mailto:moritz@lichtzwerge.de" target="_blank">moritz@lichtzwerge.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
>> Hence you can go wild on your local branches (use what ever<br>
>> development model suites your needs) and get one final squashed commit<br>
>> with an extensive summary.<br>
>><br>
> Sure, but this leads to generally unreviewable patches IMHO. In order to<br>
> stay sane I generally split up my work into a set of standalone patches<br>
> with git rebase and then create a Diff of each of these commits.<br>
> Phabricator supports this by having a notion of dependencies between<br>
> Diffs, but arcanist has no sensible scheme for taking a branch and<br>
> conveniently producing a series of Diffs.<br>
<br>
</span>Yes, this has been a constant source of frustration for us as well. Dealing<br>
with dependent diffs is just plain painful with arc :( What I usually end up<br>
doing, and I assume that’s what you are describing is:<br>
<br>
Turning<br>
<span class=""><br>
A -- B -- C -- D -- E -- F -- origin/master<br>
^<br>
HEAD<br>
<br>
</span>into:<br>
<br>
branch B1: E -- F -- origin/master<br>
/<br>
branch B2: C -- D<br>
/<br>
branch B3: A -- B<br>
<br>
and producing three diffs:<br>
<br>
$ git checkout E<br>
$ arc diff origin/master # producing D1<br>
<br>
$ git checkout C<br>
$ arc diff B1 # adding “depends on D1" into the summary field<br>
<br>
$ git checkout A<br>
$ git diff B2 # adding “depends on D2” into the summary field<br>
<br>
and then rebase B2 and B3 when changes to D1 on B1 are necessary.<br>
<br>
Running `arc patch` with dependent diffs often resulted in trouble;<br>
this seems to be getting better with the staging areas though.<br>
<br>
So clearly we can see there are drawbacks. All I wanted to say in<br>
the previous email was essentially that from my experience frustration<br>
with arc often came from trying to make arc be git.<br>
<br>
Cheers,<br>
Moritz</blockquote></div><br></div></div></div></div></div>