Mod versioning

OvGME supports versioning for Mod-Archives (not for Directory-Mod). The mod version is identified localy by a string contained in a specific text file at root of the Mod-Archive zip file, or by the repository provided data. This version is used by the repositories mechanism to check which version of a same mod is greater than another.

#### The version.txt file

OvGME automatically checks if a properly named "version.txt" file exists at root of the zip file of a Mod-Archive. If this file exists, it will be considered as the version string for this mod. This file must be a standard ASCII .txt file and the version string should follow the format as described below.

#### Version string format

The version string must be only numbers optionally separated by dot, no letter nor any other special character are allowed.
There are up to three version components allowed, all separated by one (and only one) dot, to fit the standard GNU version numbering scheme as follow:
major.minor.revision
A valid version string does not have to include the three version components, it can for example include only version major and version minor components, or even only one number which will be considered as the version major component.
Here are examples of valid version string:

> 1.5.0
> 1.2
> 2
> 0.9.5
> 0.9

The string parsing rules are the following:

- If there are three numbers, each number is sequentially interpreted as:
  version major . version minor . version revsion
- If there are two numbers, each number is sequentially interpreted as:
  version major . version minor
- If there is only one number, the number is interpreted as:
  version major

#### Version comparison

OvGME automatically determines which version is greater by analyzing the major, minor and revision components in order. If two version strings does not have the same format, it uses the following rule to compare them: The missing components at the right of the version major component has a 0 value.
For example, a version string "1.2" is in fact numerically translated as 1.2.0 and a "2" string is numerically translated as 2.0.0. So:

> if the "1.2" string (1.2.0) must be compared to the "1.2.1" string, the "1.2.1" string will be considered as the greater one.
> If the "1.2.2" string must be compared to the "1.3" string, the "1.3" string (1.3.0) will be considered as the greater one.
> If the "1" string must be compared to the "0.5.5" string, the "1" string (1.0.0) will be considered as the greater one.