Как вы редактируете свои проекты?

Я понимаю, что Microsoft использует этот шаблон при создании версий своих продуктов: Major.Minor.Build.Revision.

Major меняется, когда «разработчики» хотят показать, что в программном обеспечении произошли большие изменения и обратная совместимость не может быть предположена. Может быть, сделан серьезный переписывание кода.

Незначительное число представляет собой значительное улучшение с целью обратной совместимости.

Номер сборки - небольшое изменение, например повторная компиляция того же источника.

Ревизия используется для исправления дыры в безопасности и должна быть полностью взаимозаменяемой. И сборка, и редакция не являются обязательными. Эта информация основана на классе версии MSDN.

Как вы редактируете свои проекты и почему вы делаете их именно так?


person Fossmo    schedule 26.09.2008    source источник


Ответы (12)


Обычно мы делаем major.minor [.main maintenance [.build]] там, где я работаю, но, похоже, это немного варьируется в зависимости от проекта.

Мажор / минор такой же, как вы упомянули. обслуживание будет увеличиваться для небольших исправлений (ошибок) и сборки при каждом запуске сервера сборки.

person Max Stewart    schedule 26.09.2008

Мне лично нравится использовать схему, которая фокусируется на уровне обратной совместимости, которую могут ожидать пользователи проекта / продукта:

До 1.0:

  • 0.0.1 = Первый выпуск
  • 0 .-. X = обратно совместимое обновление
  • 0.X.0 = обратно несовместимое обновление

После 1.0:

  • -.-. X = Обновление без изменений интерфейса
  • -.X.0 = Обновление с дополнениями обратно совместимого интерфейса
  • X.0.0 = обратно несовместимое обновление

Использование совместимости в качестве центрального пункта в номере версии позволяет пользователям, особенно если продукт является библиотекой, решить, ожидают ли они плавного и безопасного обновления или нет.

person Chris Vest    schedule 26.09.2008
comment
Семантическое управление версиями появилось с тех пор, как я написал этот ответ: semver.org - person Chris Vest; 07.05.2011

Я часто вижу Xyz, где X - год после выпуска, а yz - месяц года. Т.е. 201 - это январь, через 2 года после релиза. Т.е. когда продукт запускается в мае, его первый выпуск - 105. Выпуск в феврале следующего года - 202.

person Marcin    schedule 26.09.2008

Обычно мы редактируем наши проекты на основе текущей даты выпуска, YYYY.MM.DD. *, и позволяем автоматически генерировать номер сборки, например, если бы у нас был выпуск сегодня, это был бы 2008.9.26.BUILD.

person mattruma    schedule 26.09.2008

Я использую major.minor.point.revision, где точка - это выпуск с исправлением ошибок, а ревизия - это ревизия репозитория. Это просто и хорошо работает.

person Serafina Brocious    schedule 26.09.2008

Я работаю над множеством небольших проектов и лично считаю это полезным.

PatchNumber.DateMonthYear

Это для небольших веб-инструментов, где пользователи могут видеть, когда было последнее обновление и как часто оно обновлялось.

PatchNumber - это количество выпущенных выпусков, а остальное используется, чтобы показать пользователям, когда оно было опубликовано.

person Ólafur Waage    schedule 26.09.2008

Major.minor.patch.build, где патч является исправлением или выпуском патча.

Если вы можете получить QA через SVN и находитесь на SVN, вы можете использовать версию svn HEAD в качестве номера сборки. Таким образом, каждая сборка описывает, откуда она взялась с точки зрения управления версиями и что входит в сборку. Это означает, что у вас будут сборки с пробелами (1.0.0.1, 1.0.0.34 ....)

person Peter Kahn    schedule 26.09.2008

Major.Minor.BugFix.SVNRevision

e.g: 3.5.2.31578

  • Версия SVN дает вам очень точный код, отправленный заказчику. Вы абсолютно уверены, было ли это исправление или нет.
  • Это также помогает найти правильный PDB в случае ошибки приложения. Просто сопоставьте версии SVN на своем сервере сборки, скопируйте PDB в папку EXE, откройте отладчик, и вы получите трассировку стека сбоя.
person David    schedule 27.09.2008

Я просто делаю Major.minor. Поскольку я единственный разработчик (иногда получаю помощь), работающий над веб-приложением, большинству людей наплевать на мелкие исправления, которые я вношу. Поэтому я просто перебираю второстепенные версии, добавляя новые функции и номера основных версий, когда делаю громадные изменения / обновления. В противном случае я просто игнорирую небольшие исправления, касающиеся номеров версий (хотя у меня есть номера ревизий Subversion, если мне нужно обратиться за собой).

person Jared    schedule 26.09.2008

Просто у меня есть номер. Первый выпуск - 001. Третья бета-версия второго выпуска - 002b3 и так далее. Это только для личного пользования, у меня на самом деле нет ничего «выпущенного» на данный момент, так что это все теория.

person Bernard    schedule 26.09.2008

Я начал использовать псевдоподобный формат Ubuntu: Y.MMDD

Это помогает по нескольким причинам:

  • легче проверить требования к версии: if (version ‹8.0901) die / exit / etc. ;
  • он может быть автоматически сгенерирован в процессе сборки

По этой второй точке (рубин и рейк):

def serial(t)
   t = Time.now.utc if not t.instance_of?(Time)
   t.strftime("%Y").to_i - 2000 + t.strftime("0.%m%d").to_f
end

serial(Time.now)     #=> 8.0926
serial(Time.now.utc) #=> 8.0927

ПРИМЕЧАНИЕ. t.strftime ("% Y.% m% d"). To_f - 2000 обнаруживает неточности с плавающей запятой: 8.09269999999992

person Jonathan Lonowski    schedule 27.09.2008

В 80-х мне нравился нантакетский способ создания версий своего компилятора Clipper:

Клипер зима 1984
Клипер лето 1985
Клипер зима 1985
Клипер осень 1986
Клипер лето 1987

Ну и накладки ....

[слезы на глазах]

person Kev    schedule 27.09.2008