Cómo sincronizo el número de revisión SVN con mi ASP.NET ¿sitio web?


Stack Overflow tiene un número de versión de subversion en la parte inferior:

Svn revisión: 679

Quiero usar este control de versiones automático con mis .NET Web Site/Application, Windows Forms, WPD projects/solutions.

¿Cómo puedo implementar esto?

Author: Insane Skull, 2008-08-01

7 answers

Parece que Jeff está usando CruiseControl.NET basado en algunas hojeando las transcripciones de los podcasts. Esto parece tener capacidades de implementación automatizada desde el control de origen hasta la producción. ¿Podría ser aquí donde está ocurriendo la inserción?

 30
Author: saint_groceon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-29 06:27:45

Hacemos esto con xUnit.net para nuestras compilaciones automatizadas. Usamos CruiseControl.net (y estamos probando TeamCity). La tarea de MSBuild que ejecutamos para la integración continua cambia automáticamente el número de compilación para nosotros, por lo que el archivo ZIP de compilación resultante contiene un conjunto de DLL y EXEs correctamente versionados.

Nuestro archivo MSBuild contiene una referencia UsingTask para una DLL que hace reemplazos de expresiones regulares: (le invitamos a usar esta DLL, ya que está cubierta por la licencia MS-PL como bien)

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

A continuación, extraemos el número de compilación, que es proporcionado automáticamente por el sistema CI. También puede hacer que su proveedor de control de código fuente proporcione el número de revisión de código fuente si lo desea, pero encontramos que el # de compilación en el sistema CI fue más útil, porque no solo puede ver los resultados de la integración por el número de compilación de CI, sino que también proporciona un enlace al conjunto de cambios que se incluyeron en la compilación.

 <!-- Cascading attempts to find a build number -->

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

(Intentamos BUILD_NUMBER, que es de TeamCity, entonces ccnetlabel, que es de CC.net, y si ninguno de los dos está presente, por defecto a 0, por lo que podemos probar el script de compilación automatizada manualmente.)

A continuación, tenemos una tarea que establece el número de compilación en un GlobalAssemblyInfo.archivo cs que enlazamos en todos nuestros proyectos:

 <Target Name="SetVersionNumber">
   <RegexReplace
       Pattern='AssemblyVersion\("(\d+\.\d+\.\d+)\.\d+"\)'
       Replacement='AssemblyVersion("$1.$(BuildNumber)")'
       Files='GlobalAssemblyInfo.cs'/>
   <Exec Command="attrib -r xunit.installer\App.manifest"/>
 </Target>

Esto encuentra el atributo AssemblyVersion, y reemplaza el número de versión a.b.c.d con a.b.c.BuildNumber. Por lo general, dejaremos la fuente registrada en el árbol con las tres primeras partes del número de constructor fijo, y el cuarto en cero (f.e., hoy es 1.0.2.0).

En su proceso de compilación, asegúrese de que la tarea SetVersionNumber precede a su tarea de compilación. Al final, usamos nuestra tarea Zip para comprimir los resultados de compilación de modo que tengamos un historial de los binarios para cada compilación automatizada.

 26
Author: Brad Wilson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-29 06:29:07

Puede hacerlo agregando lo siguiente en cualquier lugar de su código

$Id:$

Así que por ejemplo @ Jeff lo hizo:

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

Y cuando se comprueba en el servidor reemplazado Id Id: with con el número de revisión actual. También encontré esta referencia.

También Hay $Fecha:$, $Rev:$, $Revisión:$

 25
Author: Nick Berardi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-29 06:29:47

Si está utilizando ASP.Net MVC (como lo hace StackOverflow), he escrito una guía de 3 pasos fácil de seguir sobre cómo obtener y mostrar automáticamente la última revisión de SVN. ¡La guía se inspiró pensando para mí misma acerca de esta misma pregunta! : o)

 17
Author: Andrew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-29 06:28:48

@Globo Si está utilizando TortoiseSVN, puede utilizar el programa empaquetado SubWCRev . Consulta una copia de trabajo y le indica el número de revisión más alto. Es cierto que esto parece ser un enfoque del lado del cliente para un problema del lado del servidor, pero ya que es un buen programa de línea de comandos, debería ser capaz de capturar su salida para su uso con bastante facilidad.

 10
Author: nickf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-15 19:04:33

$rev y otros similares son revisiones para los archivos individuales, por lo que no cambiarán a menos que el archivo cambie. El número en la página web es (muy probablemente, estoy asumiendo aquí) el número de revisión svn para todo el proyecto. Eso es diferente a las revisiones de archivos, a las que otros han estado apuntando.

En este caso asumo que CCNET está sacando el número de revisión del proyecto y reescribiendo una parte de la página web con ese número. Cualquier solución CI debe ser capaz de hacer esto, establecer esto lo hago yo mismo con CCNET y Teamcity (aunque no páginas web, sino versionado automático de versiones de despliegue/ensamblaje).

Para hacer esto, use una solución de CI que lo soporte, o use su proceso de compilación (MSBuild/Nant) para almacenar esa versión y escribirla en los archivos antes de "implementarla".

 9
Author: James Pogran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-29 06:28:34

Para agregar a la respuesta de @BradWilson: "También puede obtener que su proveedor de control de código fuente proporcione el número de revisión de código fuente si lo desea"

Para conectar Subversion y MSBuild: Proyecto de Tareas Comunitarias de MSBuild

 5
Author: jan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-29 06:28:18