Посоветуйте формат номера версии ПО, который
1) Универсальный (совместим с разными моделями разработки, etc.)
2) Максимально короткий. Максимально цифровой.
3) Учитывает ветвления, слияние...* То есть совместимый с современными VCS типа git, hg.
4) Сравнимые версии** должны сравниваться пакетными менеджерами. То есть x1.y1.z1... > x2.y2.z2... при x1>x2 или (x1=x2 и y1>y2 или (...)), то есть лексикографически, но внутри каждого поля (x,y,z,..) как целые числа***.
5) Уникальный****. Точность до «коммита» (в смысле git, т.е. элементарного функционально законченного изменения). Но: не требуется особое выделение релизов, тестовых версий, etc*****. То есть номер версии инкрементируется всегда одинаково независимо от масштаба изменения.
P.S. Просьба не обсуждать указанные требования. Мне нужна помощь только в выборе подходящего формата нумераций.
_____________
* Таким образом, простой линейный порядок версий 1,2,3... (как издания книги) не подходят.
** Например, в одной ветке. Вообще же говоря разные версии одного ПО не обязаны быть сравнимыми (опять же, например, разные ветви разработки).
*** Таким образом, git'овский sha1 или т.п. идентификаторы не подходят.
**** Таким образом, формат версии в виде текущей даты (YYYY.MM.DD) не годится. Он не подходит и по п.3.
***** Ибо это, во-первых, субъективно, а во-вторых, указание стабильности/тестовости/... той или версии можно сделать в документации или на офсайте.