Git-bisect, but for N repos

Our software is modular, and I have about 20 git repositories in one project.

If the test fails, it is sometimes difficult to find a matching commit, as several developers work on these 20 repositories.

I know that the test worked yesterday and today does not reproach.

Sometimes I use git-bisec, but this only works for one git repository.

Often changes in two git repositories make the test fail.

I could write a dirty script that iterates over my N git repos, but before doing this, I would like to know how the experts will solve this.

I use Python, Django and pytest, but AFAIK it does not matter for this question.

+6
source share
2 answers

I personally prefer to use the repo tool to manage complex projects. Put these 20 repositories in manifest.xml and every time the build starts creating a patch manifest, if the build fails, the repo-diff manifest reveals what has been changed and where.

+3
source

There is a QA tool category for building an inverse CI. Thus, your higher-level projects are rebuilt each time you change the lower level. On a scale, it can be resource intensive.

The whole class of problems is removed if you stop working with repo-repo relationships and start using the release methodology for subcomponents. You can then keep track of lower-level dependency versions and know when you upgrade to the update that it broke. Your CI could build against several versions of dependencies if you want to systematize it.

Submodules

Git does this tracking for individual commits, so you decide again when to include changes from lower levels. (Remarkably, this can also be used as released versions, if you only ever update the commit of the marked release.)

+2
source

Source: https://habr.com/ru/post/1013026/


All Articles