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

votos
84

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

svn revision: 679

Quiero usar tales versiones automáticas con mis .NET Web Site/Application, Windows Forms, WPD proyectos / soluciones.

¿Cómo implemento esto?

Publicado el 01/08/2008 a las 19:00
fuente por usuario
En otros idiomas...                            


7 respuestas

votos
29

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

Respondida el 01/08/2008 a las 19:24
fuente por usuario

votos
26

Hacemos esto con xUnit.net para nuestras construcciones automatizadas. Usamos CruiseControl.net(y estamos probando TeamCity). La tarea 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 reemplaza las expresiones regulares: (le invitamos a usar esta DLL, ya que está cubierta por la licencia MS-PL también)

  <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 de CI. También podría hacer que su proveedor de control de origen proporcione el número de revisión de origen si lo desea, pero descubrimos que el # de compilación en el sistema de IC era más útil, porque no solo puede ver los resultados de integración por el número de compilación CI, sino que también proporciona un enlace de regreso al conjunto de cambios que se incluyeron en la compilación.

 <! - Cascada intenta encontrar un número de compilación ->

 <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, luego ccnetlabel, que es de CC.net, y si ninguno de los dos está presente, de manera predeterminada ponemos a 0, por lo que podemos probar el script de compilación automatizado manualmente).

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

 <Nombre de destino = "SetVersionNumber">
   <RegexReplace
       Patrón = 'AssemblyVersion \ ("(\ d + \. \ D + \. \ D +) \. \ D +" \)'
       Reemplazo = 'AssemblyVersion ("$ 1. $ (BuildNumber)")'
       Files = 'GlobalAssemblyInfo.cs' />
   <Exec Command = "attrib -r xunit.installer \ App.manifest" />
 </ Target>

Esto busca el atributo AssemblyVersion y reemplaza el número de versión abcd con abcBuildNumber. Por lo general, dejaremos la fuente registrada en el árbol con las tres primeras partes del número de constructor corregidas, y la cuarta en cero (fe, hoy es 1.0.2.0).

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

Respondida el 16/08/2008 a las 19:00
fuente por usuario

votos
24

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

$Id:$

Entonces, por ejemplo, @Jeff lo hizo:

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

y cuando se registró, el servidor reemplazó $ Id: $ con el número de revisión actual. También encontré esta referencia .

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

Respondida el 01/08/2008 a las 19:08
fuente por usuario

votos
17

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 visualizar automáticamente la última revisión de SVN . ¡La guía se inspiró al pensar sobre esta misma pregunta! : o)

Respondida el 17/12/2008 a las 11:17
fuente por usuario

votos
10

@Balloon Si está usando TortoiseSVN, puede usar el programa SubWCRev empaquetado . 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 dado que es un buen programa de línea de comandos, debería poder capturar su salida para usarla con bastante facilidad.

Respondida el 15/09/2008 a las 20:04
fuente por usuario

votos
9

$revy otras similares son revisiones de los archivos individuales, por lo que no se modificarán a menos que el archivo cambie. El número en la página web (lo más probable es que asuma aquí) es el número de revisión de svn para todo el proyecto. Eso es diferente a las revisiones de archivos, que otros han estado señalando.

En este caso, supongo que CCNET está extrayendo el número de revisión del proyecto y reescribiendo una parte de la página web con ese número. Cualquier solución de CI debería ser capaz de hacer esto, configúrelo yo mismo con CCNET y Teamcity (aunque no páginas web, sino versiones automáticas de versiones de implementación / ensamblaje).

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

Respondida el 13/08/2008 a las 02:28
fuente por usuario

votos
5

Para agregar a la respuesta de @ BradWilson: "También puede obtener su proveedor de control de origen para proporcionar el número de revisión de origen si lo desea"

Para conectar Subversion y MSBuild: Proyecto de tareas de comunidad de MSBuild

Respondida el 01/10/2008 a las 12:51
fuente por usuario

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