2008-10-10 1 views
7

Наша ситуация такова, но мне любопытно об этой проблеме в любой ситуации.Как вы реализуете свои проекты и управляете релизами?

Мы имеем каркас, состоящий из 4-х проектов:

  • бобы
  • Util
  • рамки
  • веб

У нас также есть модули, которые нуждаются в версии и зависят от версия бобы и утилиты.

Наконец, у нас есть проект клиента, который состоит из конкретной версии основных проектов и одного или нескольких модулей.

Есть ли стандартный способ реализации этих проектов?

Мне кажется, что это просто сложно, поскольку мы пытаемся доставить релизы в QA, а затем управлять нашей текущей разработкой с поддержкой выпуска (release = тег и возможная ветка).

Я вроде предпочитаю следующие:

1.2.0 - главные и второстепенные версии + освобождение.

1.2.1 - Следующий релиз

1.2.0_01 - исправлена ​​ошибка в 1.2.0 выпуске (филиал)

т.д.

Любые идеи?

ответ

10

Мы используем major.minor.bugfix. Основной релиз происходит только для огромных изменений. Выдается незначительный выпуск при изменении API. Все остальные выпуски - это исправления ошибок. Там определенно полезность в том, что там есть номер сборки или ревизии для устранения неполадок, хотя, если у вас есть действительно строгий CM, вам может и не понадобиться его включать.

Координация между версиями всех этих проектов может быть выполнена очень хорошо с помощью таких инструментов, как Apache Ivy или Maven. Построение одного проекта с его собственным номером версии может включать в себя агрегацию определенных версий (продуктов) других проектов, поэтому ваши файлы сборки обеспечивают строгое сопоставление версий снизу вверх. Сохраните все это в [вставить любимый инструмент управления версией здесь], и у вас хорошая история.

+0

Одно место, в котором я работал, сделал майор-младший-багфикс, был действительно серьезен только в том, чтобы увеличивать майор для огромных вещей.Они существовали в течение 15 лет, и я работал над последней и самой лучшей версией: 1.52.0 :) – tloach 2008-10-10 17:54:16

2

Нет стандартных систем с номерами версий. Общие темы должны иметь основной, младший и строгий номер, а иногда и номер точки (1.2.2.1, например, для версии 1.2 point release 2 build 1). Смысл номеров версий очень гибкий. Частый выбор - иметь обратную совместимость между младшими версиями или точечными релизами.

Релизы, вероятно, лучше всего сделать путем маркировки набора файлов с контролируемым источником, если это позволяет ваш источник управления. Повторное создание релиза так же просто, как синхронизация с меткой и зданием, что очень полезно :)

2

В автоматизированной системе сборки я в настоящее время использую версию I с Major.Minor.Build.X, где Build каждый время, которое мы нажимаем на системный тест, а X - последний номер ревизии Subversion из репо, из которого строится код. Кажется, очень хорошо работает Subversion, поскольку мы можем легко вернуться к кодовой базе конкретной сборки, если возникнет такая необходимость.

1

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

Как указано в workmad3, для чисел сборки действительно нет общего правила. Мой совет - использовать что-то, что имеет смысл для вашей команды/компании.

Некоторые места, в которых я работал, имеют выровненную строчную нумерацию с эталонными проектами и итерациями,
e.g: Major = Release или Milestone, Minor = Iteration, Build = номер сборки (начиная с начала проекта или с начала итерации), Revision = Если сборка должна быть перестроена (или разветвлена).

3

Я использую {main}. {Minor}. {Buildday}. {Serial}. Для Windows мы используем утилиты stampver.exe и UpdateVersion.exe для проектов .NET, которые обрабатывают это в основном автоматически.

0

Вы не указали, что какой-либо из проектов имеет доступ к базе данных, но если это возможно, это может быть еще одним фактором, который следует учитывать. Мы используем схему major.minor.bugfix.buildnumber, аналогичную той, которая описана в ответах на этот вопрос, примерно с той же логикой, но с добавленным требованием, чтобы изменения схемы базы данных требовали хотя бы незначительного увеличения. Это также обеспечивает схему именования для схем базы данных. Например, версии 1.2.3 и 1.2.4 могут работать как против схемы базы данных «1.2», но для версии 1.3.0 требуется схема базы данных «1.3».

+0

Мы используем autopatch. Он автоматически обновит базу данных при развертывании новых сборок. (отслеживает их в таблице патчей) Это довольно хорошо. – ScArcher2 2008-11-06 16:40:56

-1

В настоящее время у нас нет реального управления версиями. Мы используем номер сборки svn и дату выпуска. (имя тега, как, например, release_081010_microsoft)

Старые продукты используют major.minor.sub нумерации версий

майор никогда не изменял незначительные изменения на каждом выпуске/featurerelease каждые 6 месяцев. Sub - это все, что не влияет на набор функций - в основном исправления.

2

Я использую вариации на Linux ядра системы нумерации версии:

major.minor.bugfix

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

1

Одним из наиболее распространенных соглашений является файл major.minor.bugfix с дополнительным суффиксом, обозначающим номер сборки или предварительное обозначение (например, альфа, бета и т. Д.).

Мои номера команд строятся в соответствии с вехами проекта - сборка передается нашей группе QA в конце итерации развития (каждые несколько недель). Промежуточные CI-сборки не нумеруются; потому что мы используем Maven, эти сборки пронумерованы суффиксом SNAPSHOT.

Независимо от того, что вы решите, обязательно задокументируйте и убедитесь, что все это понимают. Я также предлагаю вам документ и последовательно применять политику ветвления релиза, или он может быстро запутаться для всех. Хотя только с четырьмя проектами должно быть довольно легко отслеживать, что происходит.

+0

Удивительно, мы также используем maven. Похоже, наш план похож на то, что вы сказали. Я полностью согласен с тем, что заставить всех остальных понять этот процесс является ключевым. – ScArcher2 2008-10-16 14:48:41