Skip to content

Versioning your package

PC edited this page Jul 5, 2017 · 7 revisions

If no versions are specified for your package, Delphinus will simply install the HEAD-Reference of your Default-Branch (Which is usually MASTER). To add versions, simply add a release for your repository on GitHub, everytime you want to release a new version. This limits Delphinus to install only the most recent version (instead of HEAD) and marks a package for update(if it's installed) when a new version is released.

⚠️ Important: if your package does not have any version, it is not possible to reference it in another package as dependency. It is highly advised to add versions to your package. Another advantage is, that a user is notified that an update is available when you release new versions.

Rules for naming Versions

Delphinus uses the tag of a release as Versionstring. This string is parsed and can contain Major, Minor, Patch and a PreReleaseLabel. It must follow these rules:

  • Parser runs from left to right and ignores everything until it hits the first digit (0-9)
  • It reads Digits and seperates a Versionnumber (Major, Minor, Patch) when hitting a dot ('.')
  • Missing Versionnumbers are filled with zeros internally
  • if the last Versionnumber is followed by a dash ('-') everything after the Dash is the PreReleaseLabel
  • if a version has a PreReleaseLabel, it is marked as unstable

Examples

'1.2.3' = Major: 1, Minor: 2, Patch: 3, PreReleaseLabel: '', IsStable: True
'1.2.3-Beta' = Major: 1, Minor: 2, Patch: 3, PreReleaseLabel: 'Beta', IsStable: False
'1' = Major: 1, Minor: 0, Patch: 0, PreReleaseLabel: '', IsStable: True
'Foo1.2.3' = Major: 1, Minor: 2, Patch: 3, PreReleaseLabel: '', IsStable: True
'1.2.3Beta' = Major: 1, Minor: 2, Patch: 3, PreReleaseLabel: '', IsStable: True

How Delphinus compares versions

This works similar to Nuget. It first Compares each Versionnumber of one Version with another. If both Versions are identical up to this point, it will do a Textcompare (not casesensitive) on the PreReleaseTable. An empty PreReleaseLabel is higher than any other. Resulting in a stable version always being on top of unstables.

Example of an ordered list of Versions (first is Highest)

2.1
2
1.9
1.8.9
1.8.9-Foo
1.8.9-Beta
1.8.9-Alpha