Trouble with first GHC patch submission: uncommitted changes

Austin Seipp austin at
Thu Apr 7 00:21:11 UTC 2016

On Wed, Apr 6, 2016 at 7:11 PM, Conal Elliott <conal at> wrote:
> I'm trying to get through my first GHC patch submission, using git and
> Phabricator, following directions at
> "git status" shows two
> unstaged changes: "deleted:    test   spaces" and "modified:
> ../libraries/bytestring (modified content)" (in a submodule). I don't know
> where either change came from. When I use "arc diff" to submit my intended
> change to the compiler, I get asked about these to uncommitted changes. I
> say to ignore the submodule change and do not amend my commit with the "test
> spaces" deletion, I get "Usage Exception: You can not continue with
> uncommitted changes. Commit or discard them before proceeding." I don't know
> how to discard (nor whether safe), and I don't think I want to commit.

I'm not sure about the 'test spaces' change. That should be added to
.gitignore I think. I'll try to see if I can get that done for you.

It should be fine to discard the changes; the spaces thing is an
artifact of the build system testing a binary distribution (I assume
you did ./validate ?)

The bytestring change might be because there were some left over files
from the build system lingering, that might not be in .gitignore. Just
try running 'git status' in libraries/bytestring and seeing what it

> Note: the directions say to use "arc diff~" (rather than "arc diff"), to
> which arc replied "(Assuming 'diff~' is the British spelling of 'diff'.)".

Ugh, sorry. That's a clerical error. I must have typo'd that...

Assuming you want to submit the latest patch, on your current branch, you want:

$ arc diff HEAD~

The first argument to 'diff' is essentially the commit to start as the
'base' commit. You then get a diff generated, from the 'base' commit
against the head commit of your working copy. In other words, when
you say "arc diff XXX", that's basically a way of saying "Send the
diff between XXX..HEAD".

In this case, you can see that if you say "git log HEAD~..HEAD", which
would only contain one commit (presumably, what you want).

Arcanist can always tell you exactly what it will do, in a detailed
way, before doing it. Instead of running 'arc diff', run 'arc which'

$ arc which HEAD~

That will tell you exactly what arcanist will do, in a detailed
manner. E.g. it will tell you if it will create a new diff, or update
an old one, and exactly the commits it will use to create or update
that diff. You can use further flags/arguments to 'arc diff' or 'arc
which' to override the behavior as you want.

> Thanks for any help!
> -- Conal
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at


Austin Seipp, Haskell Consultant
Well-Typed LLP,

More information about the ghc-devs mailing list