Версия сборки и номер редакции - PullRequest
7 голосов
/ 28 июля 2010

У меня есть приложение asp.net/C#, которое использует subversion для контроля версий.

Мое приложение автоматически увеличивает свои AssembleVersion и AssemblyFileVersion для каждой сборки, которая работает как чудо, и отображает номер сборки на административной стороне сайта.

Мы отслеживаем AssembleVersion и AssemblyFileVersion, когда делаем развертывание, однако, когда возникает проблема, и нам нужно откатиться до определенной версии, мы не знаем, какая ревизия предназначена для подрывной деятельности.

У меня есть несколько идей:

  1. Сохранить AssembleVersion как комментарий в каждом файле
  2. Имейте ключевое слово в комментариях к коммиту, которое заменяется на AssembleVersion при каждом коммите (все еще нужно выяснить, как это сделать)

Любая помощь и предложения будут оценены

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

Ответы [ 8 ]

4 голосов
/ 28 июля 2010

Когда я строю, я помещаю этот номер сборки везде.

  • Я поместил его в тег в SVN.
  • Я помещаю его в метаданные сборки каждой сборки, которую я строю.
  • Я добавляю его в конец имени файла в моих установщиках.
  • Я поместил его в нижний колонтитул каждой из моих развернутых веб-страниц.
  • Я положил его в нижний колонтитул моих отчетов.
  • Я поместил его на заставку своих клиентских приложений.
  • Я установил его в окне приветствия для моих установщиков.

Единственное, что я не кладу в него, это мой кофе, который Я беру черный .

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

4 голосов
/ 28 июля 2010

Как насчет использования тегов.

http://svnbook.red -bean.com / о / 1,1 / ch04s06.html

3 голосов
/ 28 июля 2010

Теги не очень полезны, если вам часто приходится строить.Может быть, вы найдете способ обновить версию сборки, основанную на ревизии svn?Также включите имя ветви, потому что они разделяют ревизии.

И вы сможете извлечь версию сборки на своих страницах ASP.NET и распечатать ее программно в нижнем колонтитуле или в другом месте.

2 голосов
/ 28 июля 2010

Теги / ветки определенно рекомендуемый подход здесь.

Вы также можете (или дополнительно) включить номер редакции svn в свой AssemblyInfo. Одним из подходов является использование задачи AssemblyInfo из проекта msbuildtasks на http://msbuildtasks.tigris.org

Для получения дополнительной информации google msbuild svn revision assemblyinfo

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

2 голосов
/ 28 июля 2010

Вы можете "ветвь для выпуска".Перед созданием сборки релиза вы можете разветвить ствол, а затем создать в новой ветке тег с номером версии релиза.

              + release tag
             /
            +--------------------- release branch
           /  
----------+----------------------------------------------------- trunk

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

              +                 + patch release tag
             /                 /
            +-----------------+-+---- release branch
           /                    | merged fix into trunk...
----------+----------------------------------------------------- trunk
2 голосов
/ 28 июля 2010

Примените тег к дереву исходного кода после обновления AssemblyVersion и AssemblyFileVersion.

2 голосов
/ 28 июля 2010

Вы можете пометить ствол Subversion с помощью AssembleVersion или AssemblyFileVersion, в зависимости от того, что имеет смысл.

Вы также можете отслеживать номер ревизии Subversion так же, как вы сейчас отслеживаете AssembleVersion и AssemblyFileVersion при развертывании.

0 голосов
/ 27 июля 2011

Другой вариант - использовать последнюю измененную ревизию в качестве вашего номера сборки. Это означает, что каждый раз, когда вы создаете автоматическую метку. С hudson / jenkins все просто, поскольку у вас есть переменная окружения SVN_REVISION. Проблема заключается в том, что номер редакции становится очень большим, и обсуждения в коридоре о 1.0.0.20456 против 1.0.0.20489 вызывают утомление.

...