
Hello Simon, On 2015-01-06 at 10:59:44 +0100, Simon Peyton Jones wrote:
I'm very confused about the workflow for updating submodules. I want to update several (to remove redundant constraints from contexts) which are maintained by GHC HQ. But for libraries/parallel I find:
* There is no .git/config in libraries/parallel. (Whereas there is for another submodule, libraries/hoopl.)
* There is, however, a .git file which points to .git/modules/libraries/parallel
That's most likely because libraries/hoopl wasn't created via `git submodule` but rather inherited from a Git checkout where libraries/hoopl was an decoupled (not yet submodule) sub-repo... In any case, if you manage Git remotes (while in libraries/hoopl) via the `git remote` command, Git takes care of following the "symlinked" .git folder...
* In .git/modules/libraries/parallel/config, I see a url of https://git.haskell.org/packages/parallel.git. But I can't push to this URL.
yes, that's our mirrored copy of github.com/haskell/parallel/
* That matches the url in https://ghc.haskell.org/trac/ghc/wiki/Repositories, but contradicts the url in 'packages', which says
ssh://git@github.com/haskell/parallel.git
yes, that's exactly the upstream URL you're supposed to push to... (and since it's a ssh:// protocl url, it means you should have push-rights there)
* I don't understand what URL should be expected for submodules with "-" in the 'upstream url' column of the 'packages' file. It says "-" means 'this is a submodule', but parallel is certainly a submodule and doesn't have "-".
The comment there is probably a bit misleading; "-" in the "upstreamurl" field just means that the official upstream repo is at git.haskell.org, and you should use the usual ssh://git.haskell.org/... URL for pushing...
But so is hoopl, which does have "-". I tried a minimal change of adding pushurl = ssh://git@git.haskell.org/packages/hoopl.git
are you confusing 'hoopl' with 'parallel' here? hoopl's upstream is in fact at git.haskell.org, but parallel lives at github.com/haskell/parallel ...
to .git/modules/libraries/parallel/config. But when I tried to push I got simonpj@cam-05-unx:~/code/HEAD-2/libraries/parallel$ git push Counting objects: 7, done. Delta compression using up to 32 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 410 bytes, done. Total 4 (delta 3), reused 0 (delta 0) remote: W refs/heads/master packages/parallel simonpj DENIED by refs/.* remote: error: hook declined to update refs/heads/master To ssh://git@git.haskell.org/packages/parallel.git ! [remote rejected] HEAD -> master (hook declined) error: failed to push some refs to 'ssh://git@git.haskell.org/packages/parallel.git'
So I'm thoroughly stuck. I can't push my main patch until I push the submodule patches. What do I do? And would it be possible to update the wiki pages to make this clear? Especially
* https://ghc.haskell.org/trac/ghc/wiki/Repositories
* https://ghc.haskell.org/trac/ghc/wiki/WorkingConventions/Git/Submodules
Thanks Simon _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs
-- "Elegance is not optional" -- Richard O'Keefe