On Sun, 18 May 2014 12:35:49 GMT, ponce wrote:

I have a separate concern with tags when using sub-packages heavily.

As you know, sub-packages might currently reference each other by ~branch (and ~master is appropriate for this for reasons we will see below).

If I understand correctly, I will need to transition to version tags on next dub release, for good reasons.

So far, branch based dependencies only get deprecated (and will stay so for quite a while), so there is no technical need to do the transition immediately - or better put, the new release is not supposed to break any existing package, just trigger a warning for discouraged uses.

Sub-package sharing the same repositery will mean: fixing subpackage A:subA implies releasing a new subpackage A:subB even if not changed, but this is my problem as I choose to use the same repositery.

My concern is that when I make a new release, I will need to update the dub.json package each time, so that sub-packages references refers to the good (non existing yet!) version version tag. To that end, ~master was good since it also means "same version than me".

I need a macro (eg: "=self" instead of ">=x.y.z") to mean than the dependency should use the same version as the dependent package. That will keep sub-packages as practical as they are now.

Eventually the syntax might be ">={self|number}.{self|number}.{self|number}" so that sub-package versionning stays possible and flexible.

Using explicit versions for referencing sub packages now triggers a warning and is otherwise ignored, so that any existing packages stay usable. But so solve the issue, the new match-any syntax "mainpackage:subpackage": "*" has been introduced, which matches any version or branch, including whatever version (or branch) the main package has. Also, the main package name can be left off, resulting in just ":subpackage": "*".