Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi-repository dependency management #79

Open
alessandrothea opened this issue Jul 1, 2020 · 0 comments
Open

Multi-repository dependency management #79

alessandrothea opened this issue Jul 1, 2020 · 0 comments
Assignees
Milestone

Comments

@alessandrothea
Copy link
Collaborator

alessandrothea commented Jul 1, 2020

The lack of a mechanism to semi-automatically setup a multi-repo work area is probably one of the longest-standing issues in ipbb. The problem is twofold:

  • How to define dependencies.
    Using .ipbb_setup.yml is probably the simplest solution.
  • Properly handling multi-layer dependencies.

Implementing a proper dependency management schema seems overkill, for a few reasons.
It could be a lot of work and concepts like 'minimal required package version' require some basic tag conventions, which are not guaranteed.

Instead, the most reasonable way forward is a 'limited responsibility' revision management schema. In this scenario, only a minimal set of automatic checks and actions are implemented to handle multi-layer dependencies and the user intervention is requested in case of any minimal conflict or inconsistency.

For example, let's assume to have 3 inter-dependant repositories A, B and C (and D for the last case)

  1. simple case: A depends on B that depends on C. A imports B, but puts no requirements on C. C's revision is taken from B. (dependency imports)
  2. simple conflict: A depends on B and a specific C version. A conflict between A's and B's reqs on C arises. Assuming that the top-level is in A, a warning is thrown, but the revision of C specified by A is taken (top package dependencies prevail)
  3. sup-package conflict: A depends on B and C, both conflictual depending on D. The responsibility to choose the correct version of C is delegated to A (top package resolves conflicts)

This approach is rather straightforward to implement and avoid inconsistent situations.

@alessandrothea alessandrothea added this to the Release 1.0 milestone Jul 1, 2020
@alessandrothea alessandrothea self-assigned this Jul 1, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant