Как синхронизировать номер ревизии SVN с моего веб-сайта ASP.NET?

голоса
84

Переполнение стека имеет номер версии диверсии в нижней части:

пересмотр SVN: 679

Я хочу использовать такой автоматический контроль версий с моими .NET Web Site/Application, Windows Forms, проекты WPD / решений.

Как это реализовать?

Задан 01/08/2008 в 19:00
источник пользователем
На других языках...                            


7 ответов

голоса
24

Вы можете сделать это, добавив следующий в любом месте вашего кода

$Id:$

Так, например @Jeff сделал:

<div id="svnrevision">svn revision: $Id:$</div>

и при проверке на сервере заменить $ Id: $ с текущим номером версии. Я также нашел эту ссылку .

Существует также $ Date: $ , $ Rev: $ , $ Revision: $

Ответил 01/08/2008 в 19:08
источник пользователем

голоса
29

Похоже , Джефф использует CruiseControl.NET на основе некоторых листать подкасты транскриптов. Это , кажется, автоматизированные возможности развертывания из системы управления в производстве. Может ли это быть где вставка происходит?

Ответил 01/08/2008 в 19:24
источник пользователем

голоса
9

$revи другие подобные ему являются изменения для отдельных файлов, так что они не изменятся, если изменения файлов. Номер на веб-странице (скорее всего, я предполагаю, что здесь) в SVN номер ревизии для всего проекта. Это отличается от файлов изменений, которые другие были указывающих на.

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

Для того, чтобы сделать это, используйте раствор CI, который поддерживает его, или использовать процесс сборки (MSBuild / Nant), чтобы сохранить эту версию и записать его в файлы, прежде чем «развертывание» его.

Ответил 13/08/2008 в 02:28
источник пользователем

голоса
26

Мы делаем это с xUnit.NET для нашей автоматизированной сборки. Мы используем CruiseControl.net(и пробуя TeamCity). Задача MSBuild , что мы бежим для непрерывной интеграции автоматически изменяет номер сборки для нас, так что в результате сборки ZIP - файл содержит правильно версионный набор библиотек DLL и EXE - файлов.

Наш файл MSBuild содержит ссылку UsingTask для DLL , которая делает регулярные замены выражения: (вы можете использовать этот DLL, так как она покрыта лицензией MS-PL, а)

  <UsingTask
     AssemblyFile = "3rdParty \ CodePlex.MSBuildTasks.dll"
     TaskName = "CodePlex.MSBuildTasks.RegexReplace" />

Далее, мы извлекаем номер сборки, который предоставляется системой автоматически CI. Кроме того, можно получить у поставщика системы управления версиями, чтобы обеспечить номер версии источника, если вы хотите, но мы обнаружили, что сборка # в системе CI был более полезным, потому что не только может видеть результаты интеграции числом CI сборки, который также обеспечивает ссылаться на ревизию (ы), которые были включены в сборке.

 <! - каскадные попытки найти номер сборки ->

 <PropertyGroup Condition = " '$ (BuildNumber)' == ''">
   <BuildNumber> $ (BUILD_NUMBER) </ BuildNumber>
 </ PropertyGroup>
 <PropertyGroup Condition = " '$ (BuildNumber)' == ''">
   <BuildNumber> $ (CCNetLabel) </ BuildNumber>
 </ PropertyGroup>
 <PropertyGroup Condition = " '$ (BuildNumber)' == ''">
   <BuildNumber> 0 </ BuildNumber>
 </ PropertyGroup>

(Старается BUILD_NUMBER, который из TeamCity, то CCNetLabel, который не от CC.Net, и если ни один не присутствует, то по умолчанию 0, так что мы можем протестировать автоматизированный сценарий сборки вручную.)

Далее, у нас есть задача, которая устанавливает номер сборки в файл GlobalAssemblyInfo.cs, что мы ссылаемся на все наши проекты:

 <Target Name = "SetVersionNumber">
   <REGEXREPLACE
       Шаблон = 'AssemblyVersion \ ( "(\ d + \. \ D + \. \ D +) \. \ D +" \)'
       Замена = 'AssemblyVersion ( "$ 1. $ (BuildNumber)")'
       FILES = 'GlobalAssemblyInfo.cs' />
   <Exec Command = "Attrib -r xunit.installer \ App.manifest" />
 </ Target>

Это найти атрибут AssemblyVersion и заменяет ABCD номер версии с abcBuildNumber. Мы, как правило, покидаем источник проверяется в дерево с первыми тремя частями номера строителя фиксированного и четвертый на нуль (Fe, сегодня это 1.0.2.0).

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

Ответил 16/08/2008 в 19:00
источник пользователем

голоса
10

@Balloon Если вы используете TortoiseSVN, вы можете использовать упакованный SubWCRev программу. Он запрашивает рабочую копию и говорит вам только самый высокий номер ревизии. Следует признать, что это , кажется, на стороне клиента подход к проблеме на стороне сервера, но так как это хорошая программа командной строки, вы должны быть в состоянии захватить свою продукцию для использования довольно легко.

Ответил 15/09/2008 в 20:04
источник пользователем

голоса
5

Чтобы добавить @ ответ BradWilson в: «Вы также можете получить у поставщика системы управления версиями , чтобы обеспечить номер версии источника , если вы хотите»

Для подключения Subversion и MSBuild: MSBuild сообщества Задачи проекта

Ответил 01/10/2008 в 12:51
источник пользователем

голоса
17

Если вы используете ASP.Net MVC(как StackOverflow), я написал легко следовать 3 шагом руководство о том , как автоматически получать и отображать последнюю версию SVN . Руководство было вдохновлено я подумал именно об этом вопросе! : о)

Ответил 17/12/2008 в 11:17
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more