What's your problem?

Feeling overwhelmed by your monorepo? Too many scripts, too many projects, too many libraries and intricate dependencies hidden in a myriad of hard to decouple files/modules/packages? You're likely not to be alone..

The solution (the eureka moment)

The mono2repo python script allows to dis-entangle a mono repo in smaller separate sub-projects living in separate git repos.

Here's an example trying to extract the pelican summary plugin from the pelican plugins repo https://github.com/getpelican/pelican-plugins.git:

# generate a new stand alone git tree pelican-summary out of the 
# pelican git repo including all changes in the summary subdir only
$> mono2repo.py init pelican-summary \
   https://github.com/getpelican/pelican-plugins.git/summary

Under pelican-summary "migrate" branch there are all the changes, to merge into the "master" branch:

$> cd pelican-summary
$> git branch
  master
* migrate

# switch to your working master branch and merge from upstream
$> git checkout master
$> git merge migrate

To update the "migrate" branch with the latest upstream changes:

$> mono2repo.py update \
   pelican-summary

That's about it!