Updating submodules

Herbert Valerio Riedel hvriedel at gmail.com
Tue Jan 6 10:22:16 UTC 2015


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 at 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs

-- 
"Elegance is not optional" -- Richard O'Keefe


More information about the ghc-devs mailing list