На мой взгляд, почти любая схема номера выпуска может быть сделана для более или менее разумной работы. В системе, в которой я работаю, используются номера версий, такие как 11.50.UC3, где U указывает 32-разрядную Unix, а C3 - небольшое количество исправлений (номер исправления); другие буквы используются для других типов платформ. (Я бы не рекомендовал эту схему, но она работает.)
Есть несколько золотых правил, которые до сих пор не были изложены, но которые подразумеваются в том, что обсуждали люди.
- Не выпускайте ту же версию дважды - как только версия 1.0.0 выпущена для всех, ее никогда нельзя переиздавать.
- Номера выпуска должны увеличиваться монотонно. То есть код в версиях 1.0.1 или 1.1.0 или 2.0.0 всегда должен быть ниже версии 1.0.0, 1.0.9 или 1.4.3 (соответственно).
Теперь, на практике, люди должны выпустить исправления для более ранних версий, а более новые версии доступны - см GCC, например:
- GCC 3.4.6 был выпущен после 4.0.0, 4.1.0 (и AFAICR 4.2.0), но он продолжает функционировать GCC 3.4.x вместо добавления дополнительных функций, добавленных в GCC 4.x.
Итак, вы должны тщательно построить схему нумерации версий.
Еще один момент, который я твердо верю в:
- Номер версии релиз не имеет никакого отношения к CM (VCS) нумерации версии системы для простых программ, за исключением. Любая серьезная часть программного обеспечения с более чем одним основным исходным файлом будет иметь номер версии, не имеющий отношения к версии любого отдельного файла.
С SVN вы можете использовать номер версии SVN - но, вероятно, это будет не так, как если бы он слишком непредсказуем.
Для материала, с которым я работаю, номер версии является чисто политическим решением.
Кстати, я знаю программное обеспечение, которое прошло через версии от 1.00 до 9.53, но затем изменилось на 2.80.Это была грубая ошибка, продиктованная маркетингом. Конечно, версия 4.x программного обеспечения устарела, поэтому она не сразу начала путаницу, но версия 5.x программного обеспечения все еще используется и продается, а исправления уже достигли 3.50. Я очень беспокоюсь о том, что мой код, который должен работать как с 5x (старый стиль), так и с 5.x (новый стиль), будет делать, когда произойдет неизбежный конфликт. Наверное, я должен надеяться, что они будут постепенно переходить на 5.x до тех пор, пока старый 5.x не умрет, но я не оптимист. Я также использую номер искусственной версии, такой как 9.60, чтобы представить код 3.50, чтобы я мог выполнять здравомыслие if VERSION > 900
, вместо того, чтобы делать это: if (VERSION >= 900 || (VERSION >= 280 && VERSION < 400)
, где я представляю версию 9.00 на 900. И затем появляется значительное изменение в версии 3.00.xC3 - моя схема не может обнаружить изменения на уровне незначительного выпуска ... ворчать ... ворчать ...
NB: Eric Raymond обеспечивает Software Release Practice HOWTO включая раздел (ссылки) по наименованию (нумерация).
Уже обсуждалось: [http://stackoverflow.com/questions/65718/what-do-the-numbers-in-a-version-typically-represent-ie-v1901](http://stackoverflow. com/questions/65718/what-do-the-numbers-in-a-version-обычно-представлять-ie-v1901) – Kev 2008-09-25 17:00:56