Changes between Version 1 and Version 2 of GitRepoReorganization


Ignore:
Timestamp:
Nov 24, 2013 9:56:52 AM (5 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