Synchronizing core and git repository version
Thanks to FuseSoC, we have developed a setup with all our IPs being described in different core files. The IPs are distributed over different git repositories, some with just one IP and thus one core file, some are a collection of multiple IPs and multiple core files.
We develop and update these IPs with multiple developers. To help prevent breaking changes in different dependencies, we enforce some versioning. For this, we ideally use the existing commit, label, and release capabilities of git. The issue with this, however, is that updating a version in a core file and committing these changes, hides the old core file with its previous core version from FuseSoc. Resulting in versioned dependencies to become unresolvable.
A feature that would resolve this, is making FuseSoC capable of doing checkouts in local repositories to a commit or git version tag in the local repositories.
Or, am I missing another way to achieve this behavior? I have tried to play with the local provider and hooks, but no success yet. Or is the suggested method to manually checkout repositories to the required version before initiating FuseSoC?
Thanks!
Yes, this behavior already exists in fusesoc.
Example of check-outing same library with fusesoc, but with different versions:
fusesoc library add open-logic-3.0.0 https://github.com/open-logic/open-logic --sync-version 3.0.0
fusesoc library add open-logic-3.1.0 https://github.com/open-logic/open-logic --sync-version 3.1.0
In this example I used tags defined in open-logic repository, but I could also used branches or commit-sha