Update on modularisation of Infusion and other projects conversation

Antranig Basman antranig.basman at colorado.edu
Thu Nov 10 19:30:32 UTC 2016

Thanks, Alan - this is really useful research. I was expecting that we 
would run into such roadblocks as we tried to get to grips with this 
space - for example, making a monorepo out of gpii/windows and 
gpii/universal. We will doubtless have to get our "git-fu" up to a level 
it hasn't received since the original dark days since we constructed our 
Infusion repo by importing the original SVN. Great to have this early 
experience. I'm suspecting that we will not use "lerna" itself in the 
end, and this only adds grist to that suspicion - but we will still need 
to go through this git workflow in some form as we fuse and split 
existing repos.

In terms of Infusion and Kettle specifically, I'm thinking that 
something rather more complex will happen in this area - in that only 
SOME of Kettle belongs within Infusion (perhaps the things we call 
kettle-dataSource (itself split in two between node and portable 
definitions), kettle-config and kettle-testing) and the rest of it will 
be spun out into something we might call kettle-express, which can then 
become a peer on equal terms with the existing gpii-express project - 
which would then just become a consumer of the larger thing called 
"infusion" rather than confusingly depending on a thing called "kettle".



On 10/11/2016 14:41, Harnum, Alan wrote:
> Thank you Antranig - a quick note on a related piece of this that's on
> that wiki page (reading it spurred me to try this late yesterday) - in
> trying to understand the "monorepo" pattern better, I worked a little
> trying to use Lerna to make a monorepo containing Kettle and Infusion.
> From reading the docs this workflow should look like the following:
> - follow the "Getting Started" instructions at
> https://github.com/lerna/lerna#getting-started
> - use "lerna import" on local copies of the Infusion and Kettle repos
> (Lerna will not import from a repo at a URL) to bring them under the
> Lerna repo with their commit histories
> I immediately ran into the issues described at
> https://github.com/lerna/lerna/issues/272 for both repos. Specifically:
> "lerna import ../lerna-imports/infusion" fails as follows:
>     Errored while running ImportCommand.execute
>     Failed to apply commit 029adc5.
>     Error: Command failed: /bin/sh -c git am -3
>     fatal: sha1 information is lacking or useless
>     (packages/infusion/src/webapp/demos/html/2InlineEdit.html).
>     error: could not build fake ancestor
> "lerna import ../lerna-imports/kettle/" fails as follows:
>     Errored while running ImportCommand.execute
>     Failed to apply commit 8e58cd7.
>     Error: Command failed: /bin/sh -c git am -3
>     error: Failed to merge in the changes.
> Preliminary conclusion: converting to a monorepo style with Lerna will
> require either some evolution in Lerna's tooling or some massaging of
> our existing repos. The suggested "git rebase --interactive" workaround
> mentioned
> at https://github.com/lerna/lerna/issues/272#issuecomment-255486762 did
> not work for either repo.
> I don't think I unearthed anything spectacularly useful here, but wanted
> to note what I tried & the immediate roadblock in case it saves others
> time in the future.

More information about the fluid-work mailing list