Folding in base, integer-{gmp, single}, ghc-prim, and haskell-template into ghc.git

Herbert Valerio Riedel hvriedel at
Tue Apr 15 07:40:40 UTC 2014

On 2014-04-15 at 05:38:54 +0200, Kazu Yamamoto (山本和彦) wrote:
> Hi Herbert,
>> After a short conversion with Austin and Edward it appears that the
>> sensible course of action with respect towards moving to a proper Git
>> submodule set-up is to fold-in the 5 Git repos listed below (which btw
>> are all GHC wired-in packages) directly into ghc.git (the same way
>> testsuite.git was a few months ago):
> This is just a confirmation. I have no opinion on this.
> Recalling the discussion in the last summer, I understood GHC project
> will start using git subtree, not git submodule. But it seems to me
> this is my misunderstanding.
> What was the conclusion of that discussion? And would you tell me why
> submodule was chosen?

I believe you refer to

and the spin-off thread

However, I couldn't find any conclusion while skimming through the
threads stating that using 'git subtree' would have been the conclusion.

Otoh, I can offer part of the motivation for using `git submodules` from
my current point of view from the top of my head:

 - We already use Git submodules for half the sub-repos, using a mix of
   submodules and subtrees might become too confusing.

 - The remaining (after the wired-in packages are folded in) non-yet
   Git-submoduled repos at are candidates for being
   moved to (most are not specific to GHC (in
   theory at least) and are to become managed more actively by the core
   library committee, read "outsourced"), so they'd essentially become
   3rd party tracked upstream repos, which is exactly the use-case that
   Git submodules are suited for.

 - Git subtrees embed the sub-repos' content into the super-repo,
   therefore once you don't need the subrepo anymore, you still have to
   carry around its content forever in the superproject. Git submodules
   only require to store the sub-repos commit-ids in the the super-repo
   (Git Submodules are basically what GHC fingerprints would provide if
   the GHC fingerprint would be checked into ghc.git and kept up-to-date
   with each ghc.git commit)

 - Git subtree is actually a Git contrib-script and may not be available
   in all Git installations. Submodules, otoh, have been an integral
   part of Git since version 1.5.3


More information about the ghc-devs mailing list