Trouble with first GHC patch submission: uncommitted changes

I'm trying to get through my first GHC patch submission, using git and Phabricator, following directions at https://ghc.haskell.org/trac/ghc/wiki/Phabricator. "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. Note: the directions say to use "arc diff~" (rather than "arc diff"), to which arc replied "(Assuming 'diff~' is the British spelling of 'diff'.)". Thanks for any help! -- Conal

On Wed, Apr 6, 2016 at 7:11 PM, Conal Elliott
I'm trying to get through my first GHC patch submission, using git and Phabricator, following directions at https://ghc.haskell.org/trac/ghc/wiki/Phabricator. "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 shows.
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@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
-- Regards, Austin Seipp, Haskell Consultant Well-Typed LLP, http://www.well-typed.com/

Thanks again, Austin, for all the help in this exchange and on #ghc,
leading to https://phabricator.haskell.org/D2088. Looking forward to more
GHC involvement. - Conal
On Wed, Apr 6, 2016 at 5:21 PM, Austin Seipp
On Wed, Apr 6, 2016 at 7:11 PM, Conal Elliott
wrote: I'm trying to get through my first GHC patch submission, using git and Phabricator, following directions at https://ghc.haskell.org/trac/ghc/wiki/Phabricator. "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 shows.
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@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
-- Regards,
Austin Seipp, Haskell Consultant Well-Typed LLP, http://www.well-typed.com/
participants (2)
-
Austin Seipp
-
Conal Elliott