2

Let's say my app depends on lib A that depends on B that depends on C (we are owners of them all). Now, you bump the version of C to 1.0.1 (a bug fix).

How would you propagate the change of C to the app? Would you bump versions of B and A, too?

What if there are frequent changes of C needed across the teams? Do you release snapshots on every change; but then again someone needs to update all up-dependencies of C.

In our environment, we have more components in the game, and it is getting hard just to update one component that is far in the dependency chain. For that reason, some propose to depend only on master branch, so everyone is building dependencies locally, which I do not like.

  • 2
    A lot depends here on when the dependencies are resolved (when building the library or when deploying/building the app) and if your dependency management tooling understands that a dependency on version 1.0 of C should be fulfilled by version 1.0.x with the highest available x. – Bart van Ingen Schenau Feb 13 '18 at 10:37
  • I would love to skip automatic updates if possible. – igor Feb 13 '18 at 11:56
  • 1
    If automatic updates are not an option, then everything must depend on a specific version of its dependencies. That in turn means that if a new version of C is released, you need to change the dependency information in B and create a new release of B to use the new version of C. (and so further up the dependency chain.) – Bart van Ingen Schenau Feb 13 '18 at 12:37
1

You change the version if something changes in the behavior of a component.

If B and C can be reasonably used with both A 1.0.0 and A 1.0.1, then the change does not propagate on them.

If B and C critically depend on using A 1.0.1, that is, their behavior changes in significant ways (e.g. they stop crashing), then the change in the version number of B and C built with A 1.0.1 makes sense.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.