Added
- Completing an activity (source, migration, forge) now summarizes results
- Breakdown of repo count per outcome type, then sorted list of repos per type
- **FASTER**: Optional, experimental multi-threaded per-repo processsing!
Handling of clone, scan, patching is done as individual thread per repo, with
N=8 pooled threads.
- Early data shows a x6 improvement in performance, as cloning
one repo doesn't block others anymore.
- Enable via new experimental flag `run --parallel`, defaulting to `False`
Changed
- **BREAKING**: Renamed`Repo` to `SourcedRepo` in `mass_driver.models.repository`
- This exposes better the idea of "a Repo as it was Source-d", in contrast to
`ClonedRepo` "a Repo after it was cloned".
- Also avoids clashes with `git.Repo` object from gitpython dependency.
- Replaced all `print()` calls to `logging` module
- Loggers used are mostly nested:
- from `root` (default)
- to `run` (or other file-activity-based)
- to `run.repo.<repo-id>` for logs for a specific repo's processing
- to subloggers like `run.repo.<repo-id>.driver.<driver-plugin-name>`
- `PatchDriver` now has a `logger` obj for such customized logging:
Repo-processing sets `Patchdriver.logger` named
`run.repo.<repo-id>.driver.<driver-plugin-name>`
- **ACTION**: Please replace any `print` with `self.logger.info`!