Since we are talking about expanding the integration with git from development / published versions to include tags and branches, I would like to add my 2 cents.
I had problems with the current implementation too, but, instead of (or in addition to) asking for a more flexible environment, I would like a more rigid one (maybe optionally activated).
The current behavior allows you to have production apps that depend on development branches of other apps. It also allows you to have AppA depending on AppB1 and AppB2, where AppB1 depends on AppC development and AppB2 depends on AppC published. When this happens AppA doesn’t even start, so you usually catch it quickly, but twice I had a panic day because apps that I had not modified in months stopped working. The reason was that, while working on AppZ, I had modified one of its dependencies dependency and created a conflict on 10 other apps.
My request would be that:
- Anvil should prevent me from publishing an app if there is any development version in its dependency graph
- When I publish an app all its dependencies should be automatically changed to published, and as soon as I modify it, all its dependencies should be automatically changed to development
The second point sound too drastic, but it is the policy that I (try to) follow. And since I started following it, I never had a problem.