¿Cuál es la forma más rápida de verificar si una copy de trabajo svn tiene cambios?

Quiero agregar información al ensamblado en la compilation si la copy de trabajo está modificada (con exception del set de cambios ignorar-en-confirmar), pero me temo que revisar todos los cambios usando SharpSVN podría ralentizar la compilation en una copy de trabajo de 100 MB con 1000 + files. Por lo tanto, ¿cuál es la forma más rápida de get solo la información de que hay cambios no asignados y / o sin instancia?

Si solo necesitas el resultado: modificado vs no modificado, podrías hacer algo como este código C #:

// using SharpSvn; bool foundModification = false; using (SvnClient client = new SvnClient() { client.Status(@"C:\my\working\copy", delegate(object sender, SvnStatusEventArgs e) { foundModification = true; e.Cancel = true; }); } 

Esto hace + – el mínimo absoluto requerido para encontrar si hay cambios reales en su copy de trabajo y se detiene en el momento en que encontró el primer resultado.

SubWCRev y svnversion usan un enfoque similar, pero hacen algunas comprobaciones adicionales dentro de wc.db (asumiendo Subversion 1.7 o posterior).

Es probable que desee extender un poco al delegado para omitir algunos types de cambios. (El Changelist está disponible como una propiedad en el object SvnStatusEventArgs)

Si solo necesita un "sí / no" para saber si hay modificaciones locales y si tiene instalado TortoiseSVN , puede usar SubWCRev :

SubWCRev es un progtwig de console de Windows que se puede usar para leer el estado de una copy de trabajo de Subversion y opcionalmente realizar una sustitución de palabras key en un file de plantilla.

Pero más a sus requisitos, si lo invoca así:

 subwcrev C:\your\wc\path -n 

Solo busca cambios en la copy de trabajo y devuelve un código de error (es 7 según los documentos) si se encuentra alguno. Por ejemplo, desde un post de Powershell:

 > subwcrev C:\your\wc\path -n SubWCRev: 'C:\your\wc\path' Working copy has local modifications! > $LASTEXITCODE 7 

Usar esto es probablemente más fácil que analizar la salida del svn status .

No he trabajado con SharpSVN. Sin embargo, Subversion es bastante rápido para detectar cambios, especialmente con las versiones 1.7 y posteriores. Tenemos proyectos con 10,000 o más files, y Subversion toma solo unos segundos para encontrar los cambios y listr todos los files. NSvn (que es el nombre de la biblioteca .NET Subversion) debe ser bastante rápido al realizar esta tarea. Si no, intente utilizar la línea de command de Subversion en PowerShell.

Una pregunta curiosa: ¿Por qué tu copy de trabajo es tan grande? ¿Tiene todas las bibliotecas de terceros de .NET registradas allí? Si es así, deberías echarle un vistazo a NuGet . NuGet es la respuesta de .NET a Maven. Maven es un sistema de gestión de dependencies para Java.

En lugar de agregar bibliotecas de Java de terceros a su repository, utiliza el file pom.xml de Maven para describir las dependencies que necesita. Maven luego obtiene estas bibliotecas de varios repositorys Maven de todo el mundo. Los resultados son repositorys de origen más pequeños que son más fáciles de mantener. Copias de trabajo más pequeñas, loggings más rápidos y en lugar de bibliotecas misteriosas de terceros (¿de dónde vino esto? ¿Qué versión es esta?), Tiene una descripción de sus dependencies (estoy usando la versión 1.2 de esta biblioteca que es de este proyecto) .

Si no estás usando NuGet, te sugiero que lo eches un vistazo. Funciona con sus files actuales de proyectos de Microsoft, por lo que no tiene que revisar su sistema de compilation actual.

Creo que el svn status es lo que estás buscando:

 > svn status M auth\auth.c M auth\auth_spnego.c