2010-07-28 3 views
7

У меня есть приложение asp.net/C#, которое использует subversion для управления версиями.Версия сборки vs Номер редакции

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

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

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

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

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

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

+0

Кажется, что каждый указывает на «теги». Любая идея, где я могу получить учебник по тегам? и как их создать? *** Я даже не слышал о тегах *** –

+0

См. Ссылку, которую я предоставил. :) –

ответ

4

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

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

Единственное, что я не вкладываю в это, это мой кофе, который I take black.

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

+0

да ... это то, к чему я работаю, просто не уверен, как создавать теги :( –

+0

все, что вам нужно сделать, это использовать Команда «svn copy» и создаст тег в любом месте, где угодно. Все теги - это «копия», которая реализована как «указатель» в subversion. Вы должны выполнить эту команду внутри своего файла сборки или внутри ваша система управления построением. CruiseControl, например, делает этот тег для вас, просто сконфигурировав ваш проект должным образом. –

+2

Извините, я должен не согласиться с тем, чтобы не поместить его в кофе. Как еще вы думаете, что он оставлен от за день до? –

4

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

http://svnbook.red-bean.com/en/1.1/ch04s06.html

+0

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

+0

Я думаю, что это зависит от того, как вы используете подрывную деятельность, вы используете что-то вроде черепахового SVN или из командной строки, образцы в книге - примеры использования инструментов командной строки. Я рекомендую взглянуть на остальную часть книги, если вы хотите освежить http://svnbook.red-bean.com/ –

+0

Да, я использую инструменты gui, такие как черепаха и анк, я никогда не использовал командную строку (чисто потому что мне не нужно было), но сейчас я читаю немного :) –

2

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

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

2

Применить тег в свое деревогенерировальное производство после того, как обновили файлы AssemblyVersion и AssemblyFileVersion.

2

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

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

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

   +     + patch release tag 
      /    /
      +-----------------+-+---- release branch 
     /     | merged fix into trunk... 
----------+----------------------------------------------------- trunk 
3

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

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

+0

Мне удалось получить номер версии из svn, используя http://sharpsvn.open.collab.net/ (SharpSVN), однако это создает немного боли ... почему?!? .... ну, когда точно вы скажете, чтобы проверить версию, и где вы ее сохраните? –

+0

Tehre - это настраиваемая задача, называемая AssemblyInfoTask, которая обновляет сборку сборки при сборке, поэтому вы можете использовать такую ​​задачу. Однако для получения фактического номера ревизии может потребоваться некоторая настройка, я не использовал ее сам, потому что мы пошли с более простым решением, экспортировали текстовый файл с номером ревизии, который включен в веб-сайт, как подсказка для нас. Недостатком является то, что мы не можем видеть номер версии на нашей DLL – jishi

2

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

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

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

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

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^