Changes between Version 1 and Version 2 of GitRepoReorganization


Ignore:
Timestamp:
Nov 24, 2013 9:56:52 AM (21 months ago)
Author:
hvr
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GitRepoReorganization

    v1 v2  
    55}}}
    66
    7 == some misc. notes about submodules ==
     7== Current state ==
     8
     9The following repositories are currently submodules: `binary.git` `bytestring.git` `Cabal.git` `containers.git` `haskeline.git` `pretty.git` `primitive.git` `random.git` `terminfo.git` `time.git` `transformers.git` `vector.git` `Win32.git` `xhtml.git`
     10
     11As a crude statistics, the number of `git push` operations performed to the master branches of non-git-submodules between 2013-08-10 and 2013-11-23:
     12
     13{{{
     14      2 packages/haskell2010
     15      2 packages/old-locale
     16      3 hsc2hs
     17      3 packages/haskell98
     18      3 packages/hoopl
     19      3 packages/hpc
     20      4 packages/old-time
     21      5 packages/deepseq
     22      5 packages/dph
     23      5 packages/integer-simple
     24      6 packages/parallel
     25      6 packages/stm
     26      7 nofib
     27      7 packages/filepath
     28      8 packages/array
     29      9 haddock
     30      9 packages/directory
     31     11 packages/ghc-prim
     32     11 packages/integer-gmp
     33     13 packages/template-haskell
     34     14 packages/process
     35     21 packages/unix
     36     59 packages/base
     37    176 testsuite
     38    347 ghc
     39}}}
     40
     41Moreover, the following packages are tightly coupled to specific GHC versions (and are not supposed be `cabal install`able)
     42
     43 - `base`
     44 - `ghc-prim`
     45 - `integer-gmp`/`integer-simple`
     46 - `template-haskell`
     47
     48== Some misc. notes about submodules ==
    849
    950See also some older notes: DarcsConversion#Theperspectiveonsubmodules
     
    1556=== Simple migration plan ===
    1657
    17 The plan:
     58==== The plan ====
    1859
    19  - Fold `testsuite.git` into `ghc.git`, as they are strongly inter-dependent. `nofib.git` and `base.git` are two other candidates for being folded into `ghc.git`.
    20  - All other add-on repositories should be converted into Git submodules.
     60Fold some high-frequency repositories directly into `ghc.git`:
     61   - `testsuite.git` (commits to `testsuite.git` are tightly coupled to associated commits to `ghc.git` most of the time, and occur often)
     62   - `base.git` (tightly coupled to GHC internals, 3rd most often updated repo, often coupled with `testsuite.git` tweaks)
     63   - not so clear but potential candidates: `ghc-prim.git`, `integer-gmp.git`, `integer-simple.git`, `template-haskell.org`
    2164
    22 The consequences:
     65Reasons for folding some repos into `ghc.git`:
     66 - Avoid overhead/noise of frequent git-submodule ref update commits to `ghc.git`
     67 - Simplify history (i.e. interlocked changes to `ghc.git` & `testsuite.git` are one single atomic commit/patch)
     68
     69Reasons against folding all repos into `ghc.git`:
     70 - `ghc.git` repo (history) size
     71 - sparse/partial checkouts (e.g. via `cabal get -s`) require to fetch all of `ghc.git`'s history
     72 
     73
     74The remaining add-on repositories shall be converted into Git submodules.
     75
     76==== The consequences ====
    2377
    2478 - `ghc.git`'s commit id by itself effectively provides a sufficient source-tree fingerprint; therefore, this renders the `fingerprint.py` superfluous
     
    2781
    2882 - buildbots don't need to fetch all repos //every time// to check for new commits; it's enough to check `ghc.git`, and only if a new commit in `ghc.git` exists, run `git submodule update`
    29