
Simon Marlow
Well, let's be careful here. I like the idea, but it's not a complete solution for people who don't want to use arc, because you can't revise a patch after submission in response to reviews, you would have to open a new PR.
I have considered building something like this in the past since posting series of patches via Arc is exceedingly painful. It's not entirely clear what it would look like, but I was thinking the tool would, 1. take a branch of commits, for instance, A -- B -- C -- D -- E -- F -- origin/master ^ HEAD 2. allow you to decide how to break it into Diffs. for instance, new diff A B new diff C D E new diff F which would produce three diffs: * one containing commits A and B * one containing commits C, D, and E * another containing F 3. run `arc diff` to upload each Diff to Phabricator, setting up the appropriate dependency structure between the created Diffs 4. rewrite history of your branch to add an annotation to the commit messages saying which diff each belongs to You are then free to continue modifying and even rebasing your branch and later the tool can be used to update the diffs from the current state of your branch. The tool could do this automatically, reconstructing where each commit belongs from the annotations added during upload. That being said, I ultimately decided it would be easier to just continue carrying out this workflow by hand considering I don't post large series of patches *that* often. I'm also a bit more eager to squash now than I used to be, in part due to the pain of submitting fine-grained patch sets. On the whole I do wish that Phabricator were more Git-like. Cheers, - Ben