Skip to content

Parallelize independent cregit pipeline steps #45

Description

@ricardokojo

The current runner executes all cregit steps sequentially, following the order in the README. However, some of these steps appear to be independent and could run in parallel.

This could reduce total runtime, especially for large repositories.

Current flow

flowchart TD
  A[Create view repo] --> B[Create original repo history DB]
  B --> C[Create cregit repo history DB]
  C --> D[Create persons DB]
  D --> E[Create blame of cregit files]
  E --> F[Remap commits]
  F --> G[Create HTML files]
Loading

Possible parallel flow

flowchart TD
  A[Create view repo]
  B[Create original repo history DB]
  D[Create persons DB]

  A --> C[Create cregit repo history DB]
  A --> E[Create blame of cregit files]
  C --> F[Remap commits]

  C --> G[Create HTML files]
  D --> G
  E --> G
  F --> G
Loading

Notes

A possible execution plan would be:

  • run create view repo, create original repo history DB, and create persons DB in parallel
  • after create view repo, run create cregit repo history DB and create blame of cregit files in parallel
  • after create cregit repo history DB, run remap commits
  • after all required artifacts are ready, run create HTML files

This should be validated against the current implementation, but it looks like a good opportunity to improve performance and make the pipeline dependency-aware instead of strictly sequential.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions