I've never used --head, and it's not even documented in the help for the version of arc I have (which ought to be no more than a couple of months old). Maybe it's a new feature.

So I'm hesitant to recommend this workflow. I think the biggest problem in your description is the bit where you "de-Phabbed" the commit message, which meant that you had to tell Phabricator exactly which diff you wanted to update later.

When I have some time I'll write up the workflow I use for multiple dependent patches on the wiki. But basically it amounts to

 - one Phab diff per git commit
 - use 'git rebase -i' to amend individual commits in the stack
 - use 'arc patch Dnnn && arc land' to land

I always avoid uploading multiple commits as a single diff to Phabricator, because it

 - make reviewing harder
 - concatenates the commit messages
 - is just confusing.

I don't know why Phab wants to do it this way, but you can just avoid it by using one diff per commit. Depending on how your Phab config is set up this might be the default, or you might have to say "arc diff HEAD^" every time.

Cheers,
Simon

On 28/10/2014 12:39, Richard Eisenberg wrote:
I just revised a Phab revision using `arc`, and it all worked swimmingly, doing 
exactly what I wanted, even though this was non-trivial. I describe the process 
below, and am happy to add to the Phab wiki page, but wanted to check here 
first to make sure I wasn't making an invisible dreadful mistake.

Here's my story:

- I had done a few edits in TcSplice and posted the (boring) revision D359.

- Austin and Harbormaster both had good suggestions for me.

- I spent a week completing other tasks.

- I rebased my WIP branch against master. This worried me about what Phab might 
think.

- I incorporated the suggestions. As is my usual workflow, I then rebased to 
integrate these changes into my original commits. As previously discussed, I 
think breaking a patch into separable commits is a Good Thing, and I curate 
these commits to be reader-friendly as I work. In the process, I de-Phabified 
my previous commit message, worried I was inviting demons, but determined to 
proceed.

- I then updated my Phab revision with this:

arc diff --allow-untracked --head HEAD --update D359

Explanation: --allow-untracked is because I have testsuite garbage floating in my working 
directory, and I'm never confident enough to modify .gitignore to ignore this garbage. 
`--head HEAD`, I think, is the magic bit. It specifies the *end* of the commit range to 
be included in the Phab diff. (The beginning was inferred to be origin/master, but can be 
specified without flags on the command line.) According to `arc help`, "This [flag] 
disables many Arcanist/Phabricator features which depend on having access to the working 
copy." Indeed, it was this warning which made me think `--head` was my friend. Of 
course, specifying `--head HEAD` on the command line seems redundant, but it still 
effectively stopped `arc` from touching my commits, thinking that this would break my 
git-ness. So, `arc` did the best job it could without touching my git information, which 
is exactly what I wanted.

Results: My new code is now viewable and reviewable at D359. Despite all of my 
rebasing, the diffs are clean. You can even ask for the differences between my 
two revisions, and Phab does the right thing -- even though there's a week's 
worth of other commits that were rebased in. I'm sure Harbormaster is hard at 
work right now checking my changes. Fellow devs can offer nice feedback. And, I 
have retained control over my git structure. Hooray!

Question: Have I done anything wrong here? By "wrong", I mean both in a 
technical sense (e.g., is Harbormaster now deeply confused?) and in a project-management 
sense (e.g., would this be a bad pattern for others to follow?). Should I put this 
workflow on the wiki?

If no one tells me otherwise, I plan on using `--head` every time.

Thanks,
Richard
_______________________________________________
ghc-devs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/ghc-devs

_______________________________________________
ghc-devs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to